Sei sulla pagina 1di 23

Aprendizaje automático

Algoritmo FOIL
First Order Induction Logic

Nieves Pedreira Souto


Programación lógica inductiva

Este algoritmo se encuadra dentro de la programación lógica inductiva (ILP).


A diferencia de métodos puramente deductivos o inductivos, permiten tomar como entrada
tanto ejemplos como reglas lógicas que representan el dominio disponible (ambos escritos
en lógica de predicados) .
Es decir, ILP realiza inducción ayudada por el conocimiento del dominio.
Objetivos de la programación lógica inductiva
Encontrar una descripción del problema en términos relacionales que clasifique
correctamente los ejemplos de entrada (que describa todos los ejemplos positivos y ninguno
negativo)
A partir de ejemplos y reglas que describen el dominio (también en términos relacionales)

2 Nieves Pedreira Souto


Algoritmo FOIL

En formato de cláusulas de Horn: regla expresada por unas condiciones y un predicado que
se deduce si las condiciones son ciertas
Salidas
Reglas (definición implícita o intensional):
Un predicado que se deduce si todas las condiciones son ciertas (AND lógico)
Para el mismo predicado puede haber varias reglas (OR lógico)
PredicadoA :- Condición1, Condición2, …
PredicadoA :- Condición3, …

abuelo(X,Y) :- padre(X,Z), padre(Z,Y).


abuelo(X,Y) :- padre(X,Z), madre(Z,Y).
Entradas
Hechos (definición explícita o extensional): expresa todas las instancias ciertas del
concepto.
abuelo(Juan, Pedro). abuelo(Juan, Luis). abuelo(Juan, María).
padre(Juan, Carlos). padre(Juan, Belén). padre(Carlos, Pedro).
madre(Belén, Luis). madre(Belén, María).

3 Nieves Pedreira Souto


Algoritmo FOIL
Busca
Un conjunto de estados:
Cada estado formado por un conjunto de reglas que describen un concepto
Parte de:
Estado inicial:
Se tienen los hechos
No hay reglas
Objetivo:
Reglas que describan todos los ejemplos positivos y ninguno negativo
Dos operadores:
Crear una cláusula de Horn vacía
Añadir una condición (un literal) a una cláusula de Horn: que se cumple o no un
literal (al menos una de las variables que intervienen en él debe de ser ya existente), o
relaciones lógicas entre variables ya existentes o entre variables ya existentes y constantes.
Los literales se unen entre ellos mediante la conjunción (AND lógico) para formar la regla.
Heurística:
En caso de tener que elegir, ganancia de información
Una regla es válida cuando no cubre ningún ejemplo negativo (no un literal sino una regla)
No se añaden más reglas cuando ya se tienen cubiertos todos los ejemplos positivos

4 Nieves Pedreira Souto


Algoritmo FOIL

5 Nieves Pedreira Souto


Algoritmo FOIL
Funcionamiento:
El algoritmo consta de dos bucles: el externo genera reglas, el interno genera literales para
componer cada regla.
Se van generando reglas que describen ejemplos positivos y no describen ejemplos negativos,
hasta cubrir todos los ejemplos positivos.
A cada regla se van añadiendo literales seleccionados heurísticamente, en función del número
de ejemplos positivos y negativos que se cubren al añadir ese literal a la regla, hasta que no
se cubra ninguno negativo.
Para elegir el literal que se añade a cada regla en cada paso, se aplica la fórmula de la
ganancia, a cada uno de los literales posibles:

G(L)=Card(Ek)*[-Iog2(Card(E+)/(Card(E+)+Card(E-))+Iog2(Card(EL+)/(Card(EL+)+Card(EL-))]

G(L)= ganancia al añadir un literal a una cláusula que se está formando


Ek= conjunto de ejemplos positivos que cumplen el literal que se está tratando
E+, E- =conjunto de ejemplos positivos/negativos cubiertos por la clausula hasta el momento
EL+, EL- =conjunto de ejemplos positivos/negativos cubiertos por la clausula si se añade el
literal que se está tratando

6 Nieves Pedreira Souto


Aprendizaje automático

Algoritmo FOIL
First Order Induction Logic

Nieves Pedreira Souto


Algoritmo FOIL

Ejemplo 3

1 2
4

Conectado (A,B): sale flecha de A hasta B


Alcanzable (A,B): partiendo de A siguiendo las fechas, se llega a B

Se parte de:
Hechos (definición explícita o extensional):
Conectado=[(1,2), (2,3), (2,4)]
Alcanzable=[(1,2), (1,3), (1,4), (2,3), (2,4)]
Se va a obtener:
Reglas (definición implícita o intensional):
R1: Alcanzable (A,B) :- Conectado (A,B)
R2: Alcanzable (A,B):- Conectado(A,C), Alcanzable(C,B)

8 Nieves Pedreira Souto


Algoritmo FOIL : EJEMPLO

3 Conceptos:
Conectado(A,B) y Alcanzable(A,B)
1 2 Objetivo:
4 Aprender ALCANZABLE

Es decir, la parte izquierda de la regla va a ser: Alcanzable(A,B) (P=Alcanzable(A,B))


Empieza el algoritmo para el concepto Alcanzable(A,B)
Empieza la primera iteración del bucle externo (para la primera regla) R1= ∅
Ejemplos positivos y negativos (suposición del mundo cerrado) de Alcanzable(A,B):
E+=[(1,2), (1,3), (1,4), (2,3), (2,4)] =>Card(E+)=5
N=E-=[(1,1), (2,1), (2,2), (3,1), (3,2), (3,3), (3,4), (4,1), (4,2), (4,3), (4,4)]=>Card(E-)=11

Posibles literales para la parte derecha de las reglas (más las negaciones de todos ellos):
Conectado(A,B) Conectado(B,A) Conectado(A,C) Conectado(C,A)
Conectado(B,C) Conectado(C,B)
Alcanzable(B,A) Alcanzable(A, C) Alcanzable(C,A) Alcanzable(C,B)
Alcanzable(B,C) A=B A!=B

9 Nieves Pedreira Souto


Algoritmo FOIL
3 Conceptos: Conectado(A,B) y Alcanzable(A,B)
1 Objetivo: Aprender ALCANZABLE(A,B)
2
4 Buscar Regla 1, primer literal. Probando L1=Conectado(A,B)
Vamos a hacer el cálculo para dos literales: a)L1=Conectado(A,B) y b)L2=Conectado(A,C)
Teníamos los siguientes ejemplos de Alcanzable(A,B):
E+=[(1,2), (1,3), (1,4), (2,3), (2,4)] =>Card(E+)=5
E-=[(1,1), (2,1), (2,2), (3,1), (3,2), (3,3), (3,4), (4,1), (4,2), (4,3), (4,4)]=>Card(E-)=11

Empieza la primera iteración del bucle interno (primer literal de la primera regla)
a) Usamos el literal L1. La regla sería: Alcanzable(A,B):- Conectado(A,B)
EL+ =[(1,2), (2,3), (2,4)] =>Card(EL+)=3
EL- = ∅ =>Card(EL-)=0
EK=[(1,2), (2,3), (2,4)] =>Card(EK)= 3 (ejemplos positivos que se cumplen)
Aplicamos la fórmula:
G(L)=Card(Ek)*[-Iog2(Card(E+)/(Card(E+)+Card(E-))+Iog2(Card(EL+)/(Card(EL+)+Card(EL-))]
=3*[-Iog2(5/(5+11)) + Iog2 (3/(3+0))] = 5,034

10 Nieves Pedreira Souto


Aprendizaje automático

Algoritmo FOIL
First Order Induction Logic

Nieves Pedreira Souto


Algoritmo FOIL
3 Conceptos: Conectado(A,B) y Alcanzable(A,B)
1 Objetivo: Aprender ALCANZABLE(A,B)
2
4 Buscar Regla 1, primer literal. Probando L2=Conectado(A,C)
b) Usamos el literal L2. La regla sería: Alcanzable(A,B):- Conectado(A,C)
¿Cómo se calculan los positivos y los negativos?
Ahora las tuplas son de 3 elementos: (A,B,C)
Hay que buscar las opciones en que A y C están conectados: (1, ,2), (2, ,3), (2, ,4)
Y ahora, los ejemplos positivos son los que tienen como parámetro B, un valor que cumpla
que B es alcanzable desde A:
Para A=1, tenemos que, a excepción del 1 todos los demás nodos son alcanzables, por lo
tanto, serían ejemplos positivos: (1,2,2),(1,3,2),(1,4,2)
Para A=2, son alcanzables el 3 y el 4: (2,3,3), (2,4,3), (2,3,4), (2,4,4)

Y ahora, los ejemplos negativos son los que tienen como parámetro B, un valor para el que
B no es alcanzable desde A:
Para A=1, tenemos que, el único que no se puede alcanzar es el propio 1: (1,1,2)
Para A=2, los no alcanzables son el 1 y el 2: (2,1,3), (2,2,3), (2,1,4), (2,2,4)

12 Nieves Pedreira Souto


Algoritmo FOIL
3 Conceptos: Conectado(A,B) y Alcanzable(A,B)
1 Objetivo: Aprender ALCANZABLE(A,B)
2
4 Buscar Regla 1, primer literal. Probando L2=Conectado(A,C)

E+=[(1,2), (1,3), (1,4), (2,3), (2,4)] =>Card(E+)=5


E-=[(1,1), (2,1), (2,2), (3,1), (3,2), (3,3), (3,4), (4,1), (4,2), (4,3), (4,4)]=>Card(E-)=11

Seguimos con b) Usamos el literal L2. La regla sería: Alcanzable(A,B):- Conectado(A,C)


EL+ =[(1,2,2),(1,3,2),(1,4,2),(2,3,3),(2,3,4),(2,4,3),(2,4,4)]=>Card(EL+)=7
(1,2) (1,3) (1,4) (2,3) (2,4)
EL- = [(1,1,2),(2,1,3),(2,1,4),(2,2,3),(2,2,4)] =>Card(EL-)=5
(1,1) (2,1) (2,2)
EK = E+ => Card(EK) = 5 (ejemplos positivos que se cumplen)

Aplicamos la fórmula:
G(L)=Card(Ek)*[-Iog2(Card(E+)/(Card(E+)+Card(E-))+Iog2(Card(EL+)/(Card(EL+)+Card(EL-))]
=5*[-Iog2(5/(5+11)) + Iog2 (7/(7+5)] = 4,5

13 Nieves Pedreira Souto


Algoritmo FOIL
3 Conceptos: Conectado(A,B) y Alcanzable(A,B)
1 Objetivo: Aprender ALCANZABLE(A,B)
2
4 Buscar Regla 1, primer literal. Cálculo literal máx. ganancia

Tenemos el cálculo para dos literales: L1=Conectado(A,B) y L2=Conectado(A,C)


Para L1: G(L)= 5.034 y para L2: G(L)= 5
Habría que hacer el cálculo para todos los literales, y se elije el de mayor ganancia.
Suponemos que ya lo hemos hecho y que nos sale L1, entonces tendríamos el primer literal
a añadir: Conectado(A,B)
Se actualiza N, eliminando los ejemplos negativos que no se deducen de ese literal:
N= E- = [(1,1), (2,1), (2,2), (3,1), (3,2), (3,3), (3,4), (4,1), (4,2), (4,3), (4,4)]

Acaba la primera iteración del bucle interno (primer literal de la primera regla)
Esta regla no cubre ejemplos negativos, por lo que no se le añaden más literales.
Ya tenemos la regla R1: Alcanzable(A,B):-Conectado(A,B)
Se actualiza E + eliminando los ejemplos positivos que se pueden deducir con R1
E+ =[(1,2), (1,3), (1,4), (2,3), (2,4)]
Acaba el bucle interno (primera regla)
Como la regla no cubre todos los ejemplos positivos, hay que seguir buscando reglas.
14 Nieves Pedreira Souto
Aprendizaje automático

Algoritmo FOIL
First Order Induction Logic

Nieves Pedreira Souto


Algoritmo FOIL
3 Conceptos: Conectado(A,B) y Alcanzable(A,B)
1 Objetivo: Aprender ALCANZABLE(A,B)
2
4 Buscar Regla 2

Empieza la segunda iteración del bucle externo (segunda regla) R2= ∅


Ahora se trabaja con los ejemplos positivos restantes (que no cubre R1) :
E+ =[(1,2), (1,3), (1,4), (2,3), (2,4)] =>Card(E+)=2
Los ejemplos negativos al empezar cada vuelta del bucle exterior son los iniciales:
E- =[(1,1), (2,1), (2,2), (3,1), (3,2), (3,3), (3,4), (4,1), (4,2), (4,3), (4,4)] =>Card(E-)=11

Empieza la primera iteración del bucle interno (primer literal de la segunda regla)
Se vuelve a realizar el cálculo de la ganancia para todos los literales
Para el ejemplo lo calculamos otra vez para Conectado (A,C) (*no tiene sentido aquí
hacerlo para Conectado(A,B) ya que ese literal no cubre ningún ejemplo positivo de los que
nos quedan*)
La regla sería: Alcanzable(A,B):- Conectado(A,C)

16 Nieves Pedreira Souto


Algoritmo FOIL
3 Conceptos: Conectado(A,B) y Alcanzable(A,B)
1 Objetivo: Aprender ALCANZABLE(A,B)
2
4 Buscar Regla 2, primer literal. Probando L3=Conectado(A,C)

La regla sería: Alcanzable(A,B):- Conectado(A,C)


Hay que volver a hacer el cálculo, porque ahora se trabaja sólo con los ejemplos positivos
no cubiertos por R1
E+ =[(1,3), (1,4)] =>Card(E+)=2
E- =[(1,1), (2,1), (2,2), (3,1), (3,2), (3,3), (3,4), (4,1), (4,2), (4,3), (4,4)] =>Card(E-)=11

Hay que buscar las opciones en que A y C están conectados: (1, ,2), (2, ,3), (2, ,4)
Y ahora, los ejemplos positivos son los que tienen como parámetro B, un valor que se
encuentre entre los ejemplos positivos que quedan:
Para A=1, tenemos 3 y 4, por lo tanto, serían ejemplos positivos: (1,3,2),(1,4,2)
Para A=2, no hay ejemplos positivos por cubrir
Los ejemplos negativos son los que tienen como parámetro B, un valor para el que (A,B)
está en E-:
Para A=1, tenemos sólo el 1, serían ejemplos negativos: (1,1,2)
Para A=2, tenemos 1 y 2: (2,1,3), (2,2,3), (2,1,4), (2,2,4)
17 Nieves Pedreira Souto
Algoritmo FOIL
3 Conceptos: Conectado(A,B) y Alcanzable(A,B)
1 Objetivo: Aprender ALCANZABLE(A,B)
2
4 Buscar Regla 2, primer literal. Probando L3=Conectado(A,C)

E+ =[(1,3), (1,4)] =>Card(E+)=2


E- =[(1,1), (2,1), (2,2), (3,1), (3,2), (3,3), (3,4), (4,1), (4,2), (4,3), (4,4)] =>Card(E-)=11

EL+ =[(1,3,2), (1,4,2)] =>Card(EL+)= 2


(1,3) (1,4)
EL- = [(1,1,2),(2,1,3), (2,1,4), (2,2,3), (2,2,4)] =>Card(EL-)=5
(1,1) (2,1) (2,2)

EK = E+ => Card(EK) = 2 (ejemplos positivos que se cumplen)

Aplicamos la fórmula:
G(L)=Card(Ek)*[-Iog2(Card(E+)/(Card(E+)+Card(E-))+Iog2(Card(EL+)/(Card(EL+)+Card(EL-))]
=2*[-Iog2(2/(2+11)) + Iog2 (2/(2+5)] = 1,788

18 Nieves Pedreira Souto


Algoritmo FOIL
3 Conceptos: Conectado(A,B) y Alcanzable(A,B)
1 Objetivo: Aprender ALCANZABLE(A,B)
2
4 Buscar Regla 2, primer literal. Probando L3=Conectado(A,C)

Como para R1, habría que hacer el cálculo para todos los literales, y se elije el de mayor
ganancia.
Suponemos que ya lo hemos hecho y que nos sale L3, entonces tendríamos el primer literal
a añadir al cuerpo de la segunda regla: Alcanzable(A,B):- Conectado(A,C)
Se actualiza N, eliminando los ejemplos negativos que no se deducen de ese literal:
N = E- =[(1,1), (2,1), (2,2), (3,1), (3,2), (3,3), (3,4), (4,1), (4,2), (4,3), (4,4)]

Acaba la primera iteración del bucle interno (primer literal de la segunda regla)
Esta regla cubre ejemplos negativos, por lo que hay que añadir más literales.
Empieza la segunda iteración del bucle interno (segundo literal de la segunda regla)
De momento la regla R2: Alcanzable(A,B):-Conectado(A,C)
Se vuelve a realizar el cálculo de la ganancia para todos los literales que quedan.
Hacemos el ejemplo con el literal Alcanzable(C,B)

19 Nieves Pedreira Souto


Aprendizaje automático

Algoritmo FOIL
First Order Induction Logic

Nieves Pedreira Souto


Algoritmo FOIL
3 Conceptos: Conectado(A,B) y Alcanzable(A,B)
1 Objetivo: Aprender ALCANZABLE(A,B)
2
4 Buscar Regla 2, segundo literal. Probando L4=Alcanzable(C,B)
La regla sería: Alcanzable(A,B):- Conectado(A,C), Alcanzable(C,B)
Ejemplos cubiertos por el primer literal:
E+ =[(1,3,2), (1,4,2)] =>Card(E+)= 2
E- = [(1,1,2),(2,1,3), (2,1,4), (2,2,3), (2,2,4)] =>Card(E-)=5
Para calcular los ejemplos cubiertos por la conjunción de los dos literales:
Hay que buscar que esté conectado A con C y que desde C se alcanza B: (1,3,2), (1,4,2)
Y ahora, los ejemplos positivos son los que tienen como parámetros A y B, valores que se
encuentre entre los ejemplos que quedan en E+: todos. Por tanto ningún ejemplo negativo.
EL+ =[(1,3,2), (1,4,2)] =>Card(EL+)= 2
EL- = ∅ =>Card(EL-)=0
EK = E+ => Card(EK) = 2 (ejemplos positivos que se cumplen)
Aplicamos la fórmula:
G(L)=Card(Ek)*[-Iog2(Card(E+)/(Card(E+)+Card(E-))+Iog2(Card(EL+)/(Card(EL+)+Card(EL-))]
=2*[-log2(2/(2+5)) + log2 (2/(2+0)] = 1,614

21 Nieves Pedreira Souto


Algoritmo FOIL
3 Conceptos: Conectado(A,B) y Alcanzable(A,B)
1 Objetivo: Aprender ALCANZABLE(A,B)
2
4 Buscar Regla 2, segundo literal. Probando L4=Alcanzable(C,B)
Como siempre, habría que hacer el cálculo para todos los literales, y se elije el de mayor
ganancia.
Suponemos que ya lo hemos hecho y que sale L4. Entonces tendríamos el segundo literal a
añadir al cuerpo de la segunda regla: Alcanzable(A,B):- Conectado(A,C), Alcanzable(C,B)
Se actualiza N, eliminando los ejemplos negativos que no se deducen de ese literal (todos,
ya que no se deduce ninguno:
N = E- =[(1,1), (2,1), (2,2),
Acaba la segunda iteración del bucle interno (segundo literal de la segunda regla)
Esta regla no cubre ejemplos negativos (N= ∅), por lo que no se le añaden más literales.
Acaba el bucle interno (segunda regla)
Ya tenemos la regla R2: Alcanzable(A,B):-Conectado(A,C), Alcanzable(C,B)
Se actualiza E+ eliminando los ejemplos positivos que se pueden deducir con R2
E+ =[(1,3), (1,4)]
Acaba la segunda iteración del bucle externo (segunda regla)
Como ya no quedan ejemplos positivos por cubrir (E+=∅), no hay que buscar más reglas.
Acaba el bucle externo
22 Nieves Pedreira Souto
Algoritmo FOIL

3 Conceptos: Conectado(A,B) y Alcanzable(A,B)


Objetivo: Aprender ALCANZABLE
1 2
4

Finalmente se han obtenido dos reglas:

Alcanzable(A,B):-Conectado(A,B)

Alcanzable(A,B):-Conectado(A,C), Alcanzable(C,B)

23 Nieves Pedreira Souto

Potrebbero piacerti anche