Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Algoritmo FOIL
First Order Induction Logic
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, …
G(L)=Card(Ek)*[-Iog2(Card(E+)/(Card(E+)+Card(E-))+Iog2(Card(EL+)/(Card(EL+)+Card(EL-))]
Algoritmo FOIL
First Order Induction Logic
Ejemplo 3
1 2
4
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)
3 Conceptos:
Conectado(A,B) y Alcanzable(A,B)
1 2 Objetivo:
4 Aprender ALCANZABLE
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
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
Algoritmo FOIL
First Order Induction Logic
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)
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
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
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)
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)
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
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)
Algoritmo FOIL
First Order Induction Logic
Alcanzable(A,B):-Conectado(A,B)
Alcanzable(A,B):-Conectado(A,C), Alcanzable(C,B)