Está en la página 1de 2

Algoritmo FOIL

La programación lógica inductiva amplía las posibilidades de los sistemas puramente inductivos, utilizando para la
representación lógica de predicados (en vez de proposicional), lo que le permite recibir de entrada tanto ejemplos,
como teoría del conocimiento del dominio expresada en forma de reglas lógicas. Normalmente, se usa el lenguaje
PROLOG para describir tanto las entradas como las salidas

Conceptos básicos

Predicado: expresión lógica que describe una propieda en la forma propiedad(id-1, id-2 ... id-n)
Cláusula de Horn: Regla con un único predicado como antecedente que se deduce de un predicado o
conjunción de varios predicados que funcionan de condiciones, en la forma `antecedente :- condicion-1,
condicion-2, ..., condicion-n
Regla de Horn: Conjunto de cláusulas de Horn que deducen el mismo predicado antecedente, funcionando
como una disyunción de cláusulas.
Definición intensional (implícita) de un concepto: Expresada con reglas de Horn.
Definición extensional (explícita): Expresada con hechos (instanciaciones posibles).

Entradas y Salidas

Entradas: Conjunto de ejemplos y conocimiento del dominio representados simbólicamente mediante lógica
de predicados.
Tratamiento de las entradas: Un solo paso.
Preprocesamiento: Si no se proporcionan contraejemplos, se generan aplicando la suposición del mundo
cerrado (todo lo que no está especificado como verdad es falso).
Fuente de las entradas: Externa.
Representación de las salidas: Una regla de Horn en el mismo lenguaje de la teoría del dominio.

Ruido

Entradas: Puede existir ruido en las entradas si relajamos algunas restricciones como que una cláusula pueda
describir algún ejemplo negativo, o que la condición de parada no sea el recubrimiento de todos los ejemplos
positivos sino un umbral mínimo en la ganancia.
Estructura: Como ocurre en los algoritmos inductivos, es sensible a eliminar parte de los elementos
aprendidos, pero aún así seguirá clasificando un subconjunto de instancias correctamente.

Complejidad

Espacial: El ocupado por el conjunto de cláusulas aprendidas, que en el peor de los casos será el de una por
cada ejemplo positivo.
Temporal: Cada operación de añadir un literal, hace necesario generar y evaluar todas las alternativas
posibles, lo que implica una ramificación de todas estas alternativas en función de los predicados de la teoría
del dominio, las variables de la cláusula que se está construyendo y , finalmente, el número de argumentos de
los predicados, lo que nos lleva a un coste exponencial en función del número de argumentos de los
predicados
Fiabilidad: El algoritmo obtiene una descripción correcta del concepto meta según los ejemplos de entrada.

Control de la tarea aprendida

Crítica/valoración: No se realiza.
Utilización: Para clasificar un nuevo ejemplo, se aplica realizando una pregunta a las cláusulas obtenidas
acerca del ejemplo.

Dependencia del conocimiento del dominio

Depende de la teoría del dominio suministrada, pero esta dependencia se aligera gracias a la existenciade un
conjunto de ejemplos como entrada.

Tarea
Partiendo de un conjunto vacío de reglas de Horn, el algoritmo va operando mediante la creación de reglas vacías y
el añadido de nuevos literales a las cláusulas, hasta que la regla describa todos los ejemplos positivos y ninguno
negativo (o mediante un umbral mínimo en la ganancia).
El procedimiento es similar al de AQ en cuanto a que se van formando reglas que cubran los más positivos posibles
y ningún negativo, y se van descartando los positivos cubiertos por las reglas previas en cada iteración externa del
algoritmo, mientras que en el bucle interno, se van añadiendo literales a la cláusula heurísticamente hasta que no
quedan ejemplos negativos para esa cláusula.

Partiendo de una regla inicial vacía y de los conjuntos de ejemplos E+ y E-:

1. Establecer el conjunto de ejemplos negativos N (= E- ) para la búsqueda interior y crear un cuerpo de cláusula
vacío.
2. Hasta que no se cubra a ningún ejemplo negativo:
1. Generar todos los posibles literales:
Con todos los predicados disponibles, instanciados con al menos una variable que haya aparecido
antes en la cláusula, y con sus negaciones.
Con la igualdad y la desigualdad entre dos variables (en este caso deben haber aparecido las dos
variables de la igualdad) o entre variable y una constante del mismo tipo (especificada por Foil).
2. Calcular la ganancia de cada alternativa. Para obtener los miembros de la fórmula:
n+ = |E+|
n- = |E-|
n+L = |E+L| Siendo este conjunto el resultado de especificar el conjunto E+ con las combinaciones
de valores para las variables que hacen cierto el nuevo literal.
n-L = |E-L| Siendo este conjunto el resultado de especificar el conjunto E- con las combinaciones
de valores para las variables que hacen cierto el nuevo literal.
k = |Ek| siendo este conjunto el de los ejemplos de E+ que quedan cubiertos por los de E+L.

3. Añadir a la cláusula el literal L más adecuado y eliminar de E- los ejemplos presentes en E-L .
4. Comprobar:
Si E- - E-L = Ø, finaliza la búsqueda interna, la cláusula generada se añade a la regla, y se eliminan
los ejemplos positivos cubiertos: E+ = E+ - Ek
En caso contrario, se vuelve a iterar en la búsqueda interna (punto 2).
3. Se vuelve a iterar al punto 1 hasta que no haya ejemplos positivos pendientes de cubrir.

Bias

Viene dado por

La función de ganancia, que es la heurística de búsqueda, que prefiere a los literales que separen mejor los
ejemplos de los contraejemplos.
Las restricciones del lenguaje: que no se permitan funciones, constantes, o que los literales nuevos deban
tener al menos una variable utilizada anteriormente.
La asunción de un mundo cerrado a la hora de generar los contraejemplos.

También podría gustarte