Sie sind auf Seite 1von 20

Aprendizaje automtico

Algoritmo FOIL
First Order Induction Logic

Nieves Pedreira Souto

Programacin lgica inductiva


Este algoritmo se encuadra dentro de la programacin lgica inductiva (ILP).
A diferencia de mtodos puramente deductivos o inductivos, permiten tomar como entrada
tanto ejemplos como reglas lgicas que representan el dominio disponible (ambos escritos
en lgica de predicados) .
Es decir, ILP realiza induccin ayudada por el conocimiento del dominio.
Objetivos de la programacin lgica inductiva
Encontrar una descripcin del problema en trminos 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 (tambin en trminos relacionales)

Nieves Pedreira Souto

Algoritmo FOIL
En formato de clusulas de Horn: regla expresada por unas condiciones y un predicado que
se deduce si las condiciones son ciertas
Salidas
Reglas (definicin implcita o intensional):
Un predicado que se deduce si todas las condiciones son ciertas (AND lgico)
Para el mismo predicado puede haber varias reglas (OR lgico)
PredicadoA :- Condicin1, Condicin2,
PredicadoA :- Condicin3,
abuelo(X,Y) :- padre(X,Z), padre(Z,Y).
abuelo(X,Y) :- padre(X,Z), madre(Z,Y).
Entradas
Hechos (definicin explcita o extensional): expresa todas las instancias ciertas del
concepto.
abuelo(Juan, Pedro). abuelo(Juan, Luis). abuelo(Juan, Mara).
padre(Juan, Carlos). padre(Juan, Beln). padre(Carlos, Pedro).
madre(Beln, Luis). madre(Beln, Mara).

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 clusula de Horn vaca
Aadir una condicin (un literal) a una clusula 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 lgicas entre variables ya existentes o entre variables ya existentes y constantes.
Los literales se unen entre ellos mediante la conjuncin (AND lgico) para formar la regla.
Heurstica:
En caso de tener que elegir, ganancia de informacin
Una regla es vlida cuando no cubre ningn ejemplo negativo (no un literal sino una regla)
No se aaden ms reglas cuando ya se tienen cubiertos todos los ejemplos positivos

Nieves Pedreira Souto

Algoritmo FOIL

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 aadiendo literales seleccionados heursticamente, en funcin del
nmero de ejemplos positivos y negativos que se cubren al aadir ese literal a la regla,
hasta que no se cubra ninguno negativo.
Para elegir el literal que se aade a cada regla en cada paso, se aplica la frmula de la
ganancia, a cada uno de los literales posibles:
G(L)=k*[-Iog2(n+/(n++n-)) + Iog2 (nL+/(nL+ +nL-)]
G(L)= ganancia al aadir un literal a una clusula que se est formando
K= nmero de ejemplos positivos que cumplen el literal que se est tratando
n+, n- =nmero de ejemplos positivos/negativos cubiertos por la clausula hasta el momento
nL+, nL- =nmero de ejemplos positivos/negativos cubiertos por la clausula si se aade el
literal que se est tratando

Nieves Pedreira Souto

Aprendizaje automtico
Algoritmo FOIL
First Order Induction Logic

Nieves Pedreira Souto

Algoritmo FOIL
3

Ejemplo

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 (definicin explcita 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 (definicin implcita o intensional):
R1: Alcanzable (A,B) :- Conectado (A,B)
R2: Alcanzable (A,B):- Conectado(A,C), Alcanzable(C,B)

Nieves Pedreira Souto

Algoritmo FOIL : EJEMPLO


Conceptos:

3
1

Conectado(A,B) y Alcanzable(A,B)
Objetivo:

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 iteracin del bucle externo (para la primera regla) R1=
Ejemplos positivos y negativos (suposicin del mundo cerrado) de Alcanzable(A,B):
E0+=[(1,2), (1,3), (1,4), (2,3), (2,4)] =>Card(E0+)=5
N=E0-=[(1,1), (2,1), (2,2), (3,1), (3,2), (3,3), (3,4), (4,1), (4,2), (4,3), (4,4)]=>Card(E0-)=11
Posibles literales para la parte derecha de las reglas (ms las negaciones de todos ellos):
Conectado(A,B)

Conectado(B,A)

Conectado(B,C)

Conectado(C,B)

Alcanzable(B,A)

Alcanzable(A, C)

Alcanzable(B,C)

A=B

Conectado(A,C)

Conectado(C,A)

Alcanzable(C,A)

Alcanzable(C,B)

A!=B

Nieves Pedreira Souto

Algoritmo FOIL
3 Conceptos: Conectado(A,B) y Alcanzable(A,B)
1

Objetivo: Aprender ALCANZABLE(A,B)

4 Buscar Regla 1, primer literal. Probando L1=Conectado(A,B)

Vamos a hacer el clculo para dos literales: a)L1=Conectado(A,B) y b)L2=Conectado(A,C)


Tenamos los siguientes ejemplos de Alcanzable(A,B):
E0+=[(1,2), (1,3), (1,4), (2,3), (2,4)] =>Card(E0+)=5
E0-=[(1,1), (2,1), (2,2), (3,1), (3,2), (3,3), (3,4), (4,1), (4,2), (4,3), (4,4)]=>Card(E0-)=11
Empieza la primera iteracin del bucle interno (primer literal de la primera regla)
a) Usamos el literal L1. La regla sera: Alcanzable(A,B):- Conectado(A,B)
EL1+ =[(1,2), (2,3), (2,4)]

=>Card(EL1+)=3

=> nL1+ =3

EL1- =

=>Card(EL1-)=0

=> nL1- =0

K = 3 (ejemplos positivos de alcanzable(A,B) que se cumplen)


Aplicamos la frmula: G(L1)=k*[-Iog2(n+/(n++n-)) + Iog2 (nL+/(nL+ +nL-)] =
=3*[-Iog2(5/(5+11)) + Iog2 (3/(3+0))] = 5,034

10

Nieves Pedreira Souto

Algoritmo FOIL
3 Conceptos: Conectado(A,B) y Alcanzable(A,B)
1

Objetivo: Aprender ALCANZABLE(A,B)

4 Buscar Regla 1, primer literal. Probando L2=Conectado(A,C)

b) Usamos el literal L2. La regla sera: Alcanzable(A,B):- Conectado(A,C)


Cmo 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 estn conectados: (1,

,2), (2,

,3), (2,

,4)

Y ahora, los ejemplos positivos son los que tienen como parmetro B, un valor que cumpla
que B es alcanzable desde A:
Para A=1, tenemos que, a excepcin del 1 todos los dems nodos son alcanzables, por lo
tanto, seran 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 parmetro B, un valor para el que
B no es alcanzable desde A (que est en E0):
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)

11

Nieves Pedreira Souto

Algoritmo FOIL
3 Conceptos: Conectado(A,B) y Alcanzable(A,B)
1

Objetivo: Aprender ALCANZABLE(A,B)

4 Buscar Regla 1, primer literal. Probando L2=Conectado(A,C)

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


E0-=[(1,1), (2,1), (2,2), (3,1), (3,2), (3,3), (3,4), (4,1), (4,2), (4,3), (4,4)]=>Card(E0-)=11
Seguimos con b) Usamos el literal L2. La regla sera: Alcanzable(A,B):- Conectado(A,C)
EL2+ =[(1,2,2),(1,3,2),(1,4,2),(2,3,3),(2,3,4),(2,4,3),(2,4,4)]=>Card(EL2+)=7=> nL2+ =7
(1,2)

(1,3)

(1,4)

(2,3)

EL2- = [(1,1,2),(2,1,3), (2,1,4),(2,2,3),(2,2,4)]


(1,1)

(2,1)

(2,4)
=>Card(EL2-)=5=>nL2- =5

(2,2)

K = 5 (ejemplos positivos de alcanzable(A,B) que se cumplen)


Aplicamos la frmula: G(L2)=k*[-Iog2(n+/(n++n-)) + Iog2 (nL+/(nL+ +nL-)] =
=5*[-Iog2(5/(5+11)) + Iog2 (7/(7+5)] = 4,5

12

Nieves Pedreira Souto

Algoritmo FOIL
3 Conceptos: Conectado(A,B) y Alcanzable(A,B)
1

Objetivo: Aprender ALCANZABLE(A,B)

4 Buscar Regla 1, primer literal. Clculo literal mx. ganancia

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


G(L1)= 5.034 y G(L2)= 5
Habra que hacer el clculo para todos los literales, y se elije el de mayor ganancia.
Suponemos que ya lo hemos hecho y que nos sale L1, entonces tendramos el primer literal
a aadir: Conectado(A,B)
Se actualiza N, eliminando los ejemplos negativos que no se deducen de ese literal:
N=[(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 iteracin del bucle interno (primer literal de la primera regla)
Esta regla no cubre ejemplos negativos (N= ), por lo que no se le aaden ms 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
ER1+ =[(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.

13

Nieves Pedreira Souto

Algoritmo FOIL
3 Conceptos: Conectado(A,B) y Alcanzable(A,B)
1

Objetivo: Aprender ALCANZABLE(A,B)

4 Buscar Regla 2

Empieza la segunda iteracin del bucle externo (segunda regla) R2=


Ahora se trabaja con los ejemplos positivos restantes (que no cubre R1) :
ER1+ =[(1,2), (1,3), (1,4), (2,3), (2,4)] =>Card(ER1+)=2
Los ejemplos negativos al empezar cada vuelta del bucle exterior son los iniciales:
N=[(1,1), (2,1), (2,2), (3,1), (3,2), (3,3), (3,4), (4,1), (4,2), (4,3), (4,4)] =>Card(E0-)=11
Empieza la primera iteracin del bucle interno (primer literal de la segunda regla)
Se vuelve a realizar el clculo 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 ningn ejemplo positivo de los que
nos quedan*)
La regla sera: Alcanzable(A,B):- Conectado(A,C)

14

Nieves Pedreira Souto

Algoritmo FOIL
3
1

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


Objetivo: Aprender ALCANZABLE(A,B)

Buscar Regla 2, primer literal. Probando L3=Conectado(A,C)

La regla sera: Alcanzable(A,B):- Conectado(A,C)


Hay que volver a hacer el clculo, porque ahora se trabaja slo con los ejemplos positivos
no cubiertos por R1
ER1+ =[(1,3), (1,4)] =>Card(ER1+)=2
E0- =[(1,1), (2,1), (2,2), (3,1), (3,2), (3,3), (3,4), (4,1), (4,2), (4,3), (4,4)] =>Card(E0-)=11
Hay que buscar las opciones en que A y C estn conectados: (1,

,2), (2,

,3), (2,

,4)

Y ahora, los ejemplos positivos son los que tienen como parmetro B, un valor que se
encuentre entre los ejemplos positivos que quedan:
Para A=1, tenemos 3 y 4, por lo tanto, seran 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 parmetro B, un valor para el que (A,B)
est en E0:
Para A=1, tenemos slo el 1, seran ejemplos negativos: (1,1,2)
Para A=2, tenemos 1 y 2: (2,1,3), (2,2,3), (2,1,4), (2,2,4)

15

Nieves Pedreira Souto

Algoritmo FOIL
3
1

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


Objetivo: Aprender ALCANZABLE(A,B)

Buscar Regla 2, primer literal. Probando L3=Conectado(A,C)

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


E0- =[(1,1), (2,1), (2,2), (3,1), (3,2), (3,3), (3,4), (4,1), (4,2), (4,3), (4,4)] =>Card(E0-)=11
EL3+ =[(1,3,2), (1,4,2)] =>Card(E3+)= 2 => nL3+ =2
(1,3)

(1,4)

EL3- = [(1,1,2),(2,1,3), (2,1,4), (2,2,3), (2,2,4)]


(1,1)

(2,1)

=>Card(E3-)=5

=> nL3- =5

(2,2)

K = 2 (ejemplos positivos que se cumplen)


Aplicamos la frmula: G(L3)=k*[-Iog2(n+/(n++n-)) + Iog2 (nL+/(nL+ +nL-)] =
=2*[-Iog2(2/(2+11)) + Iog2 (2/(2+5)] = 1,788

16

Nieves Pedreira Souto

Algoritmo FOIL

3
1

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


Objetivo: Aprender ALCANZABLE(A,B)

Buscar Regla 2, primer literal. Probando L3=Conectado(A,C)

Como para R1, habra que hacer el clculo para todos los literales, y se elije el de mayor
ganancia.
Suponemos que ya lo hemos hecho y que nos sale L3, entonces tendramos el primer literal
a aadir 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 =[(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 iteracin del bucle interno (primer literal de la segunda regla)
Esta regla cubre ejemplos negativos, por lo que hay que aadir ms literales.
Empieza la segunda iteracin 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 clculo de la ganancia para todos los literales que quedan.
Hacemos el ejemplo con el literal Alcanzable(C,B)

17

Nieves Pedreira Souto

Algoritmo FOIL

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


1

Objetivo: Aprender ALCANZABLE(A,B)

4 Buscar Regla 2, segundo literal. Probando L4=Alcanzable(C,B)

La regla sera: Alcanzable(A,B):- Conectado(A,C), Alcanzable(C,B)


Ejemplos cubiertos por el primer literal:
EL3+ =[(1,3,2), (1,4,2)]

=>Card(E3+)= 2

=> n3+ =2

EL3- = [(1,1,2),(2,1,3), (2,1,4), (2,2,3), (2,2,4)]

=>Card(E3-)=5

=> n3- =5

Para calcular los ejemplos cubiertos por la conjuncin 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 parmetros A y B, valores que se
encuentre entre los ejemplos que quedan en E+: todos. Por tanto ningn ejemplo negativo.
EL4+ =[(1,3,2), (1,4,2)]

=>Card(EL4+)= 2

=> nL4+ =2

=>Card(EL4-)=0

=> nL4- =0

(1,3) (1,4)
E4- =
K = 2 (ejemplos positivos que se cumplen)

Aplicamos la frmula: G(L4)=k*[-log2(n+/(n++n-)) + log2 (nL+/(nL+ +nL-)] =


=2*[-log2(2/(2+5)) + log2 (2/(2+0)] = 1,614

18

Nieves Pedreira Souto

Algoritmo FOIL

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


1

Objetivo: Aprender ALCANZABLE(A,B)

4 Buscar Regla 2, segundo literal. Probando L4=Alcanzable(C,B)

Como siempre, habra que hacer el clculo para todos los literales, y se elije el de mayor
ganancia.
Suponemos que ya lo hemos hecho y que sale L4. Entonces tendramos el segundo literal a
aadir 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 =[(1,1), (2,1), (2,2),
Acaba la segunda iteracin del bucle interno (segundo literal de la segunda regla)
Esta regla no cubre ejemplos negativos (N= ), por lo que no se le aaden ms 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
ER2+ =[(1,3), (1,4)]
Acaba la segunda iteracin del bucle externo (segunda regla)
Como ya no quedan ejemplos positivos por cubrir (ER2+=), no hay que buscar ms reglas.
Acaba el bucle externo

19

Nieves Pedreira Souto

Algoritmo FOIL

3
1

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


Objetivo: Aprender ALCANZABLE

Finalmente se han obtenido dos reglas:


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

20

Nieves Pedreira Souto

Das könnte Ihnen auch gefallen