You are on page 1of 232

Aprendizaje Computacional

Eduardo Morales y Jesús González


Objetivo General

La capacidad de aprender se considera como una de los atributos distin-


tivos del ser humano y ha sido una de las principales áreas de investigación
de la Inteligencia Artificial desde sus inicios. En los últimos años se ha visto
un crecimiento acelerado en la capacidad de generación y almacenamiento de
información, debido a la creciente automatización de procesos y los avances
en las capacidades de almacenamiento de información. En gran parte debido
a esto, se han desarrollado una gran cantidad de herramientas y técnicas que
tienen que ver con el análisis de información. En este aspecto, el desarrollo en
el área de aprendizaje ha sido fundamental. El área de aprendizaje en general
trata de construir programas que mejoren su desempeño automáticamente
con la experiencia.

Los objetivos del curso son: dar un panoráma general de lo que es apren-
dizaje computacional y conocer a detalle las técnicas más importantes em-
pleadas.

Temario

Los temas que se van a ver en clase son:

1. Introducción a aprendizaje computacional

2. Técnicas principales:

• Árboles de decisión y regresión


• Reglas de clasificación
• Reglas de asociación
• Programación lógica inductiva
• Aprendizaje basado en grafos
• Aprendizaje bayesiano y Redes bayesianas
• Aprendizaje basado en instancias y casos
• Clustering

i
• Aprendizaje por refuerzo

3. Evaluación de algoritmos (intercalado con las técnicas)

4. Conclusiones

Existen muchos otros temas de aprendizaje. Algunos de estos se ven en


el segundo curso de aprendizaje (ver página) como:

• Aprendizaje basado en Kernels y Support Vector Machines

• Ensambles de clasificadores

• Selección de atributos

• Aprendizaje semi-supervisado

Otros temas se cubren en otros cursos:

• Algoritmos genéticos

• Redes neuronales

Existen temas que se pueden incluir en el segundo curso de aprendizaje


como son:

• Colonias de hormigas (ant colony optimization o ACO) y de enjambres


(particle swarm optimization o PSO)

• Modelos lineales de regresión, Bayesianos.

• Modelos lineales para clasificación (funciones discriminantes, modelos


generativos, modelos discriminativos, regresión logı́stica)

• Modelos basados en muestreo

• Procesos Gaussianos

• Análisis de componentes principales

ii
• Modelos para secuencias

Evaluación

La evaluación del curso se hará en base a dos examenes y un proyecto


final (cada uno contando 1/3 parte de la calificación final).

Lista de posibles Proyectos:

La siguiente es una lista tentativa (no exhaustiva) de posibles proyectos


del curso.

• Analizar como afecta el ruido a las técnicas de muestreo (sobre y sub-


muestreo).

• Algoritmo de selección de atributos favoreciendo la clase minoritaria

• Aprendizaje por refuerzo distribuido

• Aprendizaje de acciones continuas (en un simulador de vuelo o en


robótica móvil)

• Aprendizaje de reglas por imitación (aplicado a ajedrez o simulador de


vuelo o robot móvil)

• Aprendizaje semi-supervisado (evaluar asignación de pesos diferentes a


las instancias no clasificadas).

• Crear nuevos atributos (constructive induction)

• Reimplementar algún algoritmo reciente de las técnicas vistas en clase


con alguna mejora.

• Aprendizaje jerárquico multiclase

• Aprendizaje en secuencias

iii
Referencias

1. T. Mitchell (1997) Machine Learning, McGraw–Hill.


2. I.H. Witten, E. Frank (2005) Data Mining: practical machine learn-
ing tools and techniques 2nd. Edition. Morgan Kaufmann
3. J. Han, M. Kamber (2001) Data Mining: concepts and techniques,
Morgan Kaufmann.
4. D. Hand, H. Mannila, P. Smyth (2001). Principales of Data Mining,
MIT Press
5. R. Michalski, I. Bratko, M. Kubat (1998) Machine Learning and
data mining: methods and applications, John Wiley and Sons.
6. B. Schölfopf, A. Smola (2002). Learning with Kernels: Suport Vec-
tor Machines, Regularizartion, Optimization, and Beyond, MIT
Press.
7. R. Sutton, A. Barto (1998). Reinforcement Learning: An Introduc-
tion. MIT Press.
8. N. Lavrac, S. Džeroski (1994). Inductive Logic Programming: Tech-
niques and Applications. Ellis Horwood.
9. T. Hastie, R. Tibshirani, J. Friedman (2001). The Elements of
Statistical Learning: Data Mining, Inference, and Prediction.
Springer-Verlag.
10. C. Bishop (2006). Pattern Recognition and Machine Learning.
Springer.

iv
Capı́tulo 1

Aprendizaje

Posiblemente la caracterı́stica más distintiva de la inteligencia humana es el


aprendizaje. Desde el comienzo de las computadoras se cuestionó si serı́an
capaces de aprender.

El darles la capacidad de aprendizaje a las máquinas abre una amplia


gama de nuevas aplicaciones. El entender también como pueden aprender
las máquinas nos puede ayudar a entender las capacidades y limitaciones
humanas de aprendizaje.

El aprendizaje humano en general es muy diverso e incluye entre otras


cosas:

• adquisición de conocimiento
• desarrollo de habilidades a través de instrucción y práctica
• organización de conocimiento
• descubrimiento de hechos
• ...

De la misma forma el aprendizaje computacional (ML) se encarga de


estudiar y modelar computacionalmente los procesos de aprendizaje en sus
diversas manifestaciones.

1
En general, se busca contruir programas que mejoren automáticamente
con la experiencia.

Aunque no se tienen programas que aprenden tan bien como los humanos,
existen algoritmos que han probado ser muy efectivos para ciertas tareas.

Se tienen más resultados teóricos y una mayor cantidad de aplicaciones


reales, lo cual refleja cierto proceso de maduración del área.

Aprendizaje: cambios adaptivos en el sistema para hacer la misma tarea(s)


de la misma problación de una manera más eficiente y efectiva la próxima
vez [Simon, 83].

Aprendizaje: un programa de computadora se dice que aprende de expe-


riencia E con respecto a una clase de tareas T y medida de desempeño D, si
su desempeño en las tareas en T , medidas con D, mejoran con experiencia
E [Mitchell, 97].

Muchas veces los objetivos dependen de la perspectiva que se les de:

• ingenieril (resolver tareas)


• simulación cognitiva
• análisis teórico

Instruir una máquina a realizar cierta tarea lleva mucho tiempo. ML


trata de suavizar la carga mediante herramientas que pueden automatizarlo.

Desde el punto de vista de sistemas basados en conocimiento...

“. . . knowledge is currently acquired in a very painstaking way;


individual computer scientists work with individual experts to ex-
plicate the expert’s heuristics – the problem of knowledge acqui-
sition is the critical bottleneck in artificial intelligence.” Feigen-
baum and McCorduck [Feigenbaum, pp. 79-80]

“Knowledge engineers have generally assumed that the procedu-


ral knowledge which drives an expert’s skilled behavior can be

2
elicited by dialogue. The findings of the past decade in brain sci-
ence, cognitive psychology and commercial software do not sup-
port this idea. Evidence is lacking that skills, having once reached
the “automization” stage, can be de-automized by dialogue so as
to make their inner workings accessible to introspective report.”
Donald Michie [Michie, pp. 1]

Existen diversas tareas que se pueden hacer con sistemas de aprendizaje.


Entre ellas podemos en general clasificarlas como sigue:

• Descripción: normalmente es usada como análisis preliminar de los


datos (resumen, caracterı́sticas de los datos, casos extremos, etc.). Con
esto, el usuario se sensibiliza con los datos y su estructura.
Busca derivar descripciones concisas de caracterı́sticas de los datos
(e.g., medias, desviaciones estándares, etc.).

• La Predicción la podemos dividir en dos: Clasificación y Estimación.

– Clasificación: Los datos son objetos caracterizados por atributos


que pertenecen a diferentes clases (etiquetas discretas).
La meta es inducir un modelo para poder predecir una clase dados
los valores de los atributos.
Se usan por ejemplo, árboles de decisión, reglas, SVM, etc.
– Estimación o Regresión: las clases son continuas.
La meta es inducir un modelo para poder predecir el valor de la
clase dados los valores de los atributos.
Se usan por ejemplo, árboles de regresión, regresión lineal, redes
neuronales, LWR, etc.

• Segmentación: separación de los datos en subgrupos o clases intere-


santes.
Las clases pueden ser exhaustivas y mutuamente exclusivas o jerárquicas
y con traslapes.
Se puede utilizar con otras técnicas de minerı́a de datos: considerar
cada subgrupo de datos por separado, etiquetarlos y utilizar un algo-
ritmo de clasificación.

3
Se usan algoritmos de clustering, SOM (self-organization maps), EM
(expectation maximization), k-means, etc.
Normalmente el usuario tiene una buena capacidad de formar las clases
y se han desarrollado herramientas visuales interactivas para ayudar al
usuario.
• Análisis de dependencias: El valor de un elemento puede usarse para
predecir el valor de otro. La dependencia puede ser probabilı́stica,
puede definir una red de dependencias o puede ser funcional (leyes
fı́sicas).
También se ha enfocado a encontrar si existe una alta proporción de
valores de algunos atributos que ocurren con cierta medida de confianza
junto con valores de otros atributos.
Se pueden utilizar redes bayesianas, redes causales, y reglas de aso-
ciación.
• Detección de desviaciones, casos extremos o anomalias: Detectar los
cambios más significativos en los datos con respecto a valores pasados
o normales. Sirve para filtrar grandes volúmenes de datos que son
menos probables de ser interesantes. El problema está en determinar
cuándo una desviación es significativa para ser de interés.
• Aprendizaje de cuál es la mejor acción a tomar a partir de experien-
cia: Esto involucra búsqueda y exploración del ambiente. Esto está
relacionado principalmente con aprendizaje por refuerzo, pero también
con técnicas como aprendizaje de macro-operadores, chunking y EBL.
• Optimización y búsqueda: Existen una gran cantidad de algoritmos de
búsqueda tanto determinı́stica como aleatoria, individual como pobla-
cional, local como global, que se utilizan principalmente para resolver
algún problema de optimización. Aquı́ podemos incluir a los algo-
ritmos genéticos, recocido simulado, ant-colony, técnicas de búsqueda
local, etc.

Algunas de las técnicas más comunes son:

• Arboles de decisión y reglas de clasificación: realizan cortes sobre una


variable (lo cual limita su expresividad, pero facilita su comprensión).

4
Generalmente se usan técnicas heurı́sticas en su construcción (e.g., ID3,
C4.5, CN2). Ver figura 1.1.

• Métodos de clasificación y regresiones no–lineales: tratan de ajustar


combinaciones de funciones lineales y no–lineales, por ejemplo, redes
neuronales (e.g., backpropagation), métodos de splines adaptativos,
etc. Ver figura 1.2

• Métodos basados en ejemplos prototı́picos: se hacen aproximaciones en


base a los ejemplos o casos más conocidos (Examplar–based learning y
Case–based resoning). El problema es cómo determinar una medida de
similaridad adecuada. Ver figura 1.3.

• Modelos gráficos de dependencias probabilı́sticas: básicamente se uti-


lizan redes bayesianas, en donde dado un modelo estructural y proba-
bilı́stico, se encuentran los valores de ciertas variables dados valores de
otras variables. Ver figura 1.4.

• Modelos relacionales: Programación lógica inductiva (o ILP), en donde


la búsqueda del modelo se basa en lógica y heurı́sitcas. Ver figura 1.5.

• Reglas de Asociación: reglas que relacionan un conjunto de pares atributo-


valor con otros pares atributo-valor. Por ejemplo:

edad(X, 20 . . . 29) ∧ ingresos(X, 20K..29K) ⇒ compra(X, CD)


[soporte = 2%,confianza = 60%]

• Clustering: agrupan datos cuya distancia multidimensional dentro de


la clase es pequeña y entre clases es grande. Ver figura 1.6.

Algunos ejemplos de aplicaciones que usan aprendizaje:

• Sistemas de reconocimiento de voz (e.g., SPHINX, Lee 89),

• Manejo de vehı́culos autónomos (ALVINN, Pomerleau 89)

• Clasificación de nuevas estructuras de astronomı́a (SkyCat, Fayyad et


al. 95)

• Aprendiendo a jugar Backgammon (TD-Gammon, Tesauro 92)

5
DV_T

O3_Q 120 NO2_F

57
11
O3_Q
NO2_X C5 DV_X
49
46 32
SO2_F C4
O3_L
DV_F SO2_L C5
72

89 39
C7 39
C4
C1 RH_F
C7 C4 RH_Q DV_L

484 286 219

C10 C1
C5 NOX_X C10 NO2_T

87 45

RH_L DV_T
TMP_L
C2
291 168
219
C11 C3 TMP_F
C13
O3_X
C11
231
227 NO2_T
VV_Q C7 C3
43
HORA 23
10 NOX_X C3
RH_Q
C6
C7 346 77
VV_T C2
RH_L DV_X
43
C12 423 162

C6 C8 C6 C2 C3

Figura 1.1: Predicción de Ozono en la Ciudad de México.

6
Entradas Salidas
Figura 1.2: Red Neuronal prototı́pica.

Figura 1.3: Aprendizaje basado en instancias.

7
nivel
socio- auto
edad econo. extra

buen
estudian.
ano
auto
marca

experien. seguri.
anti
robo

habilid. kilome.
manejo ABS lugar
bolsas hogar
aire
histor. valor
manejo comerc.
calidad
manejo accident

robo
condic.
camino danos
persona.
costo
costo coche
defensas otros propio
autos

costo costo
costo personal propied.
medico

Figura 1.4: Red bayesiana de seguros de coches.

8
ACTIVO

+ +
O=N CH = N - NH - C - NH N=O
- -
O O O
nitrofurazone 4-nitropenta[cd]pyrene

INACTIVO
-
O O
+
N

+
N
-
O NH
O
6-nitro-7,8,9,10-tetrahydrobenzo[a]pyrene 4-nitroindole

U
V
Y=Z

W X

Figura 1.5: Predicción de mutagénesis.

9
x

x
x

x
x

Figura 1.6: Ejemplo de Clustering.

10
Por otro, existe una gran cantidad de aplicaciones reales relacionadas con
descubrimiento de conocimiento en base de datos que utilizan algún algoritmo
de aprendizaje. Estas aplicaciones se encuentran en áreas tales como:

• astronomı́a: clustering y clasificación de cuerpos celestes

• biologı́a molecular: predicción de substancias cancerı́genas, genoma hu-


mana, etc.

• aspectos climatológicos: predicción de tormentas, etc.

• medicina: caracterización y predicción de enfermedades

• industria y manufactura: diagnóstico de fallas

• mercadotécnia: identificar clientes susceptibles de responder a ofertas


de productos y servicios por correo, selección de sitios de tiendas, etc.

• inversión en casas de bolsa y banca: análisis de clientes, aprobación de


prestamos, etc.

• detección de fraudes y comportamientos inusuales: telefónicos, seguros,


electricidad, etc.

• análisis de canastas de mercado para mejorar la organización de tiendas

• aprendizaje de tareas en robótica

• ...

Aprendizaje tiene muchas áreas relacionadas:

• Inteligencia Artificial: manejo simbólico, búsqueda, uso de conocimiento


del dominio

• Métodos Bayesianos: teorema de Bayes, algoritmos para estimar val-


ores de variables no observadas

• Teorı́a de complejidad computacional: cotas teóricas de complejidad,


número de ejemplos para aprender, etc.

11
• Teorı́a de control: para optimizar objetivos y predecir el estado sigu-
iente de lo que se está controlando.

• Teorı́a de información: medidas de entropı́a, principio de longitud de


descripción mı́nima.

• Filosofı́a: principio de Occam, inducción

• Psicologı́a y neurobiologı́a: modelos de aprendizaje y neuronales

• Estadı́stica: caracterización de errores, niveles de confianza, pruebas.

Consideraciones y retos actuales

Existen muchos puntos que aclarar cuando se quiere correr o desarrollar


algún algoritmo de aprendizaje. Algunos de estos son:

• Qué algoritmos existen para resolver cierta tarea? cuándo y cómo us-
arlos? qué propiedades tienen?

• Cuántos datos o tiempo de entrenamiento necesito? qué tanta confianza


puedo tener en los resultados?

• Cómo y cuándo usar conocimiento del dominio?

• ...

Se espera que algunas de estas preguntas se puedan resolver al final del curso.

Existen otros retos actuales para el área de aprendizaje. Tales como:

• Volúmen de datos (mega, giga y hasta terabytes)

• Alta dimensionalidad

• Muchos atributos y pocos datos

• Sobreajuste (overfitting) de modelos en los datos

• Datos y conocimiento dinámicos (datos en BD y los patrones encontra-


dos cambian continuamente)

12
• Ruido, incertidumbre (tanto en datos como en conocimiento del do-
minio y en patrones descubiertos) y datos incompletos y/o esparsos

• Relaciones complejas entre campos, jerarquı́as, relaciones entre atribu-


tos, nuevos atributos., etc.

• Interpretación de los resultados

• Incorporación de conocimiento del dominio

• Interacción activa del usuario

• Integración con otros sistemas

1.1 Aprendizaje Inductivo

El aprendizaje inductivo puede verse como el proceso de aprender una función.


Por ejemplo, en aprendizaje supervisado, al elemento de aprendizaje se le dá
un valor correcto (o aproximadamente correcto) de una función a apren-
der para entradas particulares y cambia la representación de la función que
está infiriendo, para tratar de aparear la información dada por la retroali-
mentación que ofrecen los ejemplos.

Un ejemplo es un par (x, f (x)), donde x es la entrada (que generalmente


es un vector) y f (x) la salida. El proceso de inferencia inductiva pura (o
inducción) es: dada una colección de ejemplos de f , regresar una función h
tal que se aproxime a f . A la función h se le llama la hipótesis.

En principio existen muchas posibilidades para escoger h, cualquier pref-


erencia se llama bias o sesgo. Todos los algoritmos de aprendizaje exhiben
algún tipo de sesgo.

La selección de una representación para la función deseada es probable-


mente el factor más importante en el diseño de un sistema de aprendizaje.

Desde un punto de vista más tradicional (hablando de representaciones


simbólicas/reglas,...), podemos decir que una buena parte de ML está dedi-
cada a inferir reglas a partir de ejemplos. Descripciones generales de clases

13
de objetos, obtenidas a partir de un conjunto de ejemplos, pueden ser usadas
para clasificar o predecir.

En general, el interes no está en aprender conceptos de la forma en que


lo hacen los humanos, sino aprender representaciones simbólicas de ellos.

Angluin y Smith listan cinco elementos que deben de especificarse para


caracterizar un problema de inferencia inductiva:

1. La clase de reglas
2. El espacio de hipótesis
3. El conjunto de ejemplos y su presentación
4. La clase del método de inferencia

5. El criterio de éxito

La clase de reglas:

La clase de reglas denota la clase de funciones o lenguaje bajo consid-


eración. Por ejemplo, todas las expresiones regulares sobre un alfabeto es-
pecı́fico, lenguajes libres de contexto, funciones recursivamente enumerables,
programas en Prolog, etc.

El espacio de hipótesis:

El espacio de hipótesis es el conjunto de descripciones tal que cada regla


en la clase tiene por lo menos una descripción en el espacio de hipótesis.
Diferentes espacios de hipótesis pueden usarse para la misma clase de reglas.

El lenguaje de hipótesis debe de tener descripciones para todas las reglas


en la clase, pero puede contener más.

Por conveniencia, normalmente se asume que el lenguaje descrito por el


espacio de hipótesis (i.e., el lenguaje de hipótesis) es el mismo que el de la
clase de reglas:

• Lenguaje de Hipótesis: la sintáxis usada en la construcción de hipótesis

14
• Espacio de Hipótesis: el conjunto de todas las posibles hipótesis dentro
del lenguaje de hipótesis

El lenguaje de hipótesis determina el espacio de hipótesis del cual el


método de inferencia selecciona sus reglas. El lenguaje impone ciertas re-
stricciones (o preferencias) en lo que puede ser aprendido y qué estrategias
de razonamiento son permitidas. Al escoger un lenguaje, debemos de con-
siderar no sólo lo que queremos que el sistema realice, sino también qué
información se le debe de proporcionar al sistema de entrada para permitirle
resolver el problema, y si lo va a resolver a tiempo.

Al igual que en los mecanismos de razonamiento utilizados para represen-


tar conocimiento, aquı́ existe un balance fundamental entre la expresividad y
la eficiencia (ver figura 1.7 y 1.8).

El lenguaje de hipótesis depende del área de aplicación. Una vez definido,


una buena parte del tiempo de desarrollo se dedica a seleccionar cuidadosa-
mente las estructuras de conocimiento adecuadas para la tarea de apren-
dizaje.

Este tiempo se vuelve más crı́tico cuando el lenguaje de hipótesis re-


stringe la expresividad de tal forma que el conocimiento del dominio tiene
que adaptarse al formalismo adoptado.

El proceso de indución puede verse como una búsqueda de hipótesis o


reglas.

El espacio puede buscarse sistemáticamente, hasta encontrar la regla ade-


cuada. Dado un espacio de hipótesis particular, podemos tener una enu-
meración de descripciones, digamos d1 , . . . , dn , tal que cada regla en el espacio
de hipótesis tiene una o más descripciones en esta enumeración.

Dada una colección de ejemplos, identificación en el lı́mite recorre esta


lista encontrando la primera descripción, digamos di , que es compatible con
los ejemplos vistos y conjetura a di .

Este método a pesar de ser poderoso y general es impráctico, para todos


exceptuando un número limitado de casos, debido al tamaño del espacio de
búsqueda.

15
X X Y Y

XY XY XY XY

f(X).
f(a). f(c).
f(X) :- g(Y). f(b). f(X) :- h(Y).
f(a) :- g(X). f(c) :- h(c).
f(a) :- g(b), h(c).

Figura 1.7: El espacio de hipótesis depende de la expresividad del lenguaje.

16
f(x)
f(x) = mx + b
f(x) = ax3+ bx2+ cx + d

f(x) = ax2+ bx + c

Figura 1.8: Qué tan bien se ajusta el modelo depende de la expresividad del
lenguaje.

Para que el aprendizaje puede realizarse en forma eficiente, es normal-


mente crucial estructurar el espacio de hipótesis. Esto se puede hacer con un
modelo de generalización.

A grandes razgos una regla R1 es más general que otra regla R2 (o R2 es


más especı́fica que R1 ), si en cualquier mundo R1 puede mostrar los mismos
resultados que R2 .

Esta estructuración permite cortar ramas durante la búsqueda sabiendo


que especializaciones o generalizaciones de reglas hereden alguna propiedad.

Las propiedades más comunes son: incapacidad de cubrir un ejemplo


conocido como verdadero o probar un ejemplo conocido como falso.

Conjunto de ejemplos y su presentación:

Existen diferentes tipos de presentación de datos y sus efectos en la in-


ferencia de lenguajes.

Los ejemplos pueden dar una retroalimentación directa o indirecta. Por


ejemplo, al aprender a jugar un cierto juego, la retroalimentación se puede
dar en cada jugada o al final del juego o después de un conjunto de jugadas
que provocaron una pérdida de material, etc. Aquı́, surge el problema de
asignación de crédito (cuál jugada es responsable del éxito o fracaso).

17
Una presentación puede consistir en: (i) sólo ejemplos positivos y (ii)
positivos y negativos.

Casi todos los algoritmos requieren presentaciones admisibles, esto es,


para cada regla falsa que es consistente con los ejemplos positivos, existe un
ejemplo negativo que la refuta (se relaciona con Popper: Las teorı́as deben
de ser refutables con hechos).

Los ejemplos se usan para probar y formar hipótesis. En la práctica una


selección de ejemplos se hace sobre el espacio de ejemplos.

Esta selección puede hacerla un: oráculo, el medio ambiente, seleccionada


en forma aleatoria, propuesta por el sistema.

Una “buena” selección de ejemplos puede mejorar el desempeño de un


sistema (ver por ejemplo Active Learning).

A veces esa selección puede mejorarse con conocimiento del dominio.

Es deseable que la distribución que sigan los ejemplos sea similar a la que
van a tener ejemplos futuros.

Finalmente, si el sistema es quién tiene el control sobre cuándo experi-


mentar situaciones novedosas o no, entonces se tiene el problema de formar
un balance entre exploración y explotación.

Métodos de inferencia:

Intuitivamente un método de inferencia es un proceso computacional de


algún tipo que lee ejemplos y produce hipótesis del espacio de hipótesis.

Existe una gran cantidad de métodos. Algunos realizan ajustes grad-


uales en base a refuerzos sobre predicciones sucesivas (e.g., aprendizaje por
refuerzo, redes neuronales, regresión, etc.). Otros construyen incremental-
mente hipótesis tratando de cubrir la mayor parte de un conjunto de ejem-
plos (e.g., reglas de clasificación, programas lógicos) o en base a mejores
particiones de ejemplos (e.g., árboles de decisión). Otros, guardan ejemplos
prototı́picos (e.g., aprendizaje basado en casos y aprendizaje basado en in-
stancias). Algunos buscan relaciones entre variables (e.g., redes Bayesianas).
Finalmente, algunos algoritmos combinan o modifican hipótesis promisorias

18
(e.g., algoritmos genéticos).

Criterio de éxito:

Un componente importante dentro de la especificación de un problema


de inferencia es el criterio de éxito. Identificación en el lı́mite es uno de ellos,
sin embargo, normalmente es difı́cil saber cuándo el método ha convergido.

Recientemente Valiant, propuso un criterio de identificación correcta de


una regla a partir de ejemplos usando un criterio estocástico.

La idea es que después de un muestreo aleatorio de ejemplos positivos y


negativos de una regla, un procedimiento de identificación debe de producir
una regla que con “alta probabilidad” no sea “muy diferente” de la regla
correcta.

Esto se basa en dos parámetros: ǫ y δ. ǫ es una medida de tolerancia


o un lı́mite de la diferencia permitida entre la regla correcta y la hipótesis
generada. δ es una medida de confianza.

Informalmente, un procedimiento de identificación se dice ser probable-


mente aproximadamente correcto o PAC si la diferencia entre la regla correcta
y la hipótesis es menos que ǫ con probabilidad mayor a 1 − δ.

En la práctica queremos ciertas garantias de la calidad de la hipótesis.

Las más comunes son que sea completo y consistente (ver figura 1.9):

• Una hipótesis es completa si cubre todos los ejemplos positivos

• Una hipótesis es consistente si no cubre a ninguno de los ejemplos


negativos

A veces el usuario determina el criterio de paro. Si el sistema genera sus


propios ejemplos, éste lo determina.

19
x x x x
x x
x x x x x x

H
H

Completo y Consistente Completo e Inconsistente

x x x x
x x
x x x x x x

H H

Inompleto y Consistente Incompleto e Inconsistente

Figura 1.9: Completo y Consistente (X positivos y O negativos).

20
1.2 Espacio de Versiones

Desde el punto de vista de lógica, en aprendizaje computacional, normal-


mente empezamos con un predicado meta (M) y tratamos de encontrar una
expresión lógica equivalente que nos sirva para clasificar ejemplos correcta-
mente.

Cada hipótesis propone una expresión, y la llamaremos la definición can-


didata del predicado meta.

Como lo mencionamos antes, el espacio de hipótesis H es el conjunto de


todas las hipótesis {H1 , H2 , . . . , Hn }, que el algoritmo de aprendizaje está
diseñado a producir.

Cada hipótesis predice que un cierto conjunto de ejemplos (aquellos que


satisfacen su definición candidata) son ejemplos del predicado meta. A estos
ejemplos también se les llama la extensión del predicado.

En este sentido dos hipótesis son lógicamente equivalentes si tienen la


misma extensión.

Los ejemplos son objetos para los cuales el predicado meta puede o no
satisfacerse.

Una hipótesis es consistente lógicamente con los ejemplos si se cumple o


no dependiendo si el ejemplo es positivo o negativo.

Las condiciones por las cuales una hipótesis puede ser inconsistente con
algún ejemplo son:

• Un ejemplo es un negativo falso para la hipótesis (i.e., la hipótesis dice


que debe de ser negativo y en realidad es positivo)

• Un ejemplo es un positivo falso para la hipótesis (i.e., la hipótesis dice


que debe de ser positivo y en realidad es negativo)

Si asumimos que el ejemplo es una observación correcta, un falso positivo


o negativo implica que la hipótesis tiene que ser rechazada.

21
Desde un esquema de lógica, podemos caracterizar el aprendizaje induc-
tivo eliminando gradualmente hipótesis que sean inconsistentes con los ejem-
plos (ver figura 1.10).

Sin embargo, el espacio es muy grande (e incluso infinito en muchos casos)


haciendo su implantación directa impráctica (sino imposible).

Búsqueda de la mejor hipótesis actual:

La idea es mantener una sola hipótesis, e irla ajustando conforme nuevos


ejemplos se consideran, manteniendo consistencia.

El algoritmo básico puede encontrarse descrito desde 1943 (John Stuart


Mill).

Si tenemos una hipótesis Hr y recibimos un negativo falso, entonces la


extensión de la hipótesis debe aumentarse para incluirlo. A esto se le llama
generalización.

Si tenemos un positivo falso, entonces la extensión de la hipótesis debe


reducirse para excluirlo. A esto se le llama especialización.

Definimos generalización y especialización como operaciones que cambian


la extensión de una hipótesis (ver figura 1.11). Intuitivamente H1 es más
general que H2 si la “cubre”.

Ahora debemos de ver cómo implementarlas como operaciones sintácticas.

Una posible forma de generalizar es eliminando condiciones volviendo


las definiciones más débiles y por lo tanto cubriendo un conjunto mayor de
ejemplos o añadiendo disjunciones (ver tabla 1.1).

De forma dual, podemos especializar añadiendo condiciones o eliminando


disjunciones.

La estrategia de la tabla 1.1, sigue básicamente una búsqueda en profun-


didad. Podemos empezar con una generalización o con una especialización
que sea consistente con los ejemplos.

Las ideas de éste algoritmo se han usado en varios sistemas de aprendizaje,


sin embargo, tiene algunos problemas:

22
??
Ejemplo: 4 Espadas (+)

Num ? ? Num

4? Num Negro ? Espadas

4 Negro Num Espadas


Ejemplo: 7 Espadas (+)

?? 4 Espadas

Num ? ? Num
Ejemplo: 5 Corazones (-)

Num Negro ? Espadas ? Num

Num Espadas Num Negro ? Espadas

Num Espadas
Ejemplo: 3 Treboles (+)

? Num
Ejemplo: Reina Treboles (-)
Num Negro
Num Negro

Figura 1.10: Proceso de eliminación de hipótesis.

23
x x
x

x
x

x
x
Especializar Generalizar
x x x x
x x

x x
x x x

x x
x x

Figura 1.11: Proceso de especializar y generalizar.

24
Tabla 1.1: Algoritmo de Mejor Hipótesis Actual.

función mejor-hipótesis-actual(ejemplos)
regresa una hipótesis

H ← cualquier hipótesis consistente con el primer ejemplo


en ejemplos
para cada uno de los ejemplos restantes hacer
si e es positivo falso para H entonces
H ← selecciona una especialización de H consistente
con ejemplos
sino si e es negativo falso para H entonces
H ← selecciona una generalización de H consistente
con ejemplos
si no se puede construir una especialización /
generalización consistente entonces falla
regresa H

1. Verificar todas las instancias anteriores cada vez que se hace una mod-
ificación

2. Es difı́cil encontrar buenas heurı́sticas de búsqueda y el hacer back-


tracking puede volverse “eterno”

El hacer backtracking sucede porque en el algoritmo anterior escoge una


hipótesis particular como la mejor (aunque no se tenga suficiente información
para estar seguros de tal decisión).

Alternativamente, podemos seguir una búsqueda a lo ancho (i.e., man-


tener varias hipótesis a la vez). Si seguimos una estrategia de especı́fico a
general, podemos tratar de tener en el conjunto todas las generalizaciones
más especı́ficas que son consistentes con las observaciones (también podemos
hacerlo de general a especı́fico). Ver tabla 1.2.

Los ejemplos positivos forzan las generalizaciones y los negativos eliminan


generalizaciones. Sigue un proceso monotónico de especı́fico a general.

25
Tabla 1.2: Algoritmo de Especı́fico a General a lo ancho.

función espec-a-general-breadth(ejemplos)

H ← el conjunto de generalizaciones más especı́ficas


consistentes con los ejemplos vistos en ejemplos
para cada uno de los ejemplos restantes hacer
si e es positivo falso para alguna hipótesis en H
entonces H ← las hipótesis que no son
consistentes con el ejemplo
sino si e es negativo falso para alguna hipótesis en H
entonces H ← generaliza miembros de H, pero
sólo al punto de aceptar el ejemplo
Elimina de H cualquier elemento que sea
(i) más general que otro elemento o
(ii) aparea otros negativos
si no se puede construir una generalización consistente
entonces falla
regresa H

26
Sin embargo, cada vez que generalizamos, seguimos teniendo que verificar
consistencia con todos los ejemplos positivos.

Búsqueda con el menor compromiso

Una alternativa es mantener todas y sólo aquellas hipótesis que son con-
sistentes con todos los datos.

Con cada instancia nueva, o no se hace nada, o se eliminan algunas


hipótesis.

Asumiendo que el espacio de hipótesis inicial tiene una respuesta correcta,


la disjunción de hipótesis reducida, va a seguir teniendola. Al conjunto de
hipótesis que quedan se le llama espacio de versiones (version space).

Una propiedad importante del algoritmo es que es incremental (nunca se


tiene que regresar para examinar ejemplos viejos).

Problema obvio: si el espacio es gigantesco, como podemos escribir la


disjunción completa de hipótesis. El punto es que no la tenemos que escribir!

Se puede hacer una analogı́a con números reales. Si queremos representar


todos los números entre 1 y 2 ⇒ [1, 2].

Esto lo podemos hacer porque existe un ordenamiento.

La generalización / especialización también nos da un orden, en este caso


un orden parcial (ver figura 1.12).

En este caso, las fronteras no son puntuales, sino conjuntos de hipótesis


o conjuntos frontera (boundary sets).

Lo bueno es que podemos representar todo el espacio de versiones usando


sólo 2 conjuntos de frontera:

• la frontera más general (el conjunto G)


• la frontera más especı́fica (el conjunto S)

Todo lo que está entre S y G está garantizado a ser consistente con los
ejemplos (el tamaño de S y G depende del lenguaje).

27
Muy general

mas
general

mas
especifico

Muy especifico

Figura 1.12: Orden parcial entre hipótesis.

Resumiendo:

• el espacio de versiones actual es el conjunto de hipótesis consistente con


todos los ejemplos vistos
• cada elemento del conjunto S es consistente con todas las observaciones
hasta el momento y no existen hipótesis consistentes que sean más
especı́ficas
• cada elemento del conjunto G es consistente con todas las observaciones
hasta el momento y no existen hipótesis consistentes que sean más
generales

El espacio de versiones inicial tiene que representar a todas las hipótesis.


Esto se puede lograr haciendo G = True (contiene todo) y S = False (su
extensión es vacı́a).

Se tienen que cumplir dos propiedades:

• Toda hipótesis consistente está entre S y G

28
generalizar

+
H no cubre e

H cubre e

especializar

Figura 1.13: Actualización en el espacio de versiones

• Toda hipótesis entre S y G es consistente

Lo único que queda es como actualizar S y G. Si Si es una de las hipótesis


en S y Gi una en G (ver figura 1.13):

1. Positivo falso para Si : Si es muy general, pero por definición no existe


una especialización de Si consistente, por lo que la eliminamos

2. Negativo falso para Si : Si es muy especı́fico y tenemos que substituirlo


por su generalización inmediata

3. Positivo falso para Gi : Gi es muy general y tenemos que substituirlo


por su especialización inmediata

4. Negativo falso para Gi : Gi es muy especı́fico, pero por definición no


existe una generalización de Gi consistente, por lo que la eliminamos

Continuamos con estas operaciones hasta que (ver tabla 1.3):

29
Tabla 1.3: Algoritmo de Espacio de Versiones.

Inicializa los conjuntos S y G con Falso y Verdadero


Para cada ejemplo ei subsecuente
si e es negativo entonces
• Manten en S sólo las hipótesis que no
cubren a ei
• Especializa en G aquellas hipótesis que
cubran a ei , pero sólo al punto para no
cubrirlo y que sigan siendo las más generales
• Elimina de G cualquier elemento más especı́fico
sino si ei es positivo entonces
• Manten en G sólo las hipótesis que
cubren a ei
• Generaliza en S aquellas hipótesis
que no cubran a ei , pero sólo al punto para
cubrirlo y que sigan siendo las más especı́ficas
• Elimina de S cualquier elemento más general

1. En el espacio de versiones queda una sola hipótesis

2. El espacio de versiones se colapsa (S y G se vuelven vacı́as), por lo que


no hay una hipótesis consistente con los ejemplos

3. Se acabaron los ejemplos y tenemos varias hipótesis en el espacio de ver-


siones, i.e., una disjunción de hipótesis (con un nuevo ejemplo, si todas
las hipótesis están de acuerdo, clasificamos el ejemplo, sino, podemos
tomar un voto mayoritario)

Ventajas:

• Detecta cuando acaba (cuando los ejemplos son suficientes)

• Cuando hay sólo algunos ejemplos, sigue dando resultados

Problemas:

30
1. Asume que podemos calcular la relación más-general-que

2. Si el dominio tiene ruido o insuficientes atributos para una clasificación


exacta, el espacio de versiones se colapsa

3. Si permitimos una disjunción ilimitada en el espacio de hipótesis, el


conjunto S va a tener una disjunción de los ejemplos positivos y G va
a tener la negación de la disjunción de los ejemplos negativos

Para el manejo de ruido no existe una solución general (pero vamos a ver
varias). Para el caso de disjunciones ilimitadas, podemos usar una jerarquı́a
de generalizaciones.

El algoritmo de espacio de versiones se uso en Meta-Dendral (reglas para


predecir como se rompen moleculas quı́micas) y en LEX (resolver problemas
de integración simbólica).

Puede servir para generar automáticamente ejemplos que dividan el es-


pacio de búsqueda.

Unos años depués, se desarrolló una generalización del espacio de ver-


siones, que permite manejar ruido, valores faltantes e incorporar conocimiento
del dominio. Para esto utiliza conjuntos de frontores que permiten cierta can-
tidad de ruido y desarrollo métodos para fusionar elementos de las fronteras.

31
Capı́tulo 2

Aprendizaje Basado en
Similaridades (SBL)

Atributos Clase
Peludo? Edad? Tamaño?
si viejo grande león
no joven grande no león
si joven mediano león
si viejo pequeño no león
si joven pequeño no león
si joven grande león
no joven pequeño no león
no viejo grande no león

If Tamaño = mediano
Then león

If Tamaño = grande
and Peludo = si
Then león

If Tamaño = pequeño
Then no león

32
~
Tamano

~
pequeno mediano
grande

leon
no leon Peludo

si no

leon no leon

Figura 2.1: Arbol de decisión.

If Tamaño = grande
and Peludo = no
Then no león

2.1 Inducción de Árboles de Decisión (TDIDT:


Top Down Induction of Decision Trees)

Existe una serie de algoritmos desarrollados desde los principios de los 60’s
para la construcción de árboles de decisión. CLS (Hunt et al., 1966), ID3
(Quinlan, 1979), CART (Breiman et al., 1984), ACLS (Niblett et al., 1982),
ASSISTANT (Cestnik et al., 1987), C4.5 (Quinlan, 1993), etc.

Muchos de estos desarrollos se han convertido en herramientas comer-


ciales, por ejemplo, RuleMaster (1984), Ex-Tran (1984), Expert-Ease (1983),
y C5/See5 (2000). Por otro lado, la gran mayorı́a de los ambientes de KDD
incluyen alguna versión de ID3 o de CART.

El aprendizaje de árboles de decisión es uno de los más sencillos y fáciles


de implementar y a su vez de los más poderosos.

33
Un árbol de decisión toma de entrada un objeto o situación descrita por
un conjunto de atributos y regresa una decisión “verdadero/falso”.

En general pueden tener un rango más amplio que simples funciones


Booleanas, pero por simplicidad, consideremos primero sólo estas.

Cada nodo interno corresponde a una prueba en el valor de uno de los


atributos y las ramas están etiquetadas con los posibles valores de la prueba.

Cada hoja especifica el valor de la clase.

Expresividad

Los árboles de decisión están limitados a hablar de un solo objeto, osea,


son escencialmente proposicionales, siendo cada prueba de atributo una proposición.

Por lo mismo no podemos usar los árboles de decisión para expresar prue-
bas sobre dos o más objetos diferentes, e.g. ∃r2 Cercano(r2 , r)∧P recio(r2, p2 )∧
P recio(r, p) ∧ MasBarato(p2 , p)

Claro que podrı́amos añadir un atributo Booleano que se llame:


RestMásBaratoCerca, pero es intratable para todas las combinaciones de
atributos.

Por otro lado, los árboles de decisión son completamente expresivos dentro
de la clase de lenguajes proposicionales. Osea que cualquier función Booleana
puede ser descrita por un árbol de decisión.

Trivialmente, podemos tomar cada fila como un camino en la construcción


de un árbol. Sin embargo, la tabla es exponencial en el número de atributos.

Para muchas funciones, los árboles son relativamente pequeños. Sin


embargo, para otras funciones puede requerir un árbol exponencialmente
grande. Por ejemplo, la función paridad (i.e., regresa 1 si la suma de 1’s es
par) o la función de mayorı́a (regresa 1 si más de la mitad de la entrada es
un 1).

Para n atributos, hay 2n filas. Podemos considerar la salida como una


n
función definida por 2n bits. Con esto hay 22 posibles funciones diferentes
para n atributos (para 6 atributos, hay 2 × 1019 ).

34
Por lo mismo, tenemos que usar algún algoritmo ingenioso para encontrar
una hipótesis consistente en un espacio de búsqueda tan grande.

Inducción de árboles de decisión a partir de ejemplos

Un ejemplo es descrito por los valores de los atributos y el valor del


predicado meta. El valor del predicado meta se le llama la clasificación del
ejemplo.

Si el predicado es verdadero, entonces el ejemplo es positivo, sino el ejem-


plo es negativo.

En caso de existir más clases, los ejemplos de una sola clase son positivos
y el resto de los ejemplos son considerados negativos.

Cuando se tiene un conjunto de ejemplos (datos), normalmente se divide


aleatoriamente en dos subconjuntos. Uno de entrenamiento (con el cual se
construye la hipótesis) y otro de prueba (con el que se prueba la hipótesis
encontrada).

Más formalmente:

1. Junta una gran cantidad de ejemplos


2. Dividelos en dos conjuntos disjuntos: entrenamiento y prueba
3. Usa el algoritmo de aprendizaje para generar una hipótesis H
4. Mide el porcentage de clasificación correcta de H en el conjunto de
prueba
5. Repite los pasos 1 - 4 para diferentes tamaños de conjuntos de entre-
namiento y diferentes conjuntos seleccionados aleatoriamente

Encontrar un árbol puede ser trivial (e.g., construir un camino por cada
ejemplo). Sin embargo, no es bueno para predecir casos no vistos. El prob-
lema es que sólo memoriza lo visto, por lo que no extrae ningún patrón de
los ejemplos (por lo que no podemos esperar que extrapole).

El extraer un patrón significa el poder describir una gran cantidad de


ejemplos en forma concisa. Esto también sigue un principio general en los

35
algoritmos de inducción llamada: Ockham’s razor (muchas veces escrito como
Occam): dar preferencia a hipótesis más simples que sean consistentes con
todas las observaciones.

Encontrar el árbol más pequeño es intratable, pero se pueden usar heurı́sticas


para encontrar árboles pequeños.

Idea: probar primero el atributo más “importante” (el que diferencia


mejor los ejemplos).

Después que el primer atributo particiona los ejemplos, cada subconjunto


es un nuevo problema de aprendizaje a su vez, con menos ejemplos y un atrib-
uto menos. Este proceso recursivo tiene 4 posibles resultados (ver tabla 2.1):

1. Si existen ejemplos positivos y negativos, escoge el mejor atributo para


particionarlos

2. Si todos los atributos restantes son positivos (o negativos), termina y


regresa True (o False)
3. No quedan ejemplos (no ha sido observado un ejemplo con esa com-
binación de atributos). Regresa un default en base a la clasificación
mayoritaria de su nodo padre

4. No hay más atributos, pero seguimos con ejemplos positivos y negativos


(i.e., existen ejemplos con la misma descripción, pero diferente clasifi-
cación). Posiblemente por ruido y/o falta de atributos y/o dominio no
determinı́stico. Posible solución: tomar la clasificación mayoritaria

El árbol resultante no necesariamente es el “correcto”. Para eso lo probamos


con el conjunto de prueba.

Aplicaciones:

Es la técnica que posiblemente se ha usado más en aplicaciones reales.


Tres ejemplos:

• GASOIL (1986): Diseño de sistemas de separación de hidrocarburos


en plataformas petroleras de BP, 2,800 reglas, 1 año-hombre de tiempo

36
Tabla 2.1: Algoritmo de construcción de árboles de decisión.

función Arbol-decisión(ejemplos,atributos,default)
regresa un árbol de decisión
entradas:ejemplos: conjunto de ejemplos
atributos: conjunto de atributos
default: valor de default para el predicado meta

if ejemplos = vacı́o then regresa default


else if todos los ejemplos tienen la misma clasificación
then regresa la clasificación
else if atributos = vacı́o
then regresa VALOR-MAYORITARIO(ejemplos)
else
Mejor ← ESCOGE-ATRIBUTO(atributos, ejemplos)
Arbol ← nuevo árbol de decisión con Mejor como raı́z
para cada valor vi de Mejor do
ejemplos i ← {ejemplos con Mejor = vi }
Subárbol ← ARBOL-DECISION(ejemplos i ,
atributos - mejor,
VALOR-MAYORITARIO(ejemplos))
añade una rama a Arbol con etiqueta vi y
subárbol Subárbol
end
return Arbol

37
Tabla 2.2: Tabla de ejemplos para decidir si jugar o no golf.

Ambiente Temp. Humedad Viento Clase


soleado alta alta no N
soleado alta alta si N
nublado alta alta no P
lluvia media alta no P
lluvia baja normal no P
lluvia baja normal si N
nublado baja normal si P
soleado media alta no N
soleado baja normal no P
luvia media normal no P
soleado media normal si P
nublado media alta si P
nublado alta normal no P
lluvia media alta si N

Ambiente

soleado lluvioso
nublado

Humedad P Viento

alta normal si no

N P N P

Figura 2.2: Arbol de decisión para jugar Golf.

38
de desarrollo, 0.1 de mantenimiento, mejor que expertos y ahorro de
millones de dolares.

• BMT (1990): Configuración de equipo de protección de incendios en


edificios, > 30,000 reglas, 9 años hombre de desarrollo y 2 de man-
tenimiento (comparado con: MYCIN: 400 reglas, 100 años-hombre de
desarrollo o R1/XCON: 8,000 reglas, 180 años-hombre de desarrollo y
30 de mantenimiento).

• Aprendiendo a volar (1992): En lugar de construir un modelo preciso


de la dinámica del sistema, se aprendió un mapeo adecuado entre el
estado actual y la decisión de control correcta para volar un Cessna en
un simulador de vuelo. Los datos se obtuvieron de 3 pilotos experi-
mentados haciendo un plan de vuelo asignado 30 veces. Cada acción
del piloto creaba un ejemplo. Se usaron 90,000 ejemplos descritos por
20 atributos. Se uso C4.5 que generó un árbol y se convirtió a C. Se
insertó en el simulador y logro volar. Los resultados fueron sorpren-
dentes en el sentido de que aparte de aprender a volar a veces tomaba
decisiones mejores que las de sus “maestros”

2.1.1 Cómo le hace?

La medida utilizada en ESCOGE-ATRIBUTO debe de tener su valor máximo


cuando el atributo sea perfecto (i.e., discrimine perfectamente ejemplos pos-
itivos y negativos) y mı́nimo cuando el atributo no sea relevante.

Una posibilidad es basar la medida en la cantidad de información que da


el atributo (basado en la teorı́a de Shannon y Weaver ’49).

La cantidad de información mide la (im)pureza en una colección arbitraria


de ejemplos.

La cantidad de información recibida respecto a la ocurrencia de un evento


es inversamente proporcional a la probabilidad de ocurrencia de dicho evento.

La información se mide en bits (un bit de información es suficiente para


responder Verdadero/Falso a una pregunta cuya respuesta no se sabe).

39
E
1

1/2 1 P(x)

Figura 2.3: Función de Entropı́a.

Si se tienen vi posibles respuestas con probabilidades P (vi ), el contenido


de información es:
n
X
I(P (v1), . . . , P (vn )) = − P (vi )log2 P (vi )
i=1

Nos representa el contenido promedio de información para los diferentes


eventos (ver figura 2.3).

En el caso de los árboles de decisión queremos estimar las probabilidades


de las respuestas. Esto se hace por la proporción de ejemplos positivos y
negativos.

Si se tienen p ejemplos positivos y n ejemplos negativos, entonces:

p n p p n n
I( , )=− log2 − log2
p+n p+n p+n p+n p+n p+n

Un solo atributo normalmente no nos proporciona toda esta información,


pero podemos estimar cuanta, viendo cuanta información necesitamos de-
spués de utilizar ese atributo,

Cada atributo A, divide a los ejemplos del conjunto de entrenamiento en


subconjuntos E1 , E2 , . . . , Ev de acuerdo a los v valores del atributo.

40
Cada subconjutno Ei tiene pi ejemplos positivos y ni ejemplos negativos,
pi
por lo que para cada rama necesitamos: I( pi +n , ni ) cantidad de infor-
i pi +ni
mación para responder a una pregunta.

Un ejemplo aleatorio tiene el valor i-ésimo del atributo A con proba-


bilidad: pp+n
i +ni
. Por lo que en promedio, después de probar el atributo A,
necesitamos:

v
X pi + ni pi ni
E(A) = I( , )
i=1 p + n pi + ni pi + ni

La cantidad de información que ganamos al seleccionar un atributo está


dada por:

p n
Ganancia(A) = I( , ) − E(A)
p+n p+n

La ganancia de A me dice el número de bits que ahorramos para responder


a la pregunta de la clase de un ejemplo, dado que conocemos el valor del
atributo A.

Dicho de otra forma, mide que tan bien un atributo separa a los ejemplos
de entrenamiento de acuerdo a la clase meta.

La función de evaluación escoge el atributo de mayor ganancia.

Por ejemplo, si calculamos las ganancias para los atributos con los datos
de la tabla 2.2 (asumimos que 0 × log2 (0) = 0):
9 9 5 5
I(9, 5) = − 14 log2 ( 14 )− 14
log2 ( 14 ) = 0.941

Para Ambiente:
soleado: p1 = 2, n1 = 3, I(p1, n1 ) = 0.971
nublado: p2 = 4, n2 = 0, I(p2 , n2 ) = 0
lluvia: p3 = 3, n3 = 2, I(p3 , n2 ) = 0.971
5 4 5
Entropı́a(Ambiente) = 14 I(p1 , n1 ) + 14 I(p2 , n2 ) + 14
I(p3 , n3 ) = 0.694

Para Humedad :
alta: p1 = 3, n1 = 4, I(p1, n1 ) = 0.985

41
normal: p2 = 6, n2 = 1, I(p2 , n2 ) = 0.592
Entropı́a(Humedad) = 0.798

Para Viento:
no: p1 = 6, n1 = 2, I(p1 , n1 ) = 0.811
si: p2 = 3, n2 = 3, I(p2, n2 ) = 1.0
Entropı́a(Viento) = 0.892

Para Temperatura, Entropı́a(Temperatura) = 0.9111

Las ganancias son entonces:


Ganancia(Ambiente) = 0.246 (MAX)
Ganancia(Humedad) = 0.151
Ganancia(Viento) = 0.048
Ganancia(Temperatura) = 0.029

Por lo que ID3 escoge el atributo Ambiente como nodo raı́z y procede a
realizar el mismo proceso con los ejemplos de cada rama.

Para Ambiente tenemos tres subconjuntos: soleado (2+, 3−), nublado


(4+, 0−), lluvioso (3+, 2−). Para nublado, no tenemos que hacer nada, mas
que asignarle la clase P .

Por ejemplo, para soleado hariamos el mismo proceso:


Ganancia(Humedad) = 0.97 - [(3/5)0 + (2/5)0] = 0.97 (MAX)
Ganancia(Temperatura) = 0.97 - [(2/5)0 + (2/5)1 + (1/5)0] = 0.570
Ganancia(Viento) = 0.97 - [(2/5)1 + (3/5)0.918] = 0.019

Uso del Arbol de Decisión

Con el árbol construido, podemos preguntar si esta bien jugar el sábado


en la mañana con ambiente soleado, temperatura alta, humedad alta y con
viento, a lo cual el ábol me responde que no.

ID3 sigue una estrategia hill-climbing, sin backtracking, incrementando en


cada paso la complejidad del árbol. Utiliza todos los ejemplos, con los cuales
extrae estadı́sticas y que lo hace más robusto que un algoritmo incremental
y por otro lado lo hace fácilmente extendible para manejar ruido. Tiende a
preferir construir árboles pequeños con atributos con ganancia de información
alta cerca de la raı́z.

42
Criterio de Selección:

El criterio de selección basado en contenido de información tiende a fa-


vorecer atributos que tienen más valores.

Por ejemplo, si un atributo tiene valores aleatorios o es un identificador


único de cada ejemplo (su clasificación serı́a perfecta y su información al
seleccionarlo serı́a 0 (ganancia máxima). Con esto el algoritmo básico con-
struye un árbol de un solo nivel o decision stump.

Posible solución: árbol binario, dividiendo los posibles valores de los atributos
en dos. Desventaja: árboles difı́ciles de entender + computacionalmente caro
(2n subconjuntos para n valores).

Otra solución: Para compensar esto se definió una razón de ganancia de


información. Esto es dividir la ganancia de información entre la información
de la división (la cantidad de información en los ejemplos que se dividió).

La información de la división (split information) se define como:


n
X
SI(A) = − P (Ai )log2 P (Ai )
i=1

Esto es, la entropı́a de los datos con respecto a los valores del atributo
(versus entropı́a con respecto a la clase).

E.g., si un atributo binario divide el conjunto de ejemplos en dos sub-


conjuntos de igual tamaño, el contenido de información de su división es
1. Mientras que un atributo que divide los ejemplos en 14 subconjuntos de
tamaño 1, serı́a: 14(−1/14log2(1/14)) = −log2 (1/14).

Sin embargo, no siempre funciona ya que puede sobrecompensar. Una


práctica común es usar el atributo de la razón de ganancia de información
máxima si su ganancia de información es al menos tan grande como el prome-
dio de ganacia de información del resto de los atributos.

Además de medidas basadas en ganancia de información, se han prop-


uesto un gran número de diferentes medidas heurı́sticas para seleccionar al
“mejor” nodo y construir árboles de decisión. Otra medida muy utilizada es

43
el ı́ndice Gini del sistema CART:
m
X
Gini(t) = 1 − (p(j | t))2
j=1

donde p(j | t) es la frecuencia relativa de la clase j en t.

Lo que se quiere es minimizar el ı́ndice Gini al seleccionar un atributo.


Para esto se calcula el ı́ndice Gini en cada rama del atributo tomando en
cuenta su proporción de ejemplos. Si se divide en k ramas:
k
X ni
GiniA = Gini(k)
i=1 n

donde ni son los ejemplos de la rama y n los del nodo.

2.1.2 Atributos numéricos y manejo de ruido

Hasta ahora hemos visto como funciona el algoritmo con atributos con valores
discretos finitos y con datos sin ruido. Veremos ahora algunas extensiones
para estos casos.

Atributos numéricos:

Qué hacer si un atributo es numérico?

Lo que normalmente se hace es que se ordena el atributo numérico, se


identifican ejemplos adyacentes que tengan valor de clase diferente y se con-
sideran como candidatos los puntos medios de división del valor del atributo.
A cada uno de estos se le calcula su ganancia de información.

Supongamos que en el ejemplo de la tabla 2.2 la temperatura toma val-


ores enteros, y que los desplegamos en forma ordenada (de menor a mayor)
juntando los valores iguales:
64 65 68 69 70 71 72 75 80 81 83 85
P N P P P N N P N P P N
P P

Existen 8 posibles lugares de corte que separan el valor de la clase. Para


cada uno de ellos se puede calcular su ganancia de información tomando el

44
punto medio. Por ejemplo, si se toma el punto 71.5, Temperatura < 71.5
tiene 4 P y 2 N, mientras que Temperatura > 71.5 tiene 5 P y 3 N.

Cada posible partición entra en competencia con el resto de los atributos


y el de mayor ganancia de información es el que se selecciona.

Esto implica que en el caso de atributos numéricos, estos pueden aparecer


varias veces en una rama de un árbol.

Para evitar ordenar ejemplos cada vez que se selecciona un atributo, se


guarda con cada subconjunto el orden de acuerdo a un atributo numérico.
Esto se puede hacer al principio y no volverlo a repetir.

Valores faltantes:

Una forma de tratar valores faltantes es como si fueran otro posible valor
del atributo. Esto solo funciona si el valor faltante tiene un significado espe-
cial en algun sentido.

Ignorar los datos es demasiado drástico ya que algunas veces el valor del
atributo puede no ser relevante para tomar una decisión.

Se han hecho diferentes propuestas para manejar datos faltantes, como


llenar estos huecos con el valor más probable o con el valor más probable
dada la clase.

Lo que hace C4.5 es distribuir los objetos con valores desconocidos entre
los demas. En donde se calcula la ganacia en información como si pi fuera:

pi + pd · razoni
pi + ni
razoni = P
i (pi + ni )

y pd es la probabilidad de los datos desconocidos. Haciendo lo equivalente


para ni .

La otra “cara de la moneda” es cómo clasificar (dado que se tiene un


árbol) un objeto con atributos desconocidos.

Idea: seguir todas las posibles ramas pero tomando en cuenta que algunas

45
son más probables que otras (tienen mas datos que la sorportan).

T · razoni

Al final se puede calcular el nivel de “confianza” para una clasificación.

Si se sabe cierta información acerca del posible valor del atributo, se puede
usar algún método probabilı́stico.

Costo de clasificación:

Si existe un costo en la clasificación, y este se conoce, entonces se puede


incorporar a la probabilidad de la predicción de la clase (se multiplica).
Normalmente se hace definiendo una matriz de costo en donde la diagonal
es 0 y los elementos fuera de la diagonal representan el costo de equivo-
carse en la clasificación. Entonces, se multiplican las probabilidades de las
clases predichas por el clasificador, por la columna correspondiente a la clase
predicha en la matriz de costo y se selecciona la clase de menor costo esper-
ado. Variando las matrices de costo se puede variar la clasificación.

Recientemente se han estado estudiado el crear árboles cuando el costo de


(error en la) clasificación es diferente (e.g., dianosticar cancer). Esto afecta
en general el proceso de crecer y de podar (ver abajo) los árboles.

Cuando veamos formas de evaluar algoritmos, se mostrara cómo se puede


tomar en cuenta el costo de la clasificación definiendo diferentes umbrales
dentro de curvas ROC.

Por lo pronto una forma simple y general es generar datos de entre-


namiento con diferente proporción en las clases. Si lo que nos interesa es
que clasifique bien una clase, entonces aumentamos la proporción de ejem-
plos de esa clase. Esto se puede hacer duplicando instancias de la clase a
predecir y/o reduciendo instancias de las otras clases.

Algunos algoritmos generan instancias artificialmente y las clasifican de


acuerdo a sus vecinos más cercanos.

Finalmente, algunos algoritmos permiten incorporarle pesos a los ejemp-


los de entrenamiento y con esto considerar el costo de una mala clasificación.

Ruido y “Overfitting”

46
Algunas de las ventajas de ID3 es que es útil en dominios con un alto
grado de no homogeneidad (diferentes relaciones entre atributos en difer-
entes regiones del espacio de problemas) y alta dimensionalidad (muchos
atributos).

En general, podemos hablar de que a pesar de que falte información


relevante, se pueda construir un árbol con los atributos irrelevantes.

Con muchas posibles hipótesis se tiene que tener cuidado en no encontrar


“regularidades con poco sentido” a partir de los datos. A este problema se
le llama overfitting y afecta a todos los tipos de aprendizaje (i.e., no sólo a
los árboles de decisión).

Definición: dado un espacio de hipótesis H, una hipótesis h ∈ H se dice


que sobreajusta los datos de entrenamiento si existe otra hipótesis h′ ∈ H, tal
que h tiene errores más pequeños que h′ en los ejemplos de entrenamiento,
pero h′ tiene errores más pequeños que h en toda la distribución de ejemplos.

Uno de los problemas a los que se enfrentan los sistemas de aprendizaje,


y que provocan el sobreajuste, es cuando los ejemplos de entrenamiento con-
tienen ruido:

• valores de atributos erroneos, subjetivos


• clasificación equivocada

• valores desconocidos

Con ruido, se pueden tener dos ejemplos con los mismos valores de atrib-
utos, pero clase diferente. En presencia de ruı́do, el algoritmo básico (ID3)
tiende a construir árboles de decisión que son más grandes de lo necesario, y
no clasifican adecuadamente.

En el caso de árboles de decisión se tiene que decidir:

• cómo trabajar con atributos inadecuados

• cuándo al añadir atributos extra no mejora la predicción del árbol de


decisión

47
En general, podemos hablar de dos métodos utilizados para manejar ruido
(basados en la condición de terminación):

• pruning (o pre-pruning): cambiar el criterio de paro del árbol de de-


cisión para “podar” ramas.

• post-pruning: “podar” ramas una vez construı́do el árbol.

Pruning: En este caso, lo que se tiene que decidir es cuándo parar o dejar
de construir el árbol a pesar de no tener hojas con ejemplos de una sola clase.

Se han propuesto técnicas usando un umbral de ganancia de información


(si no es mayor al umbral parar), técnicas usando validación cruzada (si no
mejora la clasificación con datos desconocidos parar) o medidas basadas en el
principio de longitud de descripión mı́nima (MDL). Si el utilizar el atributo
aumenta la medida de MDL entonces parar.

El problema principal es que en todos estos métodos el criterio de paro


está basado en información local. A pesar de que no se tengan buenos criterios
en un nodo, puede darse el caso que se puedan hacer buenas particiones en
sus descendientes.

Post-pruning: Esta es la técnica más utilizada, y algunos de los métodos


mencionados arriba se han utilizado para podar el árbol una vez ya constru-
ido.

Pasos:

1. Crece el árbol como antes (sólo verifica cuando se tienen ejemplos


iguales y clases diferentes).

2. “Poda” el árbol.

Los problemas que se enfrentan estas técnicas es cuál árbol podado consid-
erar (pueden existir muchas opciones) y cómo estimar el error de clasificación
de los árboles.

48
El estimado de re-substitución está dado por la proporción de ejemplos
en el nodo mal clasificados si se toma la clase mayoritaria en el nodo. El
problema es que el árbol más grande nos dá la mejor clasificación.

Una de las técnicas más populares es hacer una estimación directa del
error por re-substitución (poda). Como se hace con los mismos datos, se
asume que los datos siguen una distribución Bernoulli (por ser unos cuantos
(< 100), la cual se aproxima a una Normal con muchos datos), y considerando
una estimación pesimista dentro de un nivel de confianza.

Para estimar errores se especifican niveles de confianza y las estadı́sticas


(media y varianza) se obtienen directamente de los datos y los valores de
tablas (e.g., z).

2.1.3 Ejemplo

Supongamos que medimos el error de un clasificador con datos de prueba, y


nos da 25%. Lo que nos gustaria saber es qué tan confiable es esa estimación.

Si obtenemos eso con 100 datos o con 10,000 claramente le vamos a creer
más a la estimación con los 10,000 datos.

En estadı́stica, un conjunto de eventos independientes se conoce como un


proceso Bernoulli (e.g., lanzar una moneda).

Podemos pensar en el porcentage de éxito, por lo que queremos saber es


qué tanto se acerca ese 75% de éxito al verdadedo porcentage de éxito.

Esto se expresa normalmente con intervalos de confianza.

Para 750 éxitos de 1,000 pruebas se tiene un 80% de confianza de que el


verdadero porcentage de éxito este entre 73.3% y 76.8%.

Para 75 éxitos de 100 pruebas el mismo 80% de confianza tiene un inter-


valo de 70% y 81%.

La media y la varianza de un proceso Bernoulli con porcentage de éxito


p son p y p(1 − p) respectivamente.

49
Tabla 2.3: Niveles de confianza de una distribución normal.
P r[X ≥ z] z
0.1% 3.09
0.5% 2.58
1% 2.33
5% 1.65
10% 1.28
20% 0.84
40% 0.25

Para N pruebas del proceso Bernoulli el porcentage de éxito es f = E/N


(E = número de éxitos), y la varianza se reduce por un factor N a p(1−p)/N

El valor de éxito se puede tomar como una variable aleatoria, con su


media y su varianza.

La probabilidad de que una variable aleatoria con media cero esté en un


intervalo de confianza de tamaño 2z es P r[−z ≤ X ≤ z] = c.

Para una distribución normal los valores de c y de z están dados en


tablas (ver tabla 2.3) que expresan la probabilidad de que X sea mayor a z
(P r[X ≥ z]).

Las tablas nos dan sólo una mitad, pero al ser simétrica la distribución
normal podemos considerar la mitad del intervalo que queremos y ese bus-
carlo en la tabla.

Las tablas asumen que se tiene una media 0 y varianza de 1 (z nos mide
las desviaciones estandar fuera de la media).

Osea que para un 5% nos dice que existe un 5% que la variable X se


encuentre a más de 1.65 desviaciones estandar arriba de la media, o un 10%
que esté 1.65 desviaciones estandar (arriba o abajo) de la media.

P r[−1.65 ≤ X ≤ 1.65] = 90%

Para cambiar a una media 0 y varianza


q 1 tenemos que restar la media p
y dividirlo por la deviación estandar p(1 − p)/N. Esto nos da:

50
f −p
P r[−z ≤ q ≤ z] = c
p(1 − p)/N

Para esto dado un nivel de confiaza c le restamos 1 y dividimos el resultado


entre 2 y consultamos la tabla.

Tenemos que encontrar una expresión para p. Después de cierta matemática


nos queda:
s
z2 f f2 z2 z2
p = (f + ±z − + )/(1 + )
2N N N 4N 2 N

Esto nos da dos valores uno pesimista y otro optimista.

La distribución normal es válida sólo para valores grandes de N (e.g.,


N > 100).

Regresando a la poda de árboles. Como ya vimos, una forma es guardar


datos y usarlos para estimar estos errores. Otra posibilidad es usar los mismos
datos de entrenamiento para esta estimación, que es lo que hace C4.5.

El usar un estimado de éxito p o de error q es lo de menos, p + q = 1.


Como los valores obtenidos son de los datos de entrenamiento se usa el valor
pesimista que nos da:
s
z2 f f2 z2 z2
p = (f + +z − + )/(1 + )
2N N N 4N 2 N

Para ver como funciona esto, supongamos que tenemos el subárbol de la


figura 2.4.

Usamos c = 25% (z = 0.69). Para la rama izquierda tenemos 2 éxitos


de 6 casos, lo cual nos da una f = 0.33, Poniendo esto en la fórmula nos da
p = 0.47 (aquı́ se ve la parte pesimista ya que en lugar un 33% nos da un
47%). Para la rama de enmedio, tenemos 1 éxito de 2, lo cual nos da p = 72.
La rama de la derecha es igual a la izquierda.

51
Temp.
alta baja
media
2P 1P 2P
4N 1N 4N
Figura 2.4: Subarbol de decisión.

La combinación de estos valores tomando en cuenta el porcentage de


ejemplos de cada uno, nos da 0.51.

Ahora para la clase mayoritaria del nodo tenemos f = 5/14 lo cual nos
da p = 0.46, que como es menor, entonces podamos esa rama.

Al cambiar el criterio de paro, podemos tener hojas con ejemplos de


diferentes clases. Posibles soluciones:

• que las clases tomen valores fraccionarios (p/(p+n))

• tomar la clase mayoritaria (mejor si se quiere minimizar el error esper-


ado)

En general con poco nivel de ruido, se comportan bien. No conviene


quitarle ruido a los datos si se van a probar en ambientes ruidosos.

Análisis de Complejidad:

La complejidad de contruir un árbol es:

O(mnlogn) + O(n(logn)2)

52
Donde n es el número de datos y m el número de atributos.

El primer término se refiere a construir un árbol de decisión sin considerar


podado. El segundo término se refiere cuando realizamos podado. Esto es
independiente de que los atributos sean continuos o no.

2.1.4 Algunas Extensiones

Se han propuesto varias extensiones, como en lugar de hacer una búsqueda


tipo hill climbing usar beam search, o hacer búsqueda tipo look-ahead.

Una de las más populares es generar varios árboles de decisión y luego


combinar sus resultados. Esto se puede hacer en forma paralela a partir de
varias subconjuntos de los datos de entrenamiento (bagging), en forma se-
cuencial considerando errores de clasificación y modificando los datos (boost-
ing) o usando varias muestras de los datos de entrenamiento e introduciendo
aleatoriedad en la selección de atributos a considerar en cada nodo (random
forest).

2.1.5 Árboles de Regresión y de Modelos

Cuando la clase a predecir es numérica existen dos variantes:

• Regression trees: guardan el valor promedio de los valores en las hojas

• Model trees: utilizan una regresión lineal para predecir los valores de
las clases

Los dos tipos de árboles se construyen muy parecido a los árboles de


decisión para construir un árbol inicial.

En lugar de usar ganancia de información, seleccionan el atributo que


minimiza la variación entre subconjuntos de la clase en cada rama.

El criterio se basa en tratar la desviación estandar de la clase como una


medida de error de ese nodo y calcular la reducción esperada de error (stan-

53
dard deviation reduction) como resultado de probar cada atributo en ese
nodo.

X Ti
SDR = destd(T ) − × destd(Ti )
i T

donde T1 , T2 , . . . son los conjuntos que resultan de dividir al nodo de


acuerdo
qP al atributo seleccionado y destd es desviación estandar (destd =
n 2
Pn
i (x(i) − µ) /(n − 1), µ = i x(i)/n).

El proceso termina o cuando se tienen muy pocas instancias en el nodo o


cuando la desviación estandar es una pequeña fracción (5%) de la desviación
estandar original de los datos.

Cuando se usa un árbol de modelos para predecir el valor normalmente


se construyen modelos lineales en cada nodo interno del árbol para suavizar
discontinuidades en las hojas.

Los valores predichos se suavizan combinando los valores predichos en


cada nodo. El proceso de suavizamiento usa la siguiente fórmula:
np + kp
p′ =
n+k
donde p′ es el nuevo valor suavizado que se pasa al nodo de arriba, p es
la predicción del nodo de abajo, q es el valor que se obtiene con el modelo
asociado al nodo, n es el número de instancias asociadas al nodo de abajo y
k es una constante.

Para valores desconocidos se ajusta la fórmula de reducción esperada de


error.

Para construir y probar un modelo con un valor desconocido, se usan dos


técnicas:

• Se reemplaza el valor del atributo por el valor del atributo más fuerte-
mente correlacionado a él (surrogate splitting).
• Se utiliza el valor de la clase (para entrenamiento). Se cambia por el
valor promedio de los datos en ese nodo (para prueba).

54
Capı́tulo 3

Aprendizaje de Reglas

El aprendizaje de reglas normalmente produce resultados más fáciles de en-


tender.

Splitting vs. Covering

La estrategia básica de la construcción de árboles de decisión se basa en


splitting, esto es, dividir el conjunto de datos en subconjuntos considerando
un atributo seleccionado por una heurı́stica particular. Aqui se consideran
todas las clases dentro de la partición.

La idea básica es añadir atributos al árbol que se esta construyendo bus-


cando maximizar la separación entre las clases.

La estrategia utilizada para aprender reglas, está basada en covering, esto


es, encontrar condiciones de reglas (par atributo-valor) que cubra la mayor
cantidad de ejemplos de una clase, y la menor del resto de las clases. Se
considera el cubrir una sola clase.

La idea básica es añadir pruebas a cada regla que se esta construyendo


buscando maximizar covertura minimizando errores.

Las reglas pueden expresar disjunciones de manera más fácil que los
árboles. Por lo mismo, el extaer reglas directamente de árboles tiede a pro-

55
Tabla 3.1: Algoritmo de 1R

Para cada atributo


Para cada valor de cada atributo, crea una regla:
cuenta cuántas veces ocurre la clase
encuentra la clase más frecuente
asigna esa clase a la regla
Calcula el error de todas las reglas
Selecciona las reglas con el error más bajo

ducir reglas más complejas de lo necesario. Los árboles tienen lo que se


conoce como replicated subtree problem, ya que a veces repiten subárboles en
varios lados.

Por otro lado, si se quieren construir árboles a partir de reglas, no es


trivial y tiende a dejar árboles incompletos.

Las reglas tienden a preferirse con respecto a los árboles por tender a
representar “pedazos” de conocimiento relativamente independiente.

Listas de Decisión

• Normalmente los sistemas generan lo que se llaman listas de decisión


(decision lists) que son conjuntos de reglas que son evaluadas en orden.

• Esto facilita la evaluación, aunque disminuye su modularidad.

• El tener reglas que pueden ser evaluadas independientemente de su


orden, permite que existan más de una predicción para un solo ejemplo
y dificulta el producir un solo resultado.

3.1 1R

Vamos a ver primero un sistema muy simple (1R) que es el equivalente a un


decision stump, o árbol de decisión de un solo nivel.

56
Covering vs. Splitting

+ +
+ -
+ -
+ + -
Splitting - -
-
(ID3,CART) - +
- +
+

+ +
+ -
+ -
+ + -
Covering
(AQ,CN2) - -
-
- +
- +
+

Figura 3.1: Splitting vs. Covering.

• La idea es hacer reglas que prueban un solo par atributo-valor.

• Se prueban todos los pares atributo-valor y se selecciona el que ocasione


el menor número de errores.

• En el caso de la tabla 2.2 el número total de errores para el atributo


Ambiente es 4, para Temperatura es 5, para Humedad es 4 y para
Viento es 5.

• Se rompe arbitrariamente los empates y nos quedariamos con las sigu-


ientes reglas:

If Ambiente = soleado
Then Clase = N (cubre 5 y tiene 2 errores)
If Ambiente = nublado
Then Clase = P (cubre 4 y tiene 0 errores)
If Ambiente = lluvioso
Then Clase = P (cubre 5 y tiene 2 errores)

57
• Los valores faltantes en 1R se tratan como un nuevo valor y para los
atributos continuos se hace una división simple.

• Primero se ordenan los atributos con respecto a la clase (como lo vimos


con árboles de decisión).

• Se sugieren puntos de partición en cada lugar donde cambia la clase.

• Si existen dos clases diferentes con el mismo valor, se mueve el punto


de partición a un punto intermedio con el siguiente valor hacia arriba
o abajo dependiendo de donde está la clase mayoritaria.

• Un problema más serio es que el algoritmo tendrı́a a favorecer contruir


reglas para cada una de las particiones, lo cual le da una clasificación
perfecta (pero muy poca predicción futura).

• Lo que se hace es que se exige que cada partición tenga un número


mı́nimo de ejemplos de la clase mayoritaria.

• Cuando hay clases adyacentes con la misma clase mayoritaria, estas se


juntan.

Ejemplo:

64 65 68 69 70 71 72 72 75 75 80 81 83 85
P N P P P N N P P P N P P N

• Tomando los puntos intermedios serı́a: 64.5, 66.5, 70.5, 72, 77.5, 80.5
y 84.

• Considerando los ejemplos de diferente clase, podemos mover la fron-


tera de 72 a 73.5.

P N P P P N N P P P N P P N

• Si tomamos al menos 3 elementos por partición (en resultados experi-


mentales con varios dominios, este valor se fijo a 6):

58
P N P P P N N P P P N P P N

• Si juntamos clases con la misma clase mayoritaria, nos queda:

P N P P P N N P P P N P P N

• Lo cual nos darı́a una regla del tipo:

If Temperatura ≤ 77.5
Then Clase = P (cubre 10 y tiene 3 errores)

If Temperatura > 77.5


Then Clase = N (cubre 4 y tiene 2 errores)

• En la segunda regla se hizo una selección aleatoria, ya que se tenia un


empate.

3.2 PRISM

Es un algoritmo básico de aprendizaje de reglas que asume que no hay ruido


en los datos (ver table 3.2).

• Sea t el número de ejemplos cubiertos por la regla y p el número de


ejemplos positivos cubiertos por la regla.

• Lo que hace PRISM es añadir condiciones a reglas que maximicen la


relación p/t (relación entre ejemplos positivos cubiertos y ejemplos cu-
biertos en total) sea mayor.

• Este algoritmo, como va eliminando los ejemplos que va cubriendo cada


regla, las reglas que se construyen tienen que interpretarse en orden (las
nuevas reglas se diseñan solo para cubrir los casos que faltan).

59
If true [9+,5- ]
Then Clase = P
...
[6+,2- ]
If Viento=n [3+,4- ]
Then Clase=P If Humedad=alta
Then Clase=P
If Viento=si [6+,1- ]
Then Clase=P If Hum.=normal
[3+,3- ] Then Clase=P
...

If Hum.=normal
and Viento=no If Hum.=normal
Then Clase=P and Ambiente=lluvia
Then Clase=P

If Hum.=normal
and Viento=si [2+,0- ]
Then Clase=P If Hum.=normal
and Ambiente=soleado
Then Clase=P

Figura 3.2: Aprendizaje de Reglas

Tabla 3.2: Algoritmo de PRISM

Para cada clase C


Sea E = ejemplos de entrenamiento
Mientras E tenga ejemplos de clase C
Crea una regla R con LHS vacı́o y clase C
Until R es perfecta do
Para cada atributo A no incluido en R y cada valor v,
Considera añadir la condición A = v al LHS de R
Selecciona el par A = v que maximice p/t
(en caso de empates, selecciona la que tenga p mayor)
Añade A = v a R
Elimina de E los ejemplos cubiertos por R

60
Tabla 3.3: Ejemplos para construir reglas.
A1 A2 A3 A4 Clase
1 x triang a P
0 x circ a N
1 y cuadr a P
1 y triang b P
1 x cuadr b N
0 y circ a P
0 x traing b N
1 y circ a P

• Reglas que dependen del orden para su interpretación se conocen como


decision lists o listas de decisión.

• Reglas que no dependen del orden son más modulares, pero pueden
producir varias clasificaciones o no predecir nada.

• Con varias clasificaciones se puede seleccionar la regla que cubra más


ejemplos, y cuando no se tiene una clasificación, escoger la clase may-
oritaria.

• Las reglas ordenadas son en general más rápidas de producir ya que


van reduciendo el número de ejemplos a considerar.

3.2.1 Ejemplo

Consideremos la siguiente tabla (ver tabla 3.3).

Si empezamos con la clase P construimos todas las posibles combinaciones


de atributo valor y evaluamos su predicción sobre la clase P . Osea:

61
Tabla 3.4: Ejemplos que quedan después de eliminar los cubiertos por la
primera regla.
A1 A2 A3 A4 Clase
1 x triang a P
0 x circ a N
1 x cuadr b N
0 x traing b N

If A1 = 1 If A1 = 0 If A2 = x
Then Clase = P Then Clase = P Then Clase = P
4/5 1/3 1/4

If A2 = y If A3 = triang If A3 = circ
Then Clase = P Then Clase = P Then Clase = P
4/4 2/3 2/3

If A3 = cuadr If A4 = a If A4 = b
Then Clase = P Then Clase = P Then Clase = P
1/2 4/5 1/3

En este caso una regla es perfecta, (If A2 = y Then Clase = P) por lo que
esa seleccionamos y eliminamos todos los ejemplos que cubre (ver tabla 3.4).

Repetimos lo mismo con los ejemplos que quedan.


If A1 = 1 If A1 = 0 If A2 = x
Then Clase = P Then Clase = P Then Clase = P
1/2 0/2 1/4

If A3 = triang If A3 = circ If A3 = cuadr


Then Clase = P Then Clase = P Then Clase = P
1/2 0/1 0/1

If A4 = a If A4 = b
Then Clase = P Then Clase = P
1/2 0/2

En este caso, tenemos tres empates de 1/2 como valor máximo. Tomamos

62
uno al azar y construimos todas las posibles reglas añadiendole posibles pares
atributo-valor:
If A1 = 1 If A1 = 1 If A1 = 1
And A2 = x And A3 = triang And A3 = circ
Then Clase = P Then Clase = P Then Clase = P
1/2 1/1 0/0

If A1 = 1 If A1 = 1 If A1 = 1
And A3 = cuadr And A4 = a And A4 = b
Then Clase = P Then Clase = P Then Clase = P
0/1 1/1 0/1

De nuevo tenemos tres empates y tomamos uno aleatoriamente (el primero).

Las reglas entonces para la clase P son:


If A2 = y If A1 = 1 and A3 = triang
Then Clase = P Then Clase = P
Lo mismo hay que hacer para el resto de las clases.

Para la clase N unas posibles reglas son:


If A2 = x and A1 = 0 If A2 = x and A3 = cuadr
Then Clase = N Then Clase = N

3.3 Otros sistemas de reglas

AQ

Uno de los primeros sistemas de reglas fue AQ, desarrollado originalmente


por Michalski (79) (reimplementado y mejorado por otros autores, AQ11,
AQ15).

• Su salida es un conjunto de reglas de clasificación del tipo ‘if ... then


...’.
• La idea principal de este sistema era seleccionar, aleatoriamente un

63
ejemplo - semilla.

• Identificar el ejemplo de otra clase más cercano y especializar (añadir


condiciones atributo-valor) a la regla actual, para no cubrir ese ejemplo
negativo y tratar de cubrir a la mayor cantidad de ejemplos positivos.

Se exploran varias alternativas de reglas (beam-search). Algunas de las


heurı́sticas que se usaron para seleccionar la mejor regla son:

• Sumar los ejemplos positivos cubiertos y los negativos excluidos (en


caso de empate, preferir la más corta).

• Sumar el número de ejemplos clasificados correctamente dividido por


el número total de ejemplos cubiertos.

• Maximiza el número de ejemplos positivos cubiertos.

Una de sus principales desventajas es que es sensible a ejemplos con ruido


(i.e., si la semilla seleccionado tiene información errónea).

CN2

Un poco más adelante se propuso el sistema CN2 (Clark, Niblett, 88), con
la idea de atacar datos con ruido y evitar el sobreajuste que se encontraba
en sistemas como AQ.

Su contribución principal es la de quitar la dependencia de un ejemplo


especı́fico durante su búsqueda y forma la base de muchos de los algoritmos
de reglas actuales.

En CN2 se pueden especificar valores don’t-care y valores desconocidos y


sigue una búsqueda tipo beam-search.

La heurı́stica de búsqueda original que sigue es basada en entropı́a:


X
Entr = − pi log2 (pi )
i

donde pi es la distribución de las clases que cubre cada regla.

64
Se selecciona la regla de menor entropı́a, osea la regla que cubre muchos
ejemplos de 1 clase y pocos de las demás.

En una versión posterior usaron the Laplacian error estimate:


AccuracyA(n, nc , k) = (n − nc + k − 1)/(n + k)
donde:
n = número total de ejemplos cubiertos por la regla
nc = número de ejemplos positivos cubiertos por la regla
k = número de clases en el problema.

CN2 maneja también una medida de significancia para las reglas. El


usuario proporciona un lı́mite para la medida de significancia, abajo del cual
las reglas son rechazadas.

La medida está basada en la razón de verosimilitud (likelihood ratio statis-


tic) que mide una distancia entre dos distribuciones, definida por:
n
X fi
2 fi log( )
i=1 ei
donde:

• F = (f1 , . . . , fn ) es la distribución de frecuencias observada de ejemplos


dentro de las clases que satisfacen una regla dada (número de ejemplos
que satisfacen la regla entre el número total de ejemplos que satisface
la regla).
• E = (e1 , . . . , en ) es la frecuencia esperada del mismo número de ejemp-
los bajo la suposición de que la regla selecciona ejemplos aleatoriamente
(número de ejemplos cubiertos por la regla siguiendo la distribución de
ejemplos del total de los ejemplos).
• Entre más baja es la medida es más probable que la aparente regular-
idad expresada en la regla sea por casualidad.

Estas medidas, entropı́a y significancia determinan que reglas son buenas


(tienen alta precisión cuando predicen la clase mayoritaria cubierta) y con-
fiables (la alta precisión sobre datos de entrenamiento no se debe solo a
casualidad).

65
Medidas Alternativas de Selección:

• La más simple (que ya vimos), es la frecuencia relativa de ejemplos


positivos cubiertos. Tiene problemas con muestras pequeñas.

p p
m(R) = =
t p+n

t = número total de ejemplos cubiertos por la regla = p + n


p = número total de ejemplos positivos cubiertos por la regla

• Estimador Laplaciano (CN2). Asume una distribución uniforme de las


k clases (k = 2).

p+1
m(R) =
p+n+k

• Estimador m: considera que las distribuciones a priori de las clases


(Pa (C)), son independientes del número de clases y m es dependiente
del dominio (entre más ruido, se selecciona una m mayor).

p + m · Pa (C)
m(R) =
p+n+m

• Ganancia de información:

p P
log2 − log2
p+n P +N

donde P y N son los ejemplos cubiertos antes de que se añadiera la


nueva prueba

• Weighted relative accuracy:


p+n p P
wla = ( − )
P +N p+n P +N

66
Tabla 3.5: Algoritmo de podado de reglas.

Inicializa E al conjunto de ejemplos


Until E sea vacı́o do
Para cada clase C
Crea una regla perfecta para la clase C
Calcula la medida de probabilidad m(R) para la regla
y para la regla sin la última condición m(R−)
Mientras m(R−) < m(R), elimina la última condición
de la regla y repite el proceso
De las reglas generadas, selecciona aquella con m(R) menor
Elimina las instancias cubiertas por la regla

3.4 Valores desconocidos y numéricos

Con valores desconocidos, en un algoritmo de covering lo mejor es hacer


como si no aparecieran en ninguna condición (ignorarlos).

En este sentido, los algoritmos que aprenden decision lists tienen cierta
ventaja, ya que ejemplos que parecen difı́ciles al principio, se van quedando
y al final se pueden resolver, en general, más fácilmente.

Los atributos numéricos se pueden tratar igual que con los árboles.

Pruning:

Una forma de evaluar si una regla es buena es considerar la probabilidad


de que una regla aleatoria nos de resultados iguales o mejores que la regla a
considerar, basados en la mejora en ejemplos positivos cubiertos.

Idea: generar reglas que cubran puros ejemplos positivos. Esta regla
es probable que este sobre-especializada. Lo que se hace es que se elimina
el último término que se añadio y se verifica si esta regla es mejor a la
anterior (ver abajo). Este proceso se repite hasta que no existan mejoras
(ver tabla 3.5).

Este algoritmo no garantiza encontrar las mejores reglas por 3 razones

67
principales:

• (i) el algoritmo para construir las reglas, no necesariamente produce


las mejores reglas para ser reducidas,
• (ii) la reducción de reglas empieza con la última condición, y no nece-
sariamente es el mejor orden, y
• (iii) la reducción de reglas termina cuando cambia la estimación, lo
cual no garantiza que el seguir recortando pueda mejorar de nueva la
estimación.

Sin embargo, el procedimiento es bueno y rápido.

Medida de Evaluación para reducción de reglas:

Cuál es la probabilidad que de una regla seleccionada aleatoriamente con


la misma cantidad de ejemplos que cubre R tenga el mismo desempeño?

Esto es, una regla que cubra t casos, de los cuales i sean de la clase C
(sin reemplazo):
! !
P T −P
i t−i
P r(tC ) = !
T
t

Donde p es número de instancias de la clase que la regla selecciona, t es


el número total de instancias que cubre la regla, P es el número total de
instancias de la clase, y T es el número total de instancias.

Si queremos ver la probabilidad de que cubra p casos o más, entonces:

min(t,P )
X
m(R) = P r(tC )
i=p

Valores pequeños indican que la regla es buena, ya que es muy poco


probable que la regla sea construida por casualidad.

68
Como este es muy costoso de calcular, se pueden hacer aproximaciones.
Si el número de ejemplos es grande, la probabilidad de que exactamente i
ejemplos de los t sean de clase C (con reemplazo) es:

!
t P P
P r(tC ) = ( )i (1 − )t−i
i T T

que corresponde a una distribución binomial.

La función acumulada se puede aproximar a una función beta de la sigu-


iente forma:

t
!
X t P P
( )i (1 − )t−i = Iβ (p, t − p + 1)
i=p
i T T

Todo esto (simplificación de reglas) se puede hacer con un subconjunto


del conjunto de ejemplos de entrenamiento (reduced error pruning).

Variantes: IREP (Incremental REP) simplifica reglas cada vez que se


construyen usando:
p + (N − n)
P +N
Maximiza el número de ejemplos positivos cubiertos más el número de ejem-
plos negativos no cubiertos.

Sin embargo, le da la misma importancia a los ejemplos negativos no


cubiertos y los positivos cubiertos. Por lo que si una regla cubre 2000 (p)
de 3,000, osea que tiene 1,000 mal (n) es evaluada mejor que una regla que
cubre 1,000 (p) de 1,001 (n = 1).

Otra medida popular es:


p−n
p+n

Pero sufre de problemas parecidos.

RIPPER

69
Una variante que obtiene buenos resultados, es construir un conjunto
de reglas usando covering, reducirlas usando alguna heurı́stica como las de
arriba con un conjunto de entrenamiento separado, y luego “optimizar” al
mismo tiempo ese conjunto de reglas (RIPPER).

RIPPER utiliza varias medidas e ideas al mismo tiempo.

• Utiliza un conjunto de ejemplos separados para decidir podar reglas,

• utiliza ganancia de información para crecer las reglas,

• utiliza la medida de IREP para podar reglas, y

• utiliza una medida basada en MDL como criterio de paro para el con-
junto global de reglas.

Una vez que construye un conjunto inicial de reglas, toma una regla Ri
del conjunto total de reglas y la hace crecer (revision) y también hace crecer
una nueva regla desde el principio.

Al final se queda con la regla original o alguna de las otras dos (la que
hizo crecer o construyo desde cero) pero tomando en cuenta el error sobre el
conjunto total de las reglas.

Construir reglas usando árboles

Es posible crear reglas directamente de un árbol de decisión, sin embargo,


las reglas tienden a ser más complejas de lo necesario.

Se pueden utilizar los mecanismos planteaedos en la sección anterior para


ir podando las reglas.

Una alternativa es combinar una estrategia de covering con una de split-


ting.

Para construir una regla se construye un árbol podado (splitting) y la


hoja con la mejor covertura se transforma en una regla. Una vez construida
una regla se eliminan todos los ejemplos que cubre (covering) y se repite el
proceso.

70
En lugar de construir un árbol completo, se construyen árboles parciales,
expandiendo las hojas con mejores medidas de entropı́a.

Este esquema tiende a producir conjuntos de reglas simples con muy buen
desempeño.

Ripple-down rules

La idea es constuir primero las reglas que cubren la mayor cantidad de


casos y luego irlas afinando mediante excepciones.

Primero se toma la clase mayoritaria de entrada.

Todo lo que no se cumpla se toma como una excepción a esta.

Se busca la mejor regla (la que cubra más casos) de otra clase y se añade
como una excepción.

Esto divide de nuevo los datos en los que cumplen con esa nueva condición
y los que no cumplen.

Dentro de los que no cumplen de nuevo se busca la mejor regla de otra


clase y se añade como excepción, y ası́ sucesivamente hasta que se cubran
todos los casos.

Una de las ventajas de estas reglas es que la mayorı́a de los ejemplos


se cubren por las reglas de más alto nivel, y las de bajo nivel representan
realmente las excepciones.

Reglas que Consideran Relaciones

En los casos anteriores las reglas consideran la prueba de un atributo


contra una constante.

Estas son reglas proposicionales porque el lenguaje atributo-valor que


usamos para crear las reglas tiene el mismo poder que el cálculo proposicional.

Algunas veces requerimos reglas más expresivas para poder expresar rela-
ciones entre los ejemplos.

Por ejemplo, en el dominio de los objetos geométricos, podemos tener las


siguientes reglas proposicionales:

71
Tabla 3.6: Ejemplo de Ripple down rules.

Default: reprueba
excepto
Si estudia=si AND memoriza=no
Entonces pasa
excepto
Si copia=si AND descubren=si
Entonces reprueba
Else
Si estudia=no AND copia=si AND descubren=no
Entonces pasa
excepto
Si vecino-sabe=no
Entonces reprueba

If width >= 3.5 and weight < 7 then lying


If height >= 3.5 then standing

Sin embargo, si vemos varios ejemplos de este dominio, notamos que ”los
bloques con clase ”standing” (de pie) tienen más altura que anchura” y es
posible generar las reglas:

If width > heigh then lying


if height > width then standing

En este caso el valor particular de la altura y ancho ya no son importantes,


solo el resultado de su comparación.

A este tipo de reglas se les conoce como r elacionales porque expresan


relaciones entre atributos, en lugar de referirse a hechos sobre un atributo
como las proposicionales.

Otro dominio relacional es el de figuras geométricas para representar una


casa como un triángulo sobre un cuadrado, donde la forma de un objeto se
representa con un atributo, (vea la figura 3.3).

72
Figura 3.3: Ejemplo de Dominio Relacional.

Posteriormente veremos como trabajar con dominios relacionales al tratar


los temas:

• Inductive Logic Programming y

• Aprendizaje basado en Grafos

73
Capı́tulo 4

Reglas de Asociación

El objetivo de las reglas de asociación es encontrar asociaciones o correla-


ciones entre los elementos u objetos de bases de datos transaccionales, rela-
cionales o datawarehouses.

Las reglas de asociación tienen diversas aplicaciones como:

• Soporte para la toma de decisiones


• Diagnóstico y predicción de alarmas en telecomunicaciones
• Análisis de información de ventas
– Diseño de catálogos
– Distribución de mercancı́as en tiendas
– Segmentación de clientes en base a patrones de compra

Las reglas de asociación son parecidas a las reglas de clasificación.

Se encuentran también usando un procedimiento de covering. Sin em-


bargo, en el lado derecho de las reglas, puede aparecer cualquier par o pares
atributo-valor.

Para encontrar ese tipo de reglas se debe de considerar cada posible com-
binación de pares atributo-valor del lado derecho.

74
Tabla 4.1: Transacciones

Transacción Elementos Comprados


1 A,B,C
2 A,C
3 A,D
4 B,E,F

Para posteriormente podarlas usando covertura (número de instancias


predichas correctamente) y precisión (proporción de número de instancias a
las cuales aplica la regla).

Ejemplo: Encontrar las reglas de asociación X ⇒ Z de la tabla 4.1 con


la restriccón de cumplir con un mı́nimo de covertura y de precisión.

Las reglas con:

• Covertura mı́nima de 50%

• Precisión mı́nima de 50%

– A ⇒ C (50%, 66.6%)
– C ⇒ A (50%, 100%)

Una regla de asociación es una expresión de la forma X ⇒ Z donde X y


Z son conjuntos de elementos.

El significado intuitivo:

Las transacciones de la base de datos que contienen X tienden a contener


Z

4.1 Definiciones
• I = {i1 , i2 , i3 , . . . , im } ⇒ un conjunto de literales, atributos

75
• D ⇒ un conjunto de transacciones T , T ⊆ I
• T ID ⇒ un identificador asociado a cada transacción
• X ⇒ un conjunto de elementos X ∈ I
• Una regla de asociación es una implicación:
– X ⇒ Z, X ∈ I, Z ∈ I y X ∩ Z = ∅
• Soporte (o cobertura), s, es la probabilidad de que una transacción
contenga {X, Z}
• Confianza (o eficiencia), c, es la probabilidad condicional de que una
transacción que contenga {X} también contenga {Z}.

4.2 Evaluación de las Reglas

En minerı́a de datos con reglas de asociación en BD transaccionales evalu-


amos las reglas de acuerdo al soporte y la confianza de las mismas.

En reglas de asociación, la covertura se llama soporte (support) y la pre-


cisión se llama confianza (confidence).

Se pueden leer como:

soporte(X ⇒ Z) = P (X ∪ Z)

soporte(X ∪ Z)
confianza(X ⇒ Z) = P (Z|X) =
soporte(X)

En realidad estamos interesados únicamente en reglas que tienen mucho


soporte (soporte ≥ sop min y confianza ≥ conf min), por lo que buscamos
(independientemente de que lado aparezcan), pares atributo-valor que cubran
una gran cantidad de instancias.

A estos, se les llama item-sets y a cada par atributo-valor item.

76
Un ejemplo tı́pico de reglas de asociación es el análisis de la canasta de
mercado.

Básicamente, encontrar asociaciones entre los productos de los clientes,


las cuales pueden impactar a las estrategias mercadotécnicas.

Ya que tenemos todos los conjuntos, los transformamos en reglas con la


confianza mı́nima requerida.

Algunos items producen más de una regla y otros no producen ninguna.

Por ejemplo, si seguimos con los datos de la tabla 2.2, el itemset:

humedad=normal, viento=no, clase=P

Puede producir las siguientes posibles reglas:

If humedad=normal and viento=no Then clase=P 4/4


If humedad=normal and clase=P Then viento=no 4/6
If viento=no and clase=P Then humedad=normal 4/6
If humedad=normal Then viento=no and clase=P 4/7
If viento=no Then clase=P and humedad=normal 4/8
If clase=P Then viento=no and humedad=normal 4/9
If true Then humedad=normal and viento=no and clase=P 4/12

Si pensamos en 100% de éxito, entonces sólo la primera regla cumple.

De hecho existen 58 reglas considerando la tabla completa que cubren al


menos dos ejemplos con un 100% de exactitud (exaccuracy).

4.3 Algoritmo

El proceso es mas o menos el siguiente y sigue dos pasos (Apriori, Agrawal


et al. ’94):

77
Tabla 4.2: Algoritmo Apriori

Apriori()
L1 = find-frequent-1-itemsets(D)
for (k = 2; Lk−1 6= NULL; k++)
% generate-&-prune candidate k-itemsets
Ck = AprioriGen(Lk−1 )
forall transactions t ∈ D
Ct = subset(Ck , t)
forall candidates c ∈ Ct
c.count + +
Lk = {c ∈ Ck | c.count ≥ minsup}
Return ∪k Lk

1. Genera todos los items sets con un elemento. Usa estos para generar
los de dos elementos, y ası́ sucesivamente.
Se toman todos los posibles pares que cumplen con las medidas mı́nimas
de soporte. Esto permite ir eliminando posibles combinaciones ya que
no todas se tienen que considerar.

2. Genera las reglas revisando que cumplan con el criterio mı́nimo de


confianza.

En las tablas 4.2, 4.3, 4.4 y 4.5 se muestra el pseudocódigo del algoritmo
apriori.

Una observación interesante, es que si una conjunción de consecuentes de


una regla cumple con los nivels mı́nimos de soporte y confianza, sus subcon-
juntos (consecuentes) también los cumplen.

Por el contrario, si algún item no los cumple, no tiene caso considerar sus
superconjuntos.

Esto da una forma de ir construyendo reglas, con un solo consecuente, y


a partir de ellas construir de dos consecuentes y ası́ sucesivamente.

78
Tabla 4.3: Función Apriori Genera

AprioriGen(L) – Assume transactions in lexicographic order


insert into Ck all p.item1 , p.item2 , . . . , p.itemk−1 , q.itemk−1 from p, q ∈ L
where p.item1 = q.item1 , p.item2 = q.item2 , . . . , p.itemk−1 < q.itemk−1
%– Prune itemsets s.t. some (k-1)-subset of c is ∈ /L
%– A (k-1) itemset that is not frequent cannot be a subset of
%– a frequent k-itemset, then it is removed
forall itemsets c ∈ Ck
forall (k-1)-subsets s of c do
if(s ∈
/ Lk−1 ) then
delete c from Ck

Tabla 4.4: Función Reglas de Asociación

AssocRules()
forall large itemsets lk , k ≥ 2
GenRules(lk , lk )

Tabla 4.5: Función Genera Reglas

GenRules(lk , am ) –Generate all valid rules a → (lk − a), for all a ⊂ am


A = {(m − 1) − itemsets am−1 |am−1 ⊂ am }
forall am−1 ∈ A
conf = support(lk ) / support(am−1 )
if(conf ≥ min conf ) then
output rule am−1 → (lk − am−1 ) with confidence conf , support = support(lk )
if(m − 1 > 1) then
GenRules(lk , am−1 ) – Generate rules with subsets of am−1 as antecedents

79
Tabla 4.6: Datos de compras de productos.

id1 p1,p2,p5
id2 p2,p4
id3 p2,p3
id4 p1,p2,p4
id5 p1,p3
id6 p2,p3
id7 p1,p3
id8 p1,p2,p3,p5
id9 p1,p2,p3

Este método hace una pasada por la base de datos cada para cada con-
junto de items de diferente tamaño.

El esfuerzo computacional depende principalmente de la covertura mı́nima


requerida, y se lleva prácticamente todo en el primer paso.

El proceso de iteración del primer paso se llama level-wise y va con-


siderando los superconjuntos nivel por nivel.

Lo que se tiene es una propiedad anti-monótona: si un conjunto no pasa


una prueba, ninguno de sus superconjuntos la pasan.

Si un conjunto de items no pasa la prueba de soporte, ninguno de sus


superconjuntos la pasan. Esto se aprovecha en la construcción de candidatos
para no considerar todos.

Por ejemplo, consideremos la tabla 4.6 con listas de compras de productos.

La figura 4.1 muestra este proceso con los datos de la tabla anterior.

Una vez que tenemos los conjuntos de items, generar las reglas es relati-
vamente sencillo.

• Para cada conjunto l de items, genera todos sus subconjuntos.

80
1,2,3(2) 1,2,5(2)

1,2(4) 1,3(4) 1,5(2) 2,4(2) 3,4(0)


1,4(1) 2,3(4) 2,5(2) 3,5(1) 4,5(0)

1(6) 2(7) 3(6) 4(2) 5(2)

Figura 4.1: Generación de candidatos por niveles. El primer número indica


el producto y el número entre parétesis las veces que ocurre.

• Para cada subconjunto s ⊂ l, genera una regla: s ⇒ (l − s) si:

soporte(l)
≥ nivel confianza
soporte(s)

Todas las reglas satisfacen los niveles mı́nimos de soporte.

4.4 Algunas Mejoras

Se han hecho algunas mejoras al algoritmo básico de reglas de asociación


(Apriori) para hacerlo más eficiente:

• Usar tablas hash para reducir el tamaño de los candidatos de los item-
sets

• Eliminar transacciones (elementos en la base de datos) que no con-


tribuyan en superconjuntos a considerar

• Dividir las transacciones en particiones disjuntas, evaluar itemsets lo-


cales y luego, en base a sus resultados, estimar los globales.

81
• Hacer aproximaciones con muestreos en la lista de productos, para no
tener que leer todos los datos

• Evitar generar candidatos usando estructuras de datos alternativas,


como por ejemplo, los FP-trees (Frequent Pattern tree).

4.5 Algunas Extensiones

Dentro de las extensiones principales, podemos citar:

1. Encontrar reglas de asociación a diferentes niveles de abstracción.


Normalmente se empieza con las clases superiores, y los resultados
pueden servir para filtrar clases inferiores.
Por ejemplo, considerar reglas de asociación sobre computadoras e im-
presoras, y luego sobre laptops y estaciones de trabajo, por un lado, y
sobre impresoras laser y de punto por otro, etc.
Al proceder a las subclases se puede considerar:

• un criterio de soporte uniforme


• reduciendo el criterio para las subclases
• considerar todas las subclases independientemente del criterio de
soporte
• tomando en cuenta el criterio de soporte de una de las superclases
de un item o k superclases de k items
• considerar items aunque el nivel de soporte de sus padres no cum-
plan con el criterio de soporte, pero que sea mayor que un cierto
umbral.

Al encontrar reglas de asociación a diferentes niveles de abstracción es


común generar reglas redundantes o reglas que no nos dicen nada nuevo
(e.g., la regla más general, ya decia lo mismo), por lo que es necesario
incorporar mecanismos de filtrado.

82
2. Encontrar reglas de asociación combinando información de múltiples
tablas o reglas de asociación multidimensionales.
Los DataCubes pueden servir para encontrar reglas de asociación mul-
tidimensionales.

3. Las reglas de asociación, al igual que los árboles de decisión y las reglas
de clasificación que hemos visto, funcionan, en su forma original, con
atributos discretos.
Al igual que en las otras técnicas se han propuesto mecanismos para
manjejar atributos continuos.
Los enfoques más comunes son:

• Discretizar antes de minar en rangos usando posiblemente jer-


arquı́as predefinidas.
• Discretizar dinámicamente durante el proceso tratando de maxi-
mizar algún criterio de confianza o reducción de longitud de reglas.
Por ejemplo, ACRS (Association Rule Clustering System), mapea
atributos cuantitativos a una rejilla y luego utiliza clustering.
Primero asigna datos a “contenedores” delimitados por rangos
(que después pueden cambiar). Los esquemas más comunes son:
contendores del mismo tamaño, contenedores con el mismo número
de elementos, y contenedores con elementos uniformemente dis-
tribuidos.
Después se encuentran reglas de asociación utilizando los contene-
dores. Una vez que se tienen las reglas, éstas se agrupan si forman
rectángulos más grandes dentro de la rejilla.
• Discretizar utilizando información semántica, i.e., formar grupos
con elementos cercanos (posiblemente haciendo clustering sobre
los atributos). Una vez establecidos los clusters, encontrar las
reglas de asociación con esos clusters basados en distancias o sim-
ilaridades.

83
4.6 Asociación vs. Correlación

El que se encuentre una regla de asociación no necesariamente quiere decir


que sea útil.

Por ejemplo, si se analizan 10,000 compras, de las cuales 6,000 compraron


videojuegos, 7,500 videos y 4,000 las dos, posiblemente se genere una regla:
compra videojuegos => compra videos [soporte=4,000/10,000 = 40% y con-
fianza=4,000/6,000 = 66%].

Sin embargo, el 75% de los clientes compran videos por lo que el comprar
videojuegos reduce las posibilidades de comprar videos.

La ocurrencia de un itemset A es independiente de otro B si P (A ∩ B) =


P (A)P (B). En caso contrario, existe cierta dependencia o correlación.

La correlación entre dos eventos se define como:


P (A ∩ B)
corrA,B =
P (A)P (B)

Si es menor que 1, entonces la ocurrencia de uno decrece la ocurrencia


del otro. Si es 1 son independientes y si es mayor que 1 la ocurrencia de uno
favorece la ocurrencia de otro.

Con esto, se pueden encontrar reglas de asociación correlacionadas. Se


puede estimar si la correlación es estadı́sticamente significativa usando una
χ2 .

Si un conjunto de elementos está correlacionado, cualquier superconjunto


de este también lo está.

Esto puede ayudar a buscar los conjuntos mı́nimos correlacionados y con-


struir a partir de ahı́ sus superconjuntos.

Meta-Reglas

Las meta-reglas permiten especificar la forma de las reglas.

Podemos buscar por reglas de asociación que tengan formas especı́ficas:

84
Tabla 4.7: Reglas de Asociación vs. Reglas de Clasificación
Exploración de dependencias vs. Predicción enfocada
Diferentes combinaciones de vs. Predice un atributo (clase)
atributos dependientes e a partir de otros
independientes
Búsqueda completa (todas las vs. búsqueda heurı́stica (se encuentra
reglas encontradas) un subconjunto de reglas)

P1 (X, Y )ANDP2 (X, W ) ⇒ compra(X, libros de KDD)

donde Pi es un predicado variable que se instancia con algún atributo de


la base de datos, y las X, Y y W son posibles valores de los atributos.

Uso de restricciones

Se pueden usar restricciones sobre los tipos de datos, jerarquı́as, o formas


posibles de las reglas a encontrar para reducir el espacio de búsqueda.

Las restricciones pueden ser:

• (i) antimonótonas (si un conjunto no satisface una condición, entonces


tampoco la satisfacen sus superconjuntos),

• (ii) monótonas (si un conjunto satisface una restricción, entonces también


la satisfacen todos sus superconjuntos),

• (iii) suscintas (succint) (podemos enumerar todos los conjuntos que


satisfacen una restricción), (iv) convertibles (podemos converir una re-
stricción a alguna de las clases anteriores), y (v) no convertibles.

Reglas de Asociación, de Clasificación y Árboles de Decisión.

La tabla 4.7 muestra una comparación entre reglas de asociación y de


clasificación.

Los árboles usan heurı́stica de evaluación sobre un atributo, estan basados


en splitting, y normalmente realizan sobreajuste seguido de podado.

Las reglas de clasificación utilizan una heurı́stica de evaluación de condición

85
(par atributo-valor), estan basados en covering, y utilizan sobre todo criterios
de paro (y a veces sobreajuste y podado).

Las reglas de asociación se basan en medidas de confianza y soporte,


consideran cualquier conjunto de atributos con cualquier otro conjunto de
atributos.

86
Capı́tulo 5

Evaluación

En muchas ocasiones requerimos hacer una evaluación muy precisa de nue-


stros algoritmos de aprendizaje computacional porque los vamos a utilizar en
algún tipo de aplicación que ası́ lo requiere. Algunos ejemplos de este tipo
de aplicaciones son:

• Aplicaciones de apoyo al diagnóstico médico.

• Identificación de objetos amigos y enemigos.

• Identificación de zonas afectadas por un desastre natural.

Algunas otras veces diseñamos un algoritmo y queremos probar qué tan


bueno es. Para esto, lo queremos comparar con otros algoritmos que ya
han demostrado ser buenos y en el mejor de los casos que nuestro algoritmo
obtenga precisiones superiores a las de aquel otro algoritmo.

Lo anterior se refiere a:

• Calcular la tasa de error esperado de un algoritmo de clasificación.

• Comparar las tasas de error esperado de dos algoritmos de clasificación


para poder decir cuál es mejor.

87
Necesitamos saber si la diferencia en precisión de los algoritmos es signi-
ficativa o no lo es.

Estos son algunos ejemplos de porqué necesitamos evaluar o comparar al-


goritmos de aprendizaje computacional. A continuación veremos como hacer
esta evaluación.

Es importante señalar que evaluar una hipótesis cuando contamos con un


conjunto de datos grande no es problemático, sin embargo, cuando tenemos
pocos datos tenemos dos dificultades principales.

• Sesgo en la estimación.
– La precisión observada en la muestra no es un buen estimador de
la precisión sobre futuras instancias.
– El estimador será optimista, más aún cuando se tiene un espacio
de hipótesis grande y hay un sobreajuste de los datos.
– Es por esto que probamos con datos que no usamos para entrenar.
• Varianza en la estimación.
– Aún cuando la precisión de la hipótesis se mide con un conjunto de
prueba independiente del conjunto de entrenamiento, la precisión
medida puede variar de la precisión verdadera y esto depende de
los ejemplos de prueba utilizados.
– Mientras más pequeña es la muestra, más grande es la varianza
esperada.

Recordemos también que la evaluación de hipótesis es parte del proceso de


aprendizaje en varios métodos.

• Post-pruning en árboles de decisión para evitar el sobre-ajuste

5.1 Estimando la Precisión de Hipótesis

Queremos evaluar la precisión de la hipótesis para nuevas instancias. Además


queremos saber cuál es el error probable en la estimación de esta

88
precisión.

Recordando el Problema de Aprendizaje:

• Dado un espacio de posibles instancias X sobre el que podemos definir


diferentes funciones objetivo X → toda la gente
• Asumimos que diferentes instancias de X se pueden encontrar con difer-
entes frecuencias más gente de 20 años que de 90
• Para modelar esto asumimos que hay alguna distribución de proba-
bilidad D que define la probabilidad de encontrar cada instancia en
X
• D no dice nada respecto a la clase del ejemplo, sólo determina la prob-
abilidad de encontrarlo
• La tarea de aprendizaje consiste en aprender el concepto objetivo (o
función objetivo) f considerando un espacio H de posibles hipótesis.
• Tomamos ejemplos de entrenamiento bajo la distribución D (atributos
y clase).

5.1.1 Error de Muestra y Error Verdadero

En esta sección queremos contestar estas preguntas:

• Dada una hipótesis h y una muestra de datos con n ejemplos tomados


aleatoriamente siguiendo la distribución de probabilidad D, Cuál es el
mejor estimado de la precisión de h sobre instancias futuras tomadas
con la misma distribución?
• Cuál es el error probable en este estimado de precisión?

Necesitamos entender dos nociones de precisión o error:

• Tasa de error de la hipótesis sobre la muestra disponible, que es lo que


podemos calcular

89
• Tasa de error de la hipótesis sobre toda la distribución desconocida D
de ejemplos, que es lo que quisiéramos calcular

El error de muestra para la hipótesis h con respecto a la función f se


define como:

1 P
• errorS (h) = n
δ(f (x), h(x))
x∈S

• n es el número de ejemplos en S
• δ(f (x), h(x)) es 1 si f (x) 6= h(x) y 0 de otro modo

El error verdadero de una hipótesis es la probabilidad de que se equiv-


oque para una instancia tomada aleatoriamente con la distribución D y se
define como:

• errorD (h) ≡ P rx∈D [f (x) 6= h(x)]


• P rx∈D denota que la probabilidad se toma sobre la instancia de dis-
tribución D

Lo que quisieramos conocer es el error verdadero errorD (h) de la hipótesis.


Sin embargo, lo que podemos medir es el error de muestra errorS (h) porque
sólo tenemos una muestra de los datos disponible.

Ahora surge la pregunta:

• Qué tan buen estimador es errorS (h) de errorD (h)?

Para saberlo, vamos a utilizar el concepto de intervalos de confianza prue-


bas de hipótesis.

5.1.2 Intervalos de Confianza para Hipótesis con Val-


ores Discretos
• Dada una hipótesis con valores discretos

90
• Queremos estimar el error verdadero para una hipótesis h basándonos
en el error sobre la muestra S

• La muestra S tiene n ejemplos, tomados cada uno independientemente


de h, de acuerdo a D

• n > 30
r
• h tiene r errores sobre los n ejemplos errorS (h) = n

Utilizando teorı́a estadı́stica podemos establecer lo siguiente

• Dado que no tenemos más información, el valor más probable para


errorD (h) es errorS (h)

• Con aproximadamente 95% de q probabilidad, el error errorD (h) cae en


el intervalo errorS (h) ± 1.96 errorS (h)(1−error
n
S (h))

Ahora podemos saber el intervalo en el que caerá el error de muestra


calculado.

Ejemplo

• Dada la muestra de datos S

• n = 40 ejemplos

• La hipótesis h comete r = 12 errores sobre estos datos


12
• errorS (h) = 40
= 0.30

• Sabemos que éste no es un estimador perfecto del eror verdadero

• Si probamos con otra muestra el error podrı́a variar un poco

• Estas diferencias se deben a las diferencias entre las muestras

• Si repetimos el experimento muchas veces, encontrarı́amos que el 95%


de las veces el error verdadero cae en el intervalo de confianza

91
• Por eso se llama el intervalo estimado del 95% de confianza para errorD (h)
• El intervalo es 0.30 ±(1.96×0.07)=0.30 ± 0.14.

La
q fórmula general para calcular intervalos de confianza es: errorS (h) ±
errorS (h)(1−errorS (h))
ZN n

Los valores de ZN para intervalos de confianza de dos-lados N% son:

Confidence level N% 50% 68% 80% 90% 95% 98% 99%


Constant ZN 0.67 1.00 1.28 1.64 1.96 2.33 2.58

Tabla 5.1: Valores de ZN

• Usamos esta fórmula para calcular los intervalos de confianza para es-
timados de errorS (h)
• Recordemos que se utiliza para hipótesis con valores discretos
• Asumimos que la muestra S se toma aleatoriamente utilizando la misma
distribución con que se tomarán futuros ejemplos
• Asumimos que los datos son independientes de la hipótesis que estamos
probando
• Proporciona sólo una aproximación buena para más de 30 ejemplos y
si errorS (h) no esta tan cerca de 0 o 1.
• Otra regla para saber si la aproximación sera buena es: n errorS (h)(1−
errorS (h)) ≥ 5

5.2 Método General para Derivar Intervalos


de Confianza

Podemos ver de manera general el problema de estimar la media (valor es-


perado) de una población con base a la media de una muestra tomada aleato-
riamente de tamaño n.

92
1. Identificar el parámetro de la población p a estimar, por ejemplo:
errorD (h)

2. Definir el estimador Y , por ejemplo errorS (h). Es deseable elegir un


estimador de mı́nima varianza y sin sesgos.

3. Determinar la distribución de probabilidad DY que gobierna al esti-


mador Y , incluyendo su media y varianza.

4. Determinar el intervalo de confianza N% para encontrar los umbrales


L y U tal que N% de la masa de la distribución de probabilidad DY
cae entre L y U

5.2.1 Teorema del Lı́mite Central

El teorema del lı́mite central simplifica el cálculo de intervalos de confianza.

• Dados n valores de variables aleatorias independientes Y1 , ..., Yn que


siguen la misma distribución de probabilidad.

• µ denota la media de la distribución que gobierna cada Yi y σ su


desviación estandar.

• Decimos que las variables Yi son variables aleatorias independientes e


idénticamente distribuı́das porque describen experimentos independi-
entes, y cada uno sigue la misma distribución de probabilidad.

• Para estimar µ de la distribución que gobierna Yi utilizamos la media


de la muestra

• Y¯n ≡ ni=1 Yi .
P

• El teorema del lı́mite central dice que la distribución de probabilidad


que gobierna Y¯n se aproxima a una distribución Normal conforme n →
∞, sin importar la distribución que gobierna a las variables aleatorias
en cuestión Yi . Más aún, la media de Y¯n se aproxima a µ y la desviación
estandar a √σn .

93
– Si definimos un estimador que es la media de una muestra (como
errorS (h)), la distribución que gobierna este estimador se puede
aproximar con una distribución Normal para una n suficiente-
mente grande
– Si conocemos también la varianza, podemos usar la ecuación µ ±
zN σ para calcular el intervalo de confianza
– Comunmente utilizamos como regla que podemos utilizar una
aproximación Normal cuando n ≥ 30

5.3 Diferencia en Error de Dos Hipótesis


• Si tenemos dos hipótesis h1 y h2 para una función objetivo con valores
discretos.

• Tenemos que h1 se probó con S1 que tiene n1 ejemplos aleatorios

• Tenemos que h2 se probó con S2 que tiene n2 ejemplos aleatorios toma-


dos con la misma distribución

• Queremos estimar la diferencia d entre los errores verdaderos de las dos


hipótesis d ≡ errorD (h1 ) − errorD (h2 )

Utilizando el procedimiento general para obtener intervalos de confianza:

• Identificamos a d como el parámetro a estimar

• Ahora definimos el estimador: la diferencia entre los errores de muestra


dˆ ≡ errorS1 (h1 ) − errorS2 (h2 )

• Se puede probar que dˆ es un estimador no sesgado de d

• Para n1 , n2 ≥ 30, errorS1 (h1 ) y errorS2 (h2 ) siguen distribuciones que


se aproximan a la Normal

• La diferencia de 2 distribuciones Normal también es una distribución


Normal, dˆ seguira una Normal con media d

94
• La varianza de la distribución es la suma de las varianzas de la dis-
tribuciones errorS1 (h1 ) y errorS2 (h2 )
errorS1 (h1 )(1−errorS1 (h1 ))
• La aproximación de la varianza de las distribuciones es: σd2ˆ ≈ n1
+
errorS2 (h2 )(1−errorS2 (h2 ))
n2

• Ya determinamos la distribución de probabilidad que gobierna al esti-


mador dˆ

• Ahora generamos el intervalo de confianza Para una variable aleatoria


dˆ que sigue una distribución Normal con media µ y varianza σ 2 el
estimado del intervalo de confianza N% para d es dˆ ± zN σ

• Utilizando la varianza estimada σd2ˆ, el intervalo de confianza para d es:


r
errorS1 (h1 )(1−errorS1 (h1 )) errorS2 (h2 )(1−errorS2 (h2 ))
• dˆ ± zN n1
+ n2

• También es válido utilizar la misma muestra para probar, es decir; que


h1 y h2 se prueben con la misma muestra S y S es independiente de h1
y h2 , entonces dˆ ≡ errorS (h1 ) − errorS (h2 )

5.3.1 Pruebas de Hipótesis


• Cuando queremos probar que una conjetura en especı́fico es cierta en
lugar de calcular un intervalo de confianza

• Cuál es la probabilidad de que errorD (h1 ) > errorD (h2 )?

• Podemos medir la diferencia de error errorS1 (h1 ) = 0.30


errorS2 (h2 ) = 0.20
dˆ = 0.1

• Note que es posible que observemos esta diferencia aún cuando errorD (h1 ) ≤
errorD (h2 ) debido a la variación aleatoria en los datos de la muestra

• La pregunta entonces es: Cuál es la probabilidad de que errorD (h1 ) >


errorD (h2 ), dado que observamos la diferencia en errores de muestra
dˆ = 0.1? Dicho de otra manera, cuál es la probabilidad de que d > 0
dado que observamos dˆ = 0.1?

95
• P r(d > 0) es la probabilidad de que dˆ no sobre-estime d en más de 0.1,
esto es lo mismo que la probabilidad de que dˆ caiga en el intervalo de
un solo lado dˆ < d + 0.1 y esto se puede expresar como dˆ < σdˆ + 0.1

• Podemos determinar la probabilidad de que dˆ caiga en este intervalo


de un solo lado calculando probabilidad de masa de la distribución dˆ
dentro de este intervalo

• Re-expresamos el intervalo dˆ < µdˆ + 0.1 en términos del número de


desviaciones estandar que permite desviarse de la media, σdˆ ≈ 0.061

• El intervalo se re-expresa como dˆ < µdˆ + 1.64σdˆ

• Cuál es el nivel de confianza asociado con este intervalo de un lado para


una distribución Normal?

• Consultamos la tabla 5.1 y vemos que 1.64 desviaciones estandar de la


media corresponde a un intervalo de dos lados con un nivel de confi-
anza de 90%. Esto corresponde a un nivel de confianza del 95% en un
intervalo de un lado.
ˆ la probabilidad de que errorD (h1 ) > errorD (h2 ) es aprox.
• Dado 0.1,
0.95

• En términos estadı́sticos decimos que aceptamos la hipótesis de que


errorD (h1 ) > errorD (h2 ) con una confianza de 0.95

• También podemos decir que rechazamos la hipótesis opuesta (o nula)


con un nivel de significancia de (1 - 0.95) = 0.05.

5.4 Comparando Algoritmos de Aprendizaje

Muchas veces queremos comparar dos algoritmos de aprendizaje LA y LB en


lugar de dos hipótesis en especı́fico. Cómo determinamos que la diferencia
observada entre los algoritmos es estadı́sticamente significativa?

• Iniciamos especificando el parámetro que deseamos estimar

96
• Queremos determinar cual de LA y LB es mejor método en promedio
para una función objetivo particular f
• Para definir en promedio consideramos la precisión relativa de los al-
goritmos promediada sobre todos los conjuntos de tamaño n que se
puedan tomar de la instancia de distribución D
• En otras palabras queremos determinar el valor esperado de la diferen-
cia de errores ES⊂D [errorD (LA (S)) − errorD (LB (S))]
• L(S) es la hipótesis de salida del algoritmo L dada la muestra S de
datos de entrenamiento y S ⊂ D significa que el valor esperado se
toma sobre las muestras S tomadas bajo la instancia de distribución D
• Pero en la práctica la muestra es de tamaño limitado D0
• En este caso dividimos los datos en conjuntos disjuntos de entrenamiento
S0 y prueba T0
• Usamos S0 para entrenar y T0 para comparar la precisión
• Medimos la cantidad errorT0 (LA (S0 )) − errorT0 (LB (S0 ))
• Para obtener una mejor medida, podemos particionar repetidamente
https://www.bancomer.com/acceso/perfila.asp el conjunto D0 en con-
juntos disjuntos de entrenamiento y prueba y calcular la media de los
errores del conjunto de prueba para todos los experimentos
• Esto es lo que conocemos como el k-fold cross validation que usamos
cuando tenemos al menos 30 ejemplos de entrenamiento
k
P
1
• Obtenemos δ̂ ≡ k
δi
i=1
δ̂ ← errorTi (hA ) − errorTi (hB )

• Entonces δ̂ estima ES⊂D0 [errorD (LA (S)) − errorD (LB (S))]


k−1
• S representa una muestra aleatoria de tamaño k
|D0 | tomada uni-
formemente de D0
• En esta expresión se toma el valor esperado sobre subconjuntos de los
datos disponibles D0 en lugar de sobre todos los subconjuntos tomados
de toda la instancia de distribución D

97
• El intervalo de confianza aproximado del N% para estimar ES⊂D0 [errorD (LA (S))−
errorD (LB (S))] usando δ̂ esta dado por:
δ̂ ± tN,k−1 S δ̂

• donde tN,k−1 es una constante análoga a zN

• sδ̂ es s
un estimado de la desviación estandar que gobierna δ̂
k
P
1
sδ̂ ≡ k(k−1)
(δi − δ̂)2
i=1

• tN,k−1 tiene dos sub-ı́ndices, el primero indica el nivel de confianza y el


segundo los grados de libertad, denotado por v

• v se refiere al número de eventos aleatorios independientes que tienen


que ver para producir el valor para la variable aleatoria δ̂, en este caso
k−1

• Conforme k → ∞, el valor de tN,k−1 se acerca a la constante zN

• Note que las muestras con que probamos a los 2 algoritmos son idénticas,
a estas pruebas se les llama apareadas

• Puebas apareadas producen intervalos de confianza más ajustados porque


las diferencias en errores se deben a los algoritmos y no a las diferencias
de las muestras que se dan cuando no usamos muestras idénticas para
los algoritmos

• Esta es la prueba t apareada, en la tabla 5.2 se muestran los valores


para tN,v .

• La prueba t, t-test, utilizada para comparar las diferencias de resultados


para dos grupos, verifica la diferencia entre las medias en relación con
que tanto varı́an los resultados individuales

Valores de tN,v para intervalos de confianza de dos lados:

5.4.1 Evaluación de Significancia con t-test

El proceso para evaluar significancia estadı́stica con t-test es:

98
Confidence level
90% 95% 98% 99%
v=2 2.92 4.30 6.96 9.92
v=5 2.02 2.57 3.36 4.03
v=10 1.81 2.23 2.76 3.17
v=20 1.72 2.09 2.53 2.84
v=30 1.70 2.04 2.46 2.75
v=120 1.66 1.98 2.36 2.62
v = ∞ 1.64 1.96 2.33 2.58
Tabla 5.2: Valores de tN,v

dife ntrem edias δ̂


• Obtener el valor t, como la razón variabilidade ne xperimentos
= sδ̂

• Calcular los grados de libertad (DF = N-1)

• Elegir el nivel de α, (o nivel de riesgo), que generalmente se elige 0.05


(cinco veces de un total de cien se encontrará una diferencia significativa
entre las medias aún cuando no la hay (la diferencia resultante fue
producto de la suerte).

• Verificar en la tabla el valor crı́tico de t. Si el valor observado es mayor


que el valor crı́tico, entonces se rechaza la hipótesis nula. Si el valor
observado es menor que el valor crı́tico, entonces no se puede rechazar
la hipótesis nula. Si la tabla no tiene el número de grados de libertad,
se usa el siguiente número menor al real (para 32 usar 30).

Ejemplo Suponga que se realizó una prueba de 10-FCV con dos clasificadores
y queremos saber si la diferencia entre sus promedios es significativa.

Para estos datos tenemos los siguientes cálculos:

• La diferencia de error medio, δ̂ = 4.30.

• La variabilidad entre experimentos, Sδ̂ = 0.42

• El valor de t calculado es, t = 10.17

99
Prueba ALG-1 ALG-2
1 88 85
2 85 80
3 93 87
4 87 82
5 89 85
6 85 82
7 87 83
8 84 79
9 86 80
10 88 86

Tabla 5.3: Valores de Precisión para los Algoritmos ALG-1 y ALG-2

• El valor crı́tico encontrado en la tabla para 95% de confianza con 9


grados de libertad es aprox. de tN,v = 2.3

• Como el valor observado es mayor que el criı́tico, entonces se rechaza


la hipótesis nula

• La hipótesis nula dice que no hay diferencia entre las medias

• Por tanto, al rechazar la hipótesis nula, se concluye que sı́ hay una
diferencia significativa entre las medias.

• En caso de que el valor observado fuera menor al crı́tico, no se podrı́a


rechazar la hipótesis nula y entonces se concluirı́a que no hay diferencia
significativa entre las medias.

5.4.2 Análisis de Varianza

ANalysis Of VAriance (ANOVA)

• A esta prueba también se le conoce como la prueba f-test y esta rela-


cionada con la t-test

• La prueba t-test mide la diferencia entre las medias de 2 grupos

100
• ANOVA prueba la diferencia entre las medias de 2 o más grupos

• La ANOVA de 1-lado ó de factor simple prueba la diferencia entre


grupos que se clasifican solo sobre una variable independiente

• También hay una prueba ANOVA para múltiples variables independi-


entes

• La ANOVA tiene como ventaja sobre la t-test que reduce la probabili-


dad de un error tipo 1, hay muchas comparaciones entre 2 grupos

• La desventaja de ANOVA es que se pierde especificidad porque F dice


que hay diferencia significante entre grupos pero no dice cuáles grupos
son significativamente diferentes entre sı́

• La hipótesis nula asume que no hay diferencia real entre grupos y


cualquier diferencia (estadı́stica) se debe a errores de muestreo. Un
investigador trata de probar que ésto no es cierto

• Un error de tipo 1 ocurre cuando el investigador rechaza la hipótesis


nula aún cuando era cierta

5.4.3 Receiver Operating Characteristics (ROC) Anal-


ysis

101
Capı́tulo 6

Programación Lógica Inductiva


(ILP)

6.1 Nociones de Lógica

Importante: que las cosas que queremos que sean verdaderas coicidan con las
que podemos probar.

Osea: lo que nos implica la teorı́a es lo que podemos computar.

Caracterı́sticas:

• sintáxis y semántica bien definidas

• reglas de inferencia

Un alfabeto consiste de variables (aquı́ la primera letra en mayúscula),


sı́mbolos de predicados y de funciones (la primera letra en minúscula).

Términos = Funciones (sı́mbolo funcional + argumentos) y Variables.

Un predicado (sı́mbolo + argumentos) es una fórmula atómica o simple-


mente un átomo.

102
Axiomas
Pruebas Modelos

deriva interpreta

Teoremas Valores de
Verdad

Figura 6.1: Las dos caras de la Lógica.

válido inválido

siempre cierto a veces T o F siempre falso

satisfacible insatisfacible

Una fórmula G se dice que es una consequencia lógica de un conjunto


de fórmulas F = {F1 , . . . , Fn }, N ≥ 1, denotado por F |= G si para cada
interpretación w para la cual w(F1 ∧F2 ∧. . . Fn ) = true, entonces w(G) = true

Satisfacibilidad, valides, equivalencia y consecuencia lógica son nociones


semánticas (generalmente establecidas por medio de tablas de verdad).

Para derivar consecuencias lógicas también se pueden hacer por medio de


operaciones exclusivamente sintáctivas (e.g., modus ponens, modus tollens).

Las cláusulas, son la forma utilizada en prueba de teoremas y progra-


mación lógica.

Una literal: un átomo o su negación

Una clásula: es una fórmula cerrada de la forma:


∀X1 . . . ∀Xs (L1 ∨ . . . ∨ Lm )
donde cada Li es una literal y las Xi son todas las variables que aparecen en

103
las literales.

Equivalencias:

∀x1 . . . ∀xs (A1 ∨ . . . An ∨ ¬B1 . . . ∨ ¬Bm ) ≡

∀x1 . . . ∀xs (B1 ∧ . . . ∧ Bm → A1 ∨ . . . An )

Se escribe normalmente como:

A1 , . . . , An ← B1 , . . . Bm

Una cláusula de Horn: a lo más una literal positiva.

A←
← B1 , . . . , Bn
A ← B1 , . . . , Bn

Una cláusula definitiva (definite clause) es una cláusula con una literal
positiva (A ← o A ← B1 , . . . , Bn ).

Razonamiento en lógica: reglas de inferencia

Estas reglas solo hacen manipulación sintáctica (son formas procedu-


rales).

Lo interesante es ver como las formas procedurales semánticas están rela-


cionadas con las sintácticas.

Una regla de inferencia es robusta/válida (sound) si S ⊢ F entonces S |=


F.

Osea una colección de reglas de inferencia es válida si preserva la noción


de verdad bajo las operaciones de derivación.

Una regla de inferencia es completa (complete) si S |= F entonces S ⊢ F .

Resolución

104
v <- w w

u<- v v

u
Figura 6.2: Un árbol de derivación proposicional.

Resolución solo sirve para fórmulas en forma de cláusulas.

Idea: prueba por refutación

Para probar: P ⊢ Q, hacer W = P ∪ {¬Q} y probar que W es insatis-


facible

Ejemplo sencillo:

Sean C1 y C2 dos cláusulas con literales L1 y L2 (donde L1 y L2 son


complementarias). La resolución de C1 y C2 produce: C = C1′ ∪ C2′ donde:
C1′ = C1 − {L1 } y C2′ = C2 − {L2 } (eliminando literales redundantes)

Para lógica de primer orden: substitución y unificación.

Una substitución Θ = {X1 /t1 , . . . , Xk /tk } es una función de variables a


términos. La aplicación W Θ de una substitución Θ a una wff W se obtiene
al reemplazar todas las ocurrencias de cada variable Xj por el mismo término
tj .

Al aplicar una substitución a una wff se genera una nueva expresión (una
instancia).

Una substitución σ es un unificador de un conjunto de expresiones {E1 , . . . , Em }


si E1 σ = . . . = Em σ

105
hija(X,Y) <- femenino(X),
fememino(ana). padre(Y,X).

1={X/ana}

padre(juan,ana). hija(ana,Y) <- padre(Y,ana).

={Y/juan}
2

hija(ana,juan).
Figura 6.3: Un árbol de derivación lineal de primer orden.

Un unificador θ, es el unificador más general (mgu) de un conjunto de


expresiones E, si para cada unificador σ de E, existe una substitución λ tal
que σ = θλ

Para hacer resolución en lógica de primer orden tenemos que comparar si


dos literales complementarias unifican. El algoritmo de unificación construye
un mgu de un conjunto de expresiones.

Sean C1 y C2 dos cláusulas con literales L1 y L2 respectivamente. Si L1 y


¬L2 tienen un mgu σ, el resolvente de C1 y C2 es la cláusula: (C1 σ −{L1 σ})∪
(C2 σ − {L2 σ}) (ver figura 6.3).

El algoritmo de unificación no es determinı́stico (se pueden seleccionar


las cláusulas de varias formas).

Existen diferentes estrategias de resolución, e.g., semántica, lineal, SLD,


etc., para restringir el número de posibles cláusulas redundantes.

Resolución SLD

Seleccionar una literal, usando una estrategia Lineal, restringido a cláusulas


Definitivas.

Resolución lineal:

106
• El último resolvente se toma como cláusula padre.

• La otra cláusula padre se toma de otro resolvente o del conjunto origi-


nal.

Una forma especial de resolución lineal es: input resolution. En esta es-
trategia, cada paso de resolución, exceptuando el primero, se toma del último
resolvente (cláusulas metas) y del conjunto original (cláusulas de entrada).

Input resolution es completa para cláusulas de Horn, pero no para cláusulas


en general.

Una variante de input resolution es resolución SLD para cláusulas de


Horn. Resolución de entrada se extiende con una regla de selección que
determina en cada paso que literal de la cláusula meta es seleccionada.

La estrategia de búsqueda afecta el resultado.

Aunque resolución SLD es sound y refutation complete para cláusulas de


Horn, en la práctica (por razones de eficiencia) se hacen simplificaciones:

• eliminar el “occur check” de unificación

• usar un orden especı́fico

Esto es lo que usa básicamente PROLOG

6.2 Programación Lógica Inductiva (ILP)

Dentro de los algoritmos de aprendizaje computacional más exitosos, se en-


cuentran los que inducen árboles de decisión (v.g., C4.5) o reglas de clasifi-
cación (v.g., CN2), sin embargo, su lenguaje de representación o expresividad
es escencialmente proposicional.

Esto es, cada prueba que se hace sobre un atributo en un árbol o en una
condición de una regla se puede ver como una proposición. Por lo mismo,
hablan de un solo objeto a la vez y no podemos relacionar propiedades de

107
dos o más objetos a menos que definamos una propiedad que exprese esa
relación para todos los objetos de nuestro dominio.

La Programación Lógica Inductiva o ILP (Inductive Logic Programming)


combina los resultados experimentales y métodos inductivos del aprendizaje
computacional con el poder de representación y formalismo de la lógica de
primer orden para poder inducir conceptos representados por programas
lógicos.

Para entender las ventajas que tiene aprender representaciones relaciones,


supongamos que queremos aprender (y por lo tanto representar con nuestro
sistema de aprendizaje) los movimientos de una torre en ajedrez. Si asumi-
mos que representamos los movimientos de las piezas de ajedrez con cuatro
atributos, col1, ren1, col2 y ren2, representando la columna y renglón de una
pieza antes y después del movimiento, un sistema proposicional aprenderı́a
algo parecido a esto:

If col1 = 1 and col2 = 1 Then mov torre = true


If col1 = 2 and col2 = 2 Then mov torre = true
...
If col1 = 8 and col2 = 8 Then mov torre = true
If ren1 = 1 and ren2 = 1 Then mov torre = true
If ren1 = 2 and ren2 = 2 Then mov torre = true
...
If ren1 = 8 and ren2 = 8 Then mov torre = true

Representando que la torre se puede mover sólo sobre el mismo renglón


o sobre la misma columna. En una representación relacional, si asumimos
que tenemos un predicado mov(X, Y, Z, W ) cuyos argumentos representan
igualmente la posición en columna y renglón de cada pieza antes y después
del movimiento, nuestra sistema necesitarı́a aprender lo siguiente:

mov(X, Y, X, Z) : −Y 6= Z.
mov(X, Y, Z, Y ) : −X 6= Z.

Además de aprender una representación más compacta y contar con la


capacidad de relacionar propiedades de más de un objeto a la vez, otra ven-
taja de un sistema de ILP es que puede incluir conocimiento del dominio
dentro del proceso de aprendizaje. Consideremos el problema de aprender

108
el concepto de hija definida entre dos personas. hija(X, Y ) es verdadero si
X es hija de Y 1 . Podemos definir la relación hija(X, Y ), en términos de las
relaciones como padre y femenino.

En ILP, el problema se plantea de la siguiente forma:

Ejemplos positivos (⊕) y negativos (⊖):


hija(f ernanda, eduardo).⊕
hija(camila, rodrigo).⊕
hija(eugenia, ernesto).⊖
hija(valentina, roberto).⊖
...

Conocimiento del Dominio:


f emenino(f ernanda).
f emenino(camila).
f emenino(eugenia).
f emenino(valentina).
...
padre(eduardo, f ernanda).
padre(rodrigo, camila).
padre(roberto, eugenia).
padre(ernesto, valentina).
...

Resultado:
hija(X, Y ) : −f emenino(X), padre(Y, X).

Finalmente, algunos sistemas de ILP pueden introducir nuevos predica-


dos automáticamente durante el aprendizaje, simplificando la representación
de los conceptos aprendidos. Por ejemplo, introducir el predicado progenitor
refiriendose a padre o madre, para simplificar una representación de un con-
cepto que utilice indistintantemente a las relaciones de padre y madre. Más
adelante proporcionamos un ejemplo de esto.

Estos ejemplos ilustran algunas limitaciones de muchos de los sistemas


de aprendizaje actuales:
1
Aquı́ asumimos la notación utilizada en Prolog, donde las predicados empiezan con
minúsculas y las variables con mayúsculas.

109
1 2 5
7

0 3 4 6
8

Figura 6.4: Grafo conectado.

• Representación Restringida: inadecuados en áreas que requieren expre-


sar conocimiento relacional (v.g., razonamiento temporal y/o espacial,
planificación, lenguaje natural, razonamiento cualitativo, etc.).

• Conocimiento del Dominio: son incapaces de incorporar conocimiento


del dominio (utilizan un conjunto fijo de atributos).

• Vocabulario Fijo: no pueden inventar nuevo vocabulario con conocimiento


insuficiente del dominio.2

Otro ejemplo (ver figura 6.4):

Ejemplos (en ILP):

conectados(0,1). +
conectados(1,8). −
...

Conocimiento del dominio:

liga(0,1). liga(0,3). liga(1,0). liga(1,2). liga(2,3).


liga(3,2). liga(3,4). liga(4,5). liga(4,6). liga(5,4).
liga(6,8). liga(7,6). liga(7,8). liga(8,7).
2
Aunque existen sistemas proposicionales de feature construction que permiten inducir
nuevos atributos como combinaciones de atributos existentes.

110
conectados(X,Y) :-
liga(X,Y).
conectados(X,Y) :-
liga(X,Z), conectados(Z,Y).

La idea en ILP, como en aprendizaje inductivo, es aprender una hipótesis


que cubra los ejemplos positivos y no cubra los negativos. Para verificar
la covertura de ejemplos en ILP, se usa normalmente algún algoritmo de
inferencia basado en resolución.

• Un programa lógico P se dice completo (con respecto a E + ) sii para


todos los ejemplos e ∈ E + , P ⊢ e

• Un programa lógico P se dice consistente (con respecto a E − ) sii para


ningún ejemplo e ∈ E − , P ⊢ e

El entorno teórico de ILP lo podemos caracterizar entonces como sigue:

Dados
• un conjunto de ejemplos positivos E +
• un conjunto de ejemplos negativos E −
• un programa lógico consistente, T , tal que T 6⊢ e+ para al menos un
e+ ∈ E +

Encontrar un programa lógico H tal que H y T sea completo y consistente:


T ∪ H ⊢ E + y T ∪ H 6⊢ E − .

T normalmente se refiere a conocimiento del dominio o conocimiento a


priori.

Desde un punto de vista semántico la definición de ILP es:

• Satisfactibilidad previa: T ∧ E − 6|= 2

• Satisfactibilidad posterior (correcto o consistente): T ∧ H ∧ E − 6|= 2

• Necesidad previa: T 6|= E +

111
• Suficiencia posterior (completo): T ∧ H |= E +

En la mayoria de los casos, se limita al caso de cláusulas definitivas.


Esto es mucho más fácil, porque una teorı́a de cláusulas definitivas tiene un
modelo de Herbrand mı́nimo único M+ (T ) y todas las fórmulas lógicas son
o verdaderas o falsas.

Interpretaciones y Modelos de Herbrand

La teorı́a de modelos nos permite asignar significado a cualquier expresión


en lógica. La idea es asociar valores de verdad dentro de un dominio o hacer
una interpretación.

Asignamos constantes a elementos del dominio y los sı́mbolos funcionales


y de predicados a funciones y relaciones del dominio.

Por ejemplo, si tenemos: gusta(juan,ana). Tenemos que asociar “juan” y


“ana” a elementos del dominio, y tenemos que asociar la relación “gusta/2”
en el dominio.

Por ejemplo, “juan” con “persona-juan”, “ana” con “persona-ana” y


“gusta/2” con “persona-juan, persona-juan”, “persona-ana, persona-ana” y
“persona-juan, persona-ana” (por ejemplo).

Bajo esta interpretación, la relación: gusta(juan,ana) es verdadera. Sin


embargo, si asignamos “juan” a “persona-ana” y “ana” a “persona-juan” y
mantenemos la misma interpretación de la relación gusta(juan,ana) es falsa.

Una interpretación que nos da un valor de verdad para una sentencia


lógica se dice que la satisface y a la interpretación se le llama un modelo de
la sentencia.

Para programas lógicos podemos hablar de modelos e interpretaciones de


Herbrand.

Por ejemplo, si tenemos:

gusta(juan, X) ← gusta(X, vino).


gusta(ana, vino).

112
Tomando, solo las constantes: juan, ana y vino, todas las instanciaciones
aterrizadas (ground ) del programa lógico son:

gusta(juan, juan) ← gusta(juan, vino).

gusta(juan, ana) ← gusta(ana, vino).


gusta(juan, vino) ← gusta(vino, vino).
gusta(ana, vino).

Podemos asignar valores de verdad a todos estos elementos y obtener


modelos para ciertas interpretaciones.

En particular, los modelos se pueden organizar en un lattice. Desde


asignar a todos los elementos un valor de verdad (máximo) hasta al menor
número posible (mı́nimo).

En el ejemplo de arriba, el modelo mı́nimo de Herbrand es: asignar


el valor de verdad a: gusta(ana,vino). (a fuerzas) y a gusta(juan,ana) ←
gusta(ana,vino). (derivado del primero).

Esto es importante, porque las consecuencias lógicas aterrizadas de un


programa lógico son su modelo mı́nimo (M) y también es lo que podemos
derivar con resolución SLD en programas con cláusulas definitivas.

• Satisfactibilidad previa: ∀e ∈ E − son falsos en M+ (T )

• Satisfactibilidad posterior (correcto o consistente): ∀e ∈ E − son falsos


en M+ (T ∧ H)
• Necesidad previa: algunos e ∈ E + son falsos en M+ (T )

• Suficiencia posterior (completo): ∀e ∈ E + son verdaderos en M+ (T ∧


H)

Un caso especial, el que más se usa en ILP, en cuando todos los ejemplos
son hechos sin variables.

Búsqueda de Hipótesis

113
El proceso de inducción puede verse como un proceso de búsqueda de
una hipótesis dentro del espacio de hipótesis H = {H1 , H2 , . . . , Hn }, esto es
dentro del conjunto de todas las hipótesis que el algoritmo de aprendizaje
está diseñado a producir.

En ILP este espacio puede ser demasiado grande por lo que normalmente
se diseñan estrategias de búsqueda que consideren sólo un número limitado
de alternativas.

Para realizar una búsqueda eficiente de hipótesis, normalmente es nece-


sario estructurar el espacio de hipótesis, lo cual se puede hacer con un modelo
de generalización. Esto es, con un modelo que me diga si una hipótesis es
más general o más especı́fica que otra.

Esta estructuración permite cortar ramas durante la búsqueda sabiendo


que especializaciones o generalizaciones de hipótesis hereden alguna propiedad.
Las propiedades más comunes son: incapacidad de cubrir un ejemplo cono-
cido como verdadero o probar un ejemplo conocido como falso.

Por ejemplo, si sabemos que una hipótesis cubre un ejemplo negativo,


podemos eliminar del espacio de búsqueda todas sus generalizaciones ya que
van a seguir cubriendo ese ejemplo. Por el contrario, si una hipótesis no
cubre un ejemplo positivo, podemos eliminar del espacio de búsqueda todas
sus especializaciones ya que tampoco lo van a cubrir.

Esta estructuración del espacio de hipótesis se puede hacer utilizando Θ−


subsumption. Una cláusula C, θ–subsume (o es una generalización de) una
cláusula D si existe una substitución θ tal que Cθ ⊆ D. Usualmente se
escribe como C  D.

Por ejemplo: Sea C = hija(X, Y ) ← padre(X, Y ). Con la substitución


vacı́a, C subsume a hija(X, Y ) ← f emenino(X), padre(X, Y ).

Con la substitución Θ = {Y /X}, C subsume a hija(X, X) ← f emenino(X),


padre(X, X), y con la substitución Θ = {X/ana, Y /luis}, C subsume a
hija(ana, luis) ← f emenino(ana), padre(luis, ana), padre(luis, pepe).

Θ−subsumption introduce una noción de generalización. Una cláusula C


es más general que C ′ si CΘ-subsume a C ′ y no al revés. También se dice
que C ′ es una especialización (o refinamiento) de C.

114
Si CΘ-subsume a C ′ , entonces C ′ es una consecuencia lógica de C, C |=

C , pero al revés no se cumple. Por ejemplo: C = par(X) ← par(mitad(X))
y D = par(X) ← par(mitad(mitad(X))). C |= D pero C no Θ-subsume D
(CΘ 6⊆ D).

C  D sii D es una tautologı́a o C es usada exactamente una vez en una


prueba de resolución de T ⊢ C → D, donde T es un conjunto arbitrario de
cláusulas.

En particular, C no puede aplicarse a si mismo directa o indirectamente


durante la prueba.

El uso de Θ−subsumtion se justifica por el hecho de que es decidible entre


cláusulas, es fácil de calcular (aunque es NP) y mientras que implicación no
es decidible. crea un lattice. Esto es importante porque permite buscar en
ese lattice por hipótesis.

La búsqueda puede hacerse: (i) de especı́fico a general, buscando cláusulas


que subsuman a la hipótesis actual, (ii) de general a especı́fico, buscando
cláusulas subsumidas por la hipótesis actual, ó (iii) en ambos sentidos.

Ejemplo:

Ejemplos Conocimiento del Dominio


ordena([2,1],[1,2]). junta([ ],L,L).
ordena([0,3,1],[0,1,3]). junta([H|L1],L2,[H|L3]) ←
ordena([4,2,6],[2,4,6]). junta(L1,L2,L3).
ordena([1],[1]).
ordena([ ],[ ]). divide(El,[H|T],Men,[H|May]) ←
... El < H, divide(T,Men,May).
divide(El,[H|T],[H|Men],May) ←
El >= H, divide(T,Men,May).
divide( ,[ ],[ ],[ ]).

115
Espacio de Soluciones

Muy general: ordena(X,Y).

Solución: ordena([ ],[ ]).


ordena([H|T],LOrd) ←
divide(H,T,Men,May),
ordena(Men,MenOrd),
ordena(May,MayOrd),
junta(MenOrd,[H|MayOrd],LOrd).

Muy especı́fico: ordena([1],[1]) ←


junta([],[1],[1]), junta([1],[2,3],[1,2,3]), ...,
divide(1,[],[],[]), divide(2,[1,5],[1],[5]), ...
ordena([],[]), ordena([4],[4]), ...

6.2.1 Generalización menos general.

Una forma de ir búscando hipótesis es generalizando cláusulas gradualmente.


La generalización menos general (lgg) de dos cláusulas C y C ′ es la gener-
alización más especı́fica de las cláusulas C y C ′ dentro del lattice generado
por Θ−subsumtion.

C es la generalización menos general (lgg) de D bajo θ−subsumtion si


C  D y para cualquier otra E tal que E  D, E  C. Plotkin fué uno de
los pioneros en usar lgg como mecanismo de aprendizaje en lógica de primer
orden. El algoritmo para evaluar el lgg entre dos términos viene descrito en
la tabla 6.1.

Con respecto a átomos, lgg es el dual de mgu. Dados dos términos f1 y


f2 y el orden impuesto por , entonces el lgg de f1 y f2 es su lı́mite inferior
más grande (glb) y el mgu es el lı́mite superior más bajo (lub).

Por ejemplo, si tenemos las siguientes dos literales (L1 , L2 ) podemos encon-
trar el lgg y el mgu entre ellas, donde el lgg es la literal más especı́fica que
subsume a las dos literales, mientras que el mgu es la literla más general
subsumida por L1 y L2 .

116
Tabla 6.1: Algoritmo de lgg entre dos términos.

Si L1 y L2 son dos términos o literales compatibles

1. Sea P1 = L1 y P2 = L2 .

2. Encuentra dos términos, t1 y t2 , en el mismo lugar en P1 y


P2 , tal que t1 6= t2 y o los dos tienen un nombre de función
diferente o por lo menos uno de ellos es una variable

3. Si no existe ese par, entonces acaba. P1 = P2 = lgg(L1 , L2 ).

4. Si existe, escoge una variable X distinta de cualquier variable


que ocurra en P1 o P2 , y en donde t1 y t2 aparezcan en el
mismo lugar en P1 y P2 , remplazalos con X.

5. Ve a 2.

lgg(L1 , L2 ) = f oo(Z, f (Z), g(W, b), V ).


z }| {
L1 = f oo(a, f (a), g(X, b), Z) L2 = f oo(Y, f (Y ), g(c, b), Z)
| {z }
mgu(L1, L2 ) = f oo(a, f (a), g(c, b), Z).

El lgg de dos cláusulas C1 y C2 está definido por: {l : l1 ∈ C1 y l2 ∈


C2 y l = lgg(l1, l2 )}. Por ejemplo, si:

C1 = hija(f ernanda, eduardo) ← padre(eduardo, f ernanda),


f emenino(f ernanda), pequeña(f ernanda).
C2 = hija(camila, rodrigo) ← padre(rodrigo, camila),
f emenino(camila), grande(camila).

lgg(C1, C2) = hija(X, Y ) ← padre(Y, X), f emenino(X).

La longitud del lgg de las cláusulas C1 y C2 es a lo más | C1 | × | C2 |.

117
C1 = member (1,[0,1]) ← member (1,[1]), member (0,[2,0]),
member (1,[1,0]).
C2 = member (0,[1,2,0]) ← member (1,[1]), member (0,[2,0]),
member (1,[1,0]).
Produce:
member (X,[Y,Z|T]) ←
member (1,[1]), member (X,[Z|T]), member (1,[1|T]),
member (Y,[W|R]), member (0,[2,0]), member (Y,[W,0]),
member (1,[1|R]), member (X,[Z,0]), member (1,[1,0]).

El lgg entre literales es único (renombrando variables), pero entre cláusulas


no necesariamente (se pueden reducir bajo Θ–subsumción).

Esto mismo se extiende para un conjunto de cláusulas.

6.2.2 RLGG o lgg relativo a una teorı́a.

En general nos interesa encontrar generalizaciones de un conjunto de ejemplos


en relación a cierta teorı́a o conocimiento del dominio.

Una cláusula C es más general que una D con respecto a una teorı́a T si
T ∧ C ⊢ D.

Una cláusula C es un lgg de una cláusula D con respecto a una teorı́a


T , si T ⊢ CΘ → D para alguna substitución Θ. Decimos que C es la
generalización menos general de D relativa a T (rlgg).

Esto es equivalente a decir que C ∧ T ⊢ D ′ donde D ′ subsume a D y C


se usa sólo una vez en la derivación de D ′ .

En general, puede no existir un rlgg, pero si existe para teorı́as ater-


rizadas (sin variables). En particular, si T es un conjunto finito de literales
aterrizadas, el lgg de C1 y C2 con respecto a T , es: lgg(T → C1 , T → C2 ).

Rlgg sin embargo, puede tener algunas conclusiones no intuititvas. Por


ejemplo, es fácil de verificar que: P ← Q es más general que R ← S, Q
relativa a R ← P, S.

118
Para mejorar esto, Buntine introdujo la noción de subsumción general-
izada, el cual es un caso especial de rlgg, restringido a cláusulas definitivas.

La idea es que C es más general que D con respecto a T , si cada vez que
D se puede usar (junto con T ) para explicar algún ejemplo, C también se
pueda usar.

Esto lo podemos expresar más formalmente como sigue: Una cláusula


C ≡ Ccabeza ← Ccuerpo, subsume a otra cláusula D ≡ Dcabeza ← Dcuerpo
con respecto a T (C T D) si existe una substitución mı́nima σ tal que
Ccabeza σ = Dcabeza y para cualquier substitución aterrizada (ground ) θ con
constantes nuevas para D, se cumple que: T ∪ Dcuerpoθ |= ∃ (Ccuerpoσθ).

Esto lo podemos ver como sigue. Sean: (i) C y D dos cláusulas con
variables disjuntas, y T un programa lógico, (ii) θ1 una substitución (ground)
para las variables en Ccabeza , (iii) θ2 una substitución para el resto de las
variables en C, y (iv) similarmente, φ1 y φ2 para D. Si lggT (C, D) existe, es
equivalente al lgg(C ′, D ′ ), donde:
C ′ ≡ C θ1 ∪ {¬A1 , . . . , ¬An } y D ′ ≡ D φ1 ∪ {¬B1 , . . . , ¬Bm }
y para 1 ≤ i ≤ n, T ∧ Ccuerpoθ1 θ2 |= Ai , y Ai es un átomo aterrizado
construido con sı́mbolos que ocurren en T , C, θ1 , θ2 , y D. Similarmente para
cada Bj .

Esto se puede utilizar dentro de un sistema de aprendizaje de la siguiente


forma:

• Toma una cláusula ejemplo (C1 ) y sea θ1,1 una substitución instan-
ciando las variables en la cabeza de C1 a nuevas constants y θ1,2 in-
stanciando las variables que quedan a nuevas constantes.
• Construye una nueva cláusula saturada (NC) definida como: NC ≡
C1 θ1,1 ∪ {¬A1,1 , ¬A1,2 , . . .} donde T ∧ C1cuerpoθ1,1 θ1,2 |= A1,i , y A1,i es
una átomo instanciado.
• Construye para cada ejemplo, su cláusula saturada, y calcula el lgg
entre ellas.

Por ejemplo, supongamos que queremos aprender una definición de faldero


y tenemos las siguientes dos cláusulas ejemplo:

119
C = f aldero(f ido) ← consentido(f ido), pequeño(f ido), perro(f ido).
D = f aldero(morris) ← consentido(morris), gato(morris). Entonces:

lgg(C, D) = f aldero(X) ← consentido(X).

lo cual podrı́a ofender a varias personas. Si por otro lado tenemos de conocimiento
del dominio:
mascota(X) ← perro(X).
mascota(X) ← gato(X).
pequeño(X) ← gato(X).

Podemos añadir al cuerpo de C y D lo que podamos deducir del cuerpo de


cada cláusula con el conocimiento del dominio. Esto es, añadir mascota(f ido)
a C tomando perro(f ido) del cuerpo de C y la primera cláusula del conocimiento
del dominio. De la misma forma, podemos añadir a D, mascota(morris) y
pequeño(morris), con lo que nos quedarı́an las siguientes dos cláusulas sat-
udadas:

C ′ = f aldero(f ido) ← consentido(f ido), pequeño(f ido), perro(f ido),


mascota(f ido).
D ′ = f aldero(morris) ← consentido(morris), gato(morris), mascota(morris),
pequeño(morris).

Entonces:
rlggT (C, D) = lgg(C ′, D ′) =
f aldero(X) ← consentido(X), pequeño(X), mascota(X).
que se acerca más a una definición plausible que toma en cuenta nuestro
conocimiento del dominio. Sistemas como PAL y Golem estás basados en
esta técnica.

6.2.3 Inversión de Resolución.

Otra idea para aprender programas lógicos, es invertir el proceso de res-


olución. Para esto necesitamos definir una substitución inversa Θ−1 que ma-
pea términos a variables. Por ejemplo, si C = hija(X, Y ) ← f emenino(X),
padre(Y, X), la substitución: Θ = {X/ana, Y /juan} nos da: C ′ = CΘ =

120
femenino(ana). hija(X,Y) femenino(X), padre(Y,X).
-1
01 = {ana/X}
padre(juan,ana). hija(ana,Y) padre(juan,ana).
-1
02 = {juan/Y}

hija(ana,juan).

Figura 6.5: Un árbol de derivación inversa.

hija(ana, juan) ← f emenino(ana), padre(juan, ana) y la substitución in-


versa: Θ−1 = {ana/X, juan/Y } nos da: C ′ Θ−1 = hija(X, Y ) ← f emenino(X),
padre(Y, X).

De forma similar, si conocemos hija(ana, juan) y padre(juan, ana) (figura 6.5),


podrı́amos aplicar un paso inverso de resolución para obtener hija(ana, Y )
← padre(Y, ana), con una substitución inversa de Θ−1
2 = {juan/Y }.

Si además sabemos que f emenino(ana), podrı́amos aplicar otro proceso


inverso de resolución para obtener hija(X, Y ) ← f emenino(X), padre(Y, X)
con Θ−1
1 = {ana/X}.

En general, se tienen que especificar los lugares, dentro de la cláusula en


donde se hace la substitución. Por ejemplo: c = quiere(X, hija(Y )). con
Θ = {X/ana, Y /ana} nos da: cΘ = quiere(ana, hija(ana)). Para recuperar
c necesitamos tener: Θ−1 = {(ana, {1})/X, (ana, {2, 1})/Y } para poder re-
cuperar la c original.

El tratar de invertir el proceso presenta algunos problemas:

• En general no existe una solución única.

• Tenemos que decidir si vamos a cambiar términos a variables y cómo.

Dado un árbol de derivación de dos cláusulas C1 y C2 para obtener C,


el operador de absortion, construye C2 , dados C y C1 . De la ecuación del
resultante de aplicar resolución podemos despejar C2 :

C2 = (C − (C1 − {L1 })θ1 )θ2−1 ∪ {L2 }

121
donde θ1 y θ2 son substituciones involucrando únicamente las variables de las
cláusulas C1 y C2 respectivamente.

Para ésto, se tiene que decidir qué términos y subtérminos se deben de


remplazar por la misma variable y cuáles por variables diferentes. Cigol
resuelve parcialmente esto, asumiendo que C1 es una cláusula unitaria (i.e.,
C1 = L1 ), con lo que obtenemos:
C2 = (C ∪ {¬L1 }θ1 )θ2−1

El problema está con θ2−1 . Si C1 es una cláusula aterrizada (ejemplo


positivo) entonces θ1 es vacı́a. Por ejemplo, si C = menor(A, suc(suc(A))) y
C1 = menor(B, suc(B)). Si definimos: θ1 = {B/suc(A)}, obtenemos: (C ∪
{¬l1 }θ1 ) = menor(A, suc(suc(A))) ← menor(suc(A), suc(suc(A))). Ahora,
para calcular θ2−1 , debemos decidir cómo cambiar las dos ocurrencias del
término suc(suc(A)) en variables. Supongamos que ambas ocurrencias las
cambiamos por D, entonces: C2 = (C ∪ {¬l1 }θ1 )θ2−1 = menor(A, D) ←
menor(suc(A), D).

Con cláusulas de Horn en general, el cuerpo de C1 es absorbido en el


cuerpo de C (después de la aplicación de una unificación adecuada) y rem-
plazada con su cabeza. Por ejemplo:
C = ave(tweety) ← plumas(tweety), alas(tweety), pico(tweety).
C1 = vuela(X) ← plumas(X), alas(X).

El cuerpo de C1 es absorbido en el cuerpo de C después de la substi-


tución θ = {X/tweety} dando una posible solución: C2 = ave(tweety) ←
vuela(tweety), pico(tweety).

El problema de absoption es que es destructiva, en el sentido de que


las literales remplazadas se pierden y no pueden usarse para futuras gen-
eralizaciones (es problema cuando los cuerpos de las cláusulas se traslapan
parcialmente), por lo que las generalizaciones dependen del orden de estas.
Por ejemplo, si tenemos:

C1 = P ← Q, R.
C2 = S ← R, T.
C3 = V ← Q, R, T, W.

122
C1 y C2 comparten una literal y ambas se pueden usar para hacer absorp-
tion con respecto a C3 . Absorption de C3 con C1 nos da: C4 = V ← P, T, W ,
pero ahora no se puede hacer absorption de C3 con C2 .

Este problema se puede resolver si usamos saturación, en donde la difer-


encia es que mantenemos todas las literales (las usadas en paréntesis, indi-
cando que son opcionales). Saturación hace todas las posibles deducciones
en el cuerpo de una cláusula de entrada usando el conocimiento del dominio,
y viene la generalización al eliminar las literales redundantes.

C1 y C3 : C4 = V ← [Q, R], P, T, W.
C4 y C2 : C5 = V ← [Q, R, T ], W, P, S.

Otro operador que invierte el proceso de resolución es el operador “W”


que se obtiene al combinar dos operadores “V”, como el que acabamos de
ver. Supongamos que C1 y C2 resuelven en una literal común l dentro de
la cláusula A para producir B1 y B2 . Entonces el operador W construye A,
C1 y C2 dados B1 y B2 . Cuando l es negativo se llama intraconstruction y
cuando es positivo interconstruction.

Como la literal l en A es eliminada en la resolución y no se encuentra en


B1 o B2 , se tiene que inventar un nuevo predicado.
B1 = (A − {l1 })θA,1 ∪ (C1 − {l1 })θC,1
B2 = (A − {l1 })θA,2 ∪ (C2 − {l2 })θC,2

Suponiendo otra vez que C1 y C2 son cláusulas unitarias:


−1 −1
A = B1 θA,1 ∪ {l} = B2 θA,2 ∪ {l} = B ∪ {l}
donde B es una generalización común de las cláusulas B1 y B2 .

Por ejemplo, supongamos que:

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


B2 = abuelo(A, C) :- padre(A, B), madre(B, C).
Podemos aplicar el operador “W” para obtener las siguientes cláusulas (ver
figura 6.6):
A = abuelo(L, N) :- padre(L, M), nvop(M, N).
C1 = nvop(Y, Z) :- padre(Y, Z).
C2 = nvop(B, C) :- madre(B, C).

123
C1: nvop(B,C) :- madre(B,C). C2: nvop(B,C) :- madre(B,C).

A: abuelo(L,N) :- padre(L,M),nvop(M,N).

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

B2: abuelo(A,C) :- padre(A,B),madre(B,C).

Figura 6.6: Un ejemplo del operador “W”.

lgg(C,D) = h(X,Y) f(X), p(Y,X).

C= h(ana,juan) f(ana),p(juan,ana). D = h(maria,pepe) f(maria),p(pepe,maria).


f(ana). -1
0 = {} f(maria). -1
01= {}
1

p(juan,ana). h(ana,juan) p(juan,ana). p(pepe,maria). h(maria,pepe) p(pepe,maria).


-1
-1
02 = {} 02 = {}

h(ana,juan). h(maria,pepe).

Figura 6.7: Esquema común de generalización, donde h se refiere a hija, f


a f emenino y p a padre.

6.2.4 Un esquema común de generalización.

Muggleton estableció una forma de relacionar resolución inversa y rlgg. La


idea es que para cada ejemplo que se tenga, realizar la resolución inversa
(derivación inversa lineal) con la substitución inversa más especı́fica (substi-
tución vacı́a) y después hacer el lgg de las cláusulas resultantes. Esto es,
las generalizaciones más especı́ficas con respecto a conocimiento del dominio
(rlgg) son las generalizaciones más especı́ficas (lgg) de los árboles inversos de
derivación más especı́ficos (ver figura 6.7).

6.2.5 Inversión de Implicación.

Finalmente, podemos tomar una interpretación semántica y pensar en inver-


tir implicación. Sean C y D cláusulas. Decimos que C implica D, o C → D,

124
sii todo modelo de C también es modelo de D, i.e., C |= D. Decimos que
C es una generalización (bajo implicación) de D. El problema de invertir
implicación es que implicación es indecidible y computacionalmente es muy
costoso, a menos, que se impongan ciertas restricciones.

Lo que se quiere encontrar es una H tal que: T ∧ H |= E. Por el teorema


de deducción: T ∧ ¬E |= ¬H, donde ¬E y ¬H representan conjunciones
de literales aterrizadas (Skolemizadas). Si ¬ ⊥ representa todas las literales
aterrizadas (potencialmente infinitas) ciertas en todos los modelos de: T ∧
¬E, ¬H debe de ser un subconjunto de ¬ ⊥, por lo que: T ∧¬E |= ¬ ⊥|= ¬H
y para toda H, H |=⊥. Con esto se puede buscar a H en cláusulas que
subsumen a ⊥.

En la práctica para construir ⊥ se utiliza resolución SLD3 de profundidad


limitada (h). Al resultado se le conoce como modelos h-easy. Una forma de
encontrar H es construyendo gradualmente hipótesis que sean subconjuntos
de ⊥ siguiendo una estrategia de general a especı́fico. Esto es básicamente
lo que hace el sistema Progol.

Los algoritmos que buscan de especı́fico a general pueden tener proble-


mas en presencia de ruido. Lo mismo sucedió con los algoritmos de reglas
proposicionales iniciales como AQ, lo que originó el proponer algoritmos de
general a especı́fico que siguen una estrategia de covering como CN2 o PART.
El mismo esquema de covering se propuso en ILP para lidear con ruido como
se verá en la siguiente sección.

6.2.6 Sistemas de General a Especı́fico

En general, los algoritmos de ILP de general a especı́fico siguen el esquema


descrito en la tabla 6.2. La idea es ir añadiendo incrementalmente literales
(condiciones a reglas) siguiendo un proceso de búsqueda, generalmente tipo
hill-climbing, usando una medida heurı́stica (ver figura 6.8). Una vez que
se cumple el criterio de necesidad por la hipótesis actual, se eliminan los
ejemplos positivos cubiertos y se empieza a generar una nueva cláusula. El
proceso continua hasta que se cumple un cierto criterio de suficiencia. En
3
Seleccionar una literal, usando una estrategia Lineal, restringido a cláusulas
Definitivas.

125
Tabla 6.2: Algoritmo de construcción de cláusulas de general a especı́fico.

Inicializa Eactual := E
Inicializa H := ∅
repite % covering
Iniciaiza C := T ←
repite % especializa
Encuentra el mejor refinamiento (Cmejor ) de C
Sea C := Cmejor
hasta criterio de paro (necesidad)
Añade C a H, H := H ∪ {C}
Elimina ejemplos positivos cubiertos por C de Eactual
hasta criterio de paro (suficiencia)
Regresa H

dominios sin ruido, el criterio de necesidad es de consistencia, esto es, no


cubrir ningún ejemplo negativo, y el de suficiencia es de covertura, esto es,
hasta cubrir todos los ejemplos positivos. En dominios con ruido, se deja de
exigir que las hipótesis sean completas y consistentes y se utilizan medidas
heurı́sticas. Estas medidas se basan en el número de ejemplos positivos y
negativos cubiertos por las hipótesis, como se verá más adelante.

En esta forma de construcción de programas lógicos se tiene que especi-


ficar el criterio a utilizar para seleccionar una nueva literal y el criterio de

hija(X,Y)

... hija(X,Y) padre(X,Y).


hija(X,Y) femenino(Y)

hija(X,Y) femenino(X) hija(X,Y) padre(Y,X).

...
hija(X,Y) femenino(X), hija(X,Y) femenino(X),
femenino(Y). padre(Y,X).

Figura 6.8: Proceso de construcción de programas lógicos siguiendo un es-


quema de general-a-especı́fico.

126
paro.

Para añadir una nueva literal (especializar una cláusula) se puede hacer
con operadores de refinamiento (refinement operators).

A grandes rasgos, Q es un refinamiento de T si T implica Q y tamaño(T )


< tamaño(Q), donde tamaño es una función que hace un mapeo de cláusulas
a números naturales.

Un operador de refinamiento se dice completo sobre un conjunto de


cláusulas, si podemos obtener todas las cláusulas por medio de refinamien-
tos sucesivos a partir de la cláusula vacı́a. Un operador de refinamiento
induce un orden parcial sobre el lenguaje de hipótesis. Al igual que con
Θ−subsumption, se puede hacer una grafo en donde nodos en capas inferi-
ores son especializaciones de nodos en capas superiores.

Dado un operador de refinamiento completo para su lenguaje de hipótesis,


estos sistemas recorren su grafo de refinamiento hasta encontrar la hipótesis
deseada. Uno de los primeros sistemas en usar operadores de refinamiento
fue MIS. La diferencia entre muchos de los sistemas de ILP radica en qué
operador de refinamiento utilizan y cómo recorren su grafo de refinamiento.
Por ejemplo, el operador de refinamiento de Foil considera añadir al cuerpo de
la cláusula alguna de las siguientes literales: (i) Xj = Xk , (ii) Xj 6= Xk , (iii)
P (V1, V2 , . . . , Vn ) y (iv) ¬P (V1 , V2 , . . . , Vn ), donde las Xs y V s son variables
y P en uno de los predicados del conocimiento del dominio.

Ganacia de Información y FOIL

Se utilizan medidas, como ganacia en información para apoyar una es-


pecialización bajo la capacidad de discriminar entre ejemplos positivos y
negativos.

Se puede ver como una extensión “natural” de algoritmos tipo ID3.

Muchos sistemas, empiezan con una teorı́a en forma de cláusulas unitarias


instanciadas representando ejemplos positivos, negativos y la teorı́a del do-
minio y aprenden incrementalmente cláusulas hasta cubrir todos los ejemplos
positivos y ningúno de los negativos.

Para entender a Foil, definimos: Un tuple (o tupla) como una secuencia

127
finita de constantes.

Una tupla satisface una cláusula si existe un mapeo de las variables de la


cabeza de la cláusula hacia la tupla y una extensión de todos las variables
del cuerpo a constantes satisfaciendo el cuerpo.

Foil empieza con tuplas positivas y negativas satisfaciendo el concepto


meta y con una cláusula muy general, la cual es gradualmente especializada
añadiendole literales al cuerpo.

Si la literal añadida usa sólo variables existentes en la cláusula actual, el


nuevo conjunto de tuplas positivas y negativas es un subconjunto de aquellas
tuplas que satisfacen el predicado adicional.

Si se introduce una nueva variable en una nueva literal, las tuplas se


tienen que extender para incluir los valores de esa variable. Esto se hace de
manera automática en Foil.

La asignación de valor a las tuplas (positiva o negativa) se toma de la


asignación original.

Ejemplo:

ligados(X, Y ).

⊕: (0,1), (0,2), (0,3), (0,4), ..., (7,8)


⊖: (0,0), (0,7), (1,0), (1,1), ..., (8,8)

ligados(X, Y ) :- liga(X, Y ).

Elimina 10 tuplas de ⊕

ligados(X, Y ) :- liga(X, Z).

Introduce una nueva variable y las nuevas tuplas serı́an:

⊕: (0,2,1), (0,2,3), (0,4,1), ..., (4,8,6)


⊖: (0,0,1), (0,0,3), (0,7,1), ..., (7,7,8)

128
ligados(X, Y ) :- liga(X, Z), ligados(Z, Y ).

cubre las otras tuplas positivas.

Cada literal del cuerpo de la cláusula puede tomar una de las siguientes
4 formas (refinamientos):
(i) Xj = Xk
(ii) Xj 6= Xk
(iii) P (V1 , V2 , . . . , Vn )
(iv) ¬P (V1 , V2 , . . . , Vn )

donde Xi ’s son variables existentes, Vi ’s son variables existente o nuevas, y


T es alguna relación.

Las nuevas literales en Foil deben de contener por lo menos una variable
existente.

Foil usa una métrica de ganacia de información para añadir nuevas lit-
erales:
P1 P0
Gain(literal) = T ++ ∗ [log2 ( ) − log2 ( )]
P1 + N1 P0 + N0

donde

• P0 y N0 es el número de tuplas negativas y positivas antes de añadir la


nueva literal
• P1 y N1 son el número de tuplas positivas y negativas después de añadir
la literal a la cláusula
• T ++ es el número de tuplas positivas antes de añadir la literal que
satisfacen la nueva literal

La heurı́stica de ganacia de información no garantiza encontrar una solución


cuando existen varias posibles literales con ganacia aproximadamente igual.
De igual forma puede hacer decisiones locales óptimas pero globalmente
malas.

De hecho Foil puede cambiar de hipótesis si se le dan los mismos ejemplos


positivos dos veces.

129
• Dado un conjunto de tuplas positivas y negativas y tuplas de
conocimiento del dominio

• repeat until todas las tuplas positivas esten cubiertas

– sea cláusula actual = la cabeza del predicado más general


con cuerpo vacı́o
– repeat until no se cubren tuplas negativas
∗ calcula la ganancia de información de todas las posi-
bles literales que pueden añadirse a la cláusula ac-
tual
∗ selecciona la literal con más ganancia de información
∗ añade la literal al cuerpo de la cláusula actual
∗ elimina las tuplas de ejemplos positivos satisfechos
por la nueva cláusula

Tabla 6.3: Algoritmo de Foil

Extensiones (Foil2) utiliza un tipo de back–up primitivo.

Foil no tiene sı́mbolos funcionales y se ve afectado por el número de


argumentos en el predicado meta.

Medidas de calidad

Además de utilizar un operador de refinamiento para especializar una


hipótesis, se tiene que determinar la calidad de las hipótesis generadas. Den-
tro de las diferentes medidas, podemos mencionar las siguientes:

• Precisión: A(c) = p(⊕|c). Se pueden usar diferentes medidas para esti-


mar esta probabilididad. La más usada, aunque no necesariamente la
⊕ (c)
mejor es: p(⊕|c) = nn(c) . Donde n⊕ (c) se refiere a los ejemplos posi-
tivos cubiertos por la cláusula c y n(c) se refiere a todos los ejemplos
cubiertos por la cláusula c. Más adelante describiremos otras medidas
para estimar probabilidades.

• Basada en información: I(c) = −log2 p(⊕|c).

130
• Ganancia en precisión: Se puede medir el aumento de precisión que se
obtiene al añadir una literal a la cláusula c para obtener c′ , AG(c′ , c′ ) =
A(c′ ) − A(c) = p(⊕|c′ ) − p(⊕|c).
• Ganancia de información: Similarmente, se puede medir la disminución
en información, IG(c′ , c) = I(c) − I(c′ ) = log2 p(⊕|c′ ) − log2 p(⊕|c).
• Ganancia en precisión o en información pesada: Se pueden pesar las
⊕ ′
medidas anteriores por el siguiente factor nn⊕(c(c)) , para estimar lo que se
gana en ejemplos positivos cubiertos por una especialización particular.
Una medida parecida a esta es empleada por Foil.

• Ganancia de información mejorada: una variante de ganacia de infor-


n⊕ (c)+(|N ⊖ |−n⊖ (c)
∗(I(⊤)−I(c))
mación es como sigue: IG(c) = |N|
|c|
donde |N ⊖ | es
el número de ejemplos negativos, n⊖ (c) es el número de ejemplos neg-
ativos cubiertos por la hipótesis c, |N| es el número total de ejemplos,
y |c| es el número de literales en el cuerpo de c.

Para estimar las probabilidades usadas en estas medidas, se pueden uti-


lizar diferentes estimadores. Los más comunes son:


• Frecuencia relativa, que como ya vimos antes es: p(⊕|c) = nn(c)
(c)
. Esto
es adecuado cuando se cubren muchos ejemplos. Cuando existen pocos
ejemplos, esta medida deja de ser confiable.

• Estimador Laplaciano: p(⊕|c) = nn(c)+2(c)+1
. Esta medida aplica cuando
se tienen dos clases. Esta medida también asume que se tiene una
distribución uniforme de las dos clases.
⊕ ⊕
• Estimador-m: p(⊕|c) = n (c)+m×pn(c)+m
a (⊕)
donde pa (⊕) = nn , es la proba-
bilidad a priori de la clase y m expresa nuestra confianza en la evidencia
(ejemplos de entrenamiento). Se define subjetivamente de acuerdo al
ruido en los ejemplos, entre más ruido más grande tiene que se ser el
valor de m. Si m = 0 regresamos a frecuencia relativa y si m = 2 y
pa (⊕) = 21 regresamos al estimador Laplaciano.

Existe una gran cantidad de algoritmos de ILP que utilizan una estrategia
top-down de general a especı́fico (v.g., Tilde, ICL, mFoil, Foil, entre otros).

131
Los sistemas que usan estrategias de general a especı́fico tienden a tener
dificultades con cláusulas que involucran muchas literales. Por otro lado, al
utilizar una estrategia de búsqueda tipo hill climbing (como la mayorı́a de
los sistemas de aprendizaje), pueden caer en mı́nimos locales y no llegar a
encontrar la mejor hipótesis.

Se han propuesto varios esquemas en ILP para aliviar el problema de


miopı́a que se origina por el esquema de búsqueda utilizado. Por ejem-
plo, Peña-Castillo y Wrobel proponen utilizar macro-operadores para poder
añadir más de una literal al mismo tiempo. Otros sistemas, como m-Foil
e ICL utilizan beam-search para tratar de aliviar el problema de la miopı́a.
También se ha utilizado fixed-depth look-ahead, esto es, continuar el refi-
namiento varios pasos adelante. Esto puede ser utilizando templates para
hacer la búsqueda más selectiva.

6.2.7 Restricciones y Técnicas Adicionales

En general todos los sistemas ILP introducen ciertas restricciones para generar
sus hipótesis:

• Se le dice al sistema qué argumentos están determinados (argumentos


de salida) en un predicado si el resto de los argumentos son conocidos
(argumentos de entrada). Se pueden formar gráfos que ligan entradas y
salidas guiando la construcción de las hipótesis. Se puede restringir aún
más utilizando tipos, esto es, sólo puede existir una liga de variables
de entrada - salida si los argumentos son del mismo tipo (v.g., Progol,
Aleph).

• Considera sólo cláusulas en que todas las variables aparescan por lo


menos 2 veces en la cláusula, o introduce una literal con al menos una
variable existente (v.g., Foil).

• Construye hipótesis sólo de una clase de cláusulas definidas con esque-


mas o modelos de reglas o gramáticas (v.g., Mobal).

• Construye hipótesis siguiendo un operador de refinamiento particular


(v.g., MIS).

132
• Utiliza predicados adicionales para determinar qué predicados del conocimiento
del dominio son relevantes para la hipótesis actual (v.g., Tracy).

Los programas lógicos pueden tener términos complejos usando sı́mbolos


funcionales. Muchos sistemas de ILP usan una representación aplanada
o flattened para eliminar los sı́mbolos funcionales. Esto es, cada término
f (X1 , . . . , Xn ) en cada cláusula C de un programa, se cambia por una nueva
cláusula con variables X y se añade al cuerpo de C un nuevo predicado
Pf (X1 , . . . , Xn , X) representando la función f .

6.2.8 Proposicionalización.

La idea de proposicionalización es la de transformar un problema relacional


en una representación de atributo-valor que pueda ser usada por algoritmos
más convencionales de aprendizaje computacional como son C4.5 y CN2.Las
razones principales son: (i) utilizar algoritmos más eficientes de aprendizaje,
(ii) contar con una mayor cantidad de opciones de algoritmos, y (iii) utilizar
técnicas más maduras, por ejemplo, en el uso de funciones y regresiones,
en el manejo de ruido, etc. Durante el proceso de transformación se con-
struyen atributos a partir del conocimiento del dominio y de las propiedades
estructurales de los individuos. Este proceso puede ser completo ó parcial
(heurı́stico). Una proposicionalización completa no pierde información. En
la parcial o incompleta se pierde información y el objetivo es el generar
automáticamente un conjunto pequeño pero relevante de atributos estruc-
turales. Este último enfoque es el más utilizado debido a que a veces el
conjunto completo puede llegar a ser infinito.

Dedibo al incremento exponencial de atributos con respecto a factores


como el número de predicados usados y el número máximo de literales a uti-
lizar, algunos sistemas limitan el número de literales, de variables y de posi-
bles valores por los tipos de atributos, ası́ como la longitud de las cláusulas
y el número de ocurrencias de ciertos predicados.

Otro enfoque recientemente utilizado es emplear funciones de agregación


como las usadas en bases de datos. Se aplican agregaciones a columnas de
tablas y se obtienen atributos como promedios, máximos, mı́nimos, y sumas,
los cuales alimentan a un sistema proposicional.

133
Tabla 6.4: Transformación a una representación proposicional para aprender
la relación de hija.
Variables Atributos proposicionales Cl
X Y f(X) f(Y) P(X,X) P(X,Y) P(Y,X) P(Y,Y) X=Y
fer edu true false false true false false false ⊕
cam car true true false true false false false ⊕
emi ern false false false false true false false ⊖
val rob true false false false false false false ⊖

Para ilustrar más cláramente el proceso de proposicionalización, la tabla 6.4


muestra cómo se podrı́a expresar con Linus, el problema de aprender una
definición para la relación hija, visto al inicio del capı́tulo, donde f (X) sig-
nifica f emenino y p(X, Y ) significa progenitor.

El resultado serı́a:

IF f(X) = true AND p(Y,X) = true


THEN Clase = ⊕.

lo que se puede transformar de regreso a una representación relacional como


sigue: hija(X, Y ) ← f emenino(X), progenitor(Y, X).

El problema con este enfoque esta en como generar un conjunto adecuado


de atributos que sean manejables y la incapacidad de inducir definiciones
recursivas.

6.2.9 Algunas extensiones recientes

El uso de representaciones relacionales ha permeado a prácticamente todas


las áreas de aprendizaje computacional. Dentro de los desarrollos más im-
portantes podemos mencionar:

• Aprendizaje de árboles de decisión relacionales. Se aprenden árboles


binarios, donde cada nodo contiene una conjunción lógica y los nodos
dentro de un camino del árbol, pueden compartir variables entre sı́. El

134
probar un nodo significa probar la conjunción en el nodo y las conjun-
ciones en el camino del nodo raı́z hasta nodo que se está probando.
Esto mismo se ha extendido a árboles de regresión.

• Definición de una medida de distancia relacional que permite calcular


la similaridad entre dos objetos. Esta distancia puede tomar en cuenta
la similaridad entre objetos relacionados, por ejemplo, entre “hijos”
al comparar a dos personas. Esto se puede utilizar para aprendizaje
basado en instancias relacional y para realizar clustering.

• Aprendizaje de reglas de asociación de primer orden. Esto extiende la


expresividad de las reglas de asociación y permite encontrar patrones
más complejos.

• Aprendizaje por refuerzo relacional con lo que se puede aprender una


polı́tica óptima de acciones relacionales en un ambiente relacional. Por
ejemplo, aprender qué movidas realizar en ajedrez, cómo jugar Titris,
etc.

• Aprendizaje de lenguajes lógicos (LLL) o gramáticas aprovechando la


expresividad de la lógica de predicados.

• Combinar ideas de programación lógica inductiva con probabilidad ILP


se puede extender para considerar aspectos probabilı́sticos, en particu-
lar, aprendizaje basado en implicación probabilı́sta, aprendizaje basado
en interpretaciones probabilı́sticas y finalmente, aprendizaje basado en
pruebas lógicas probabilı́sticas.

• Inducir ensambles de clasificadores, tales como Bagging y Boosting en


ILP. La idea es combinar los resultados de varios clasificadores induci-
dos con algoritmos de ILP.

6.2.10 Aplicaciones

Aunque no se ha tenido el auge de otras áreas de aprendizaje, ILP ha


tenido algunos resultados importantes que son difı́ciles de obtener con otras
técanicas. Dentro de las aplicaciones principales, podemos mencionar:

135
• Predicción de relaciones en estructura-actividad, incluyendo la mu-
tagénesis de compuestos moleculares que pueden causar cancer.

• Predicción de la estructura tridimensional secundaria de proteinas a


partir de su estructura primara o secuencia de aminoácidos.

• Diseño de elemento finito de malla para analizar tensión en estructuras


fı́sicas.

• Aprendizaje de reglas para diagnóstico temprano de enfermedades de


reumatismo.

• Construcción de programas a partir de especificaciones de alto nivel.

• Aprendizaje de reglas de control para sistemas dinámicos a partir de


trazas.

• Clasificación biológica de calidad de agua de rı́os.

• Aprendizaje de modelos cualitativos de sistemas dinámicos.

136
Capı́tulo 7

Descubrimiento de
Conocimiento Basado en Grafos

7.1 Introducción

Representación de Conocimiento:

En un sistema de descubrimiento de conocimiento basado en grafos, el al-


goritmo de minerı́a de datos utiliza grafos como representación de conocimiento.
Esto significa que la fase de preparación de datos incluye una transformación
de los datos a un formato de grafo.

Espacio de Búsqueda:

El espacio de búsqueda el algoritmo basado en grafos consiste en todos los


sub-grafos que se pueden derivar a partir del grafo de entrada. Esto quiere
decir que el espacio de búsqueda es exponencial, de la misma manera que
es el tiempo de ejecución de estos algoritmos, al menos que se restrinjan de
alguna manera para que corran en tiempo polinomial.

Criterio de Evaluación:

Una parte muy importante del algoritmo de minerı́a de datos es el criterio


de evaluación. Este criterio se utiliza para determinar cuales subgrafos del

137
espacio de búsqueda son relevantes y pueden ser considerados como parte
de los resultados. El método basado en grafos Subdue utiliza el principio de
longitud de descripción mı́nima (MDL) para evaluar los subgrafos descubier-
tos. El principio MDL dice que la mejor descripción del conjunto de datos
es aquella que minimiza la longitud de la descripción de todo el conjunto
de datos. En el método basado en grafos, el principio MDL se utiliza para
determinar que tan bien un grafo comprime al grafo de entrada. De esta
manera, todos los subgrafos que se generan durante el proceso de búsqueda
se evaluan de acuerdo al principio MDL y los mejores subgrafos se eligen
como parte del resultado.

7.2 Implementación en el sistema Subdue

El método basado en grafos descrito anteriormente fue implementado en el


sistema Subdue (Cook and Holder 1994). Subdue es un sistema de apren-
dizaje relacional utilizado para encontrar subestructuras (subgrafos) que
aparecen repetidamente en la representación basada en grafos de bases de
datos. Una vez que la base de datos esta representada con grafos, Subdue
busca la subestructura que mejor comprime al grafo utilizando el principio
MDL. Despues de encontrar esta subestructura, Subdue comprime el grafo y
puede iterar repitiendo este proceso. Subdue tiene la capacidad de realizar un
macheo inexacto que permite descubrir subestructuras con pequeñas varia-
ciones. Otra caracterı́stica importante de Subdue es que permite utilizar
conocimiento previo representado como subestructuras predefinidas.

7.2.1 Representación de Conocimiento

El modelo de representación que utiliza Subdue es un grafo etiquetado. Los


objetos se representan con vértices y la relaciones con arcos. Las etique-
tas se utilizan para describir el significado de los arcos y vértices. Cuando
se trabaja con bases de datos relacionales, cada renglón se puede considerar
como un evento y los atributos como objetos. Los eventos también se pueden
ligar a otros eventos por medio de arcos. Los atributos de los eventos se de-
scriben mediante un conjunto de vértices y arcos, donde los arcos identifican

138
los atributos especı́ficos y los vértices especifican el valor de ese atributo para
el evento. Una representación basada en grafos es lo suficientemente flexible
para permitir tener más de una representación para un dominio dado, per-
mitiendo al investigador experimentar para obtener la mejor representación
para su dominio. La definición de los grafos tiene un formato especı́fico que
se da como entrada al sistema Subdue. Para esta sección definiremos los
siguientes términos.

Algunos Términos:

• Un subgrafo G′ de G es un grafo conectado cuyos vértices y arcos son


subconjuntos de G.

• Una subestructura S es un subgrafo que tiene asociada una de-


scripción y un conjunto de instancias en el grafo de entrada.

• Una instancia es una ocurrencia de una subestructura S en un grafo


G.

7.2.2 Método de Búsqueda

Subdue utiliza una búsqueda tipo beam (restringida computacionalmente)


para encontrar subestructuras. Una subestructura es un subgrafo contenido
en el grafo de entrada. El algoritmo inicia con un solo vértice como sube-
structura inicial y en cada iteración expande las instancias de aquella sube-
structura añadiendo un arco en cada posible manera. De esta forma genera
nuevas subestructuras que podrı́an considerarse para expansión. El método
de búsqueda también puede sesgarse utilizando conocimiento previo (p.e.
subestructuras que creemos que pueden existir en los datos, pero que quer-
emos estudiar con mayor detalle) dadas por el usuario (Cook and Holder
1994). En este caso, el usuario provee subestructuras de conocimiento previo
como entrada a Subdue. Subdue encuentra instancias de las subestructuras de
conocimiento previo en el grafo de entrada y continúa buscando extensiones
de aquellas subestructuras. El algoritmo de búsqueda de Subdue se muestra
en la tabla 7.1.

139
Tabla 7.1: Algoritmo de Búsqueda de Subdue

Subdue(Graph, Limit, Beam, NumBestSubs)


P rocessedSubs = 0
P arentList = All substructures of one vertex in Graph
while(P rocessedSubs ≤ Limit)
ChildList = {}
while(P arentList 6= {})
P arent = (RemoveSubstructure(P arentList)
Instances = Extend(Parent) en todas las maneras posibles
ChildSubs = Group(Instances)
Evaluate(ChildSubs)
Insert substructures in ChildSubs into ChildList mod Beam
P rocessedSubs = P rocessedSubs + 1
Insert P arent into BestList mod NumBestSubs
end while
P arentList = ChildList
end while
return BestList
end

140
El algoritmo de búsqueda inicia con la creación de una subestructura de
cada etiqueta de vértice y sus instancias asociadas, las cuales se insertan
en ParentList. Después, cada subestructura de ParentList se extiende en
cada posible manera añadiendo un vértice y un arco o solo un arco (en el
caso de que el arco ligue dos vértices que ya existan en la subestructura).
Las instancias resultantes de la extensión se agrupan en subestructuras. La
primera aparición de cada instancia se convierte en la definición de sube-
structura, y el resto se asocia a esa subestructura como instancias. Después,
todas las subestructuras producidas se evalúan de acuerdo al principio MDL
y se insertan en ChildList ordenadas por su valor. ChildList mantiene tantas
subestructuras como el valor del parámetro Beam. Posteriormente, la sube-
structura Parent se inserta en BestList (la cual mantiene solo NumBestSubs
subestructuras), y este proceso continúa hasta que ParentList se vacı́e. En
este momento ParentList y ChildList se intercambian y se repite el proceso.
El número de subestructuras Parent consideradas en la búsqueda esta re-
stringido por el parámetro Lı́mite. El valor por default de este lı́mite se
deriva de el número de arcos y vértices en el grafo de entrada ( el número de
vértices mas el número de arcos dividido por dos). BestList esta restringida
por default a tener el mismo tamaño que la longitud del beam Beam, pero las
restricciones de longitud se pueden modificar independientemente utilizando
los parámetros del sistema.

7.2.3 Criterio de Evaluación

En Subdue se implemento un criterio de evaluación para decidir cuales pa-


trones se van a elegir como conocimiento importante o estructuras. El método
del modelo de evaluación se llama Codificación Mı́nima (Minimum Encod-
ing), una técnica derivada el Principio de Longitud de Descripción Mı́nima
MDLP (Rissanen 1989), el cual dice que la mejor descripción de un conjunto
de datos es aquella que minimiza la longitud de la descripción de todo el
conjunto de datos.

En relación a Subdue, la mejor descripción del conjunto de datos es aquella


que minimiza I(S) + I(G|S), donde S es la subestructura utilizada para
describir el grafo de entrada G, I(S) es la longitud (en número de bits)
requerido para codificar S, e I(G|S) es la longitud del grafo codificado G

141
después de ser comprimido utilizando la subestructura S.

Cada vez que Subdue encuentra una subestructura, la evalua utilizando el


principio MDL y compara su valor con el de las otras subestructuras. Subdue
elige la subestructura que mejor comprime el grafo en términos del principio
MDL. Después, reemplazaa las instancias de la subestructura con un solo
vértice que la representa através del grafo e inicia una nueva iteración en
busca de nuevas subestructuras que incluso pueden contener subestructuras
encontradas en iteraciones previas. El número de iteraciones es un parámetro
de entrada a Subdue.

Existen varias formas de limitar la búsqueda de Subdue. Una es utilizando


una técnica de podado (también es un parámetro de entrada a Subdue) que
termina la búsqueda cuando la evaluación MDL ya no mejora. Otra forma
de limitar la búsqueda es definir un tamaño máximo para las subestructuras
que Subdue busca en términos del número de vértices. Es posible combinar
estas técnicas para delimitar la búsqueda de Subdue.

7.2.4 Subestructuras Predefinidas

Es posible guiar a Subdue para que encuentre subestructuras que creemos que
estan en la base de datos. Para esto especificamos a Subdue subestructuras
predefinidas en un archivo separado y también en su representación basada
en grafos.

La ventaja de utilizar subestructuras predefinidas es que guiamos la búsqueda


hacia una meta especı́fica y al mismo tiempo se reduce la complejidad de la
búsqueda.

Por supuesto que esto solo funciona si la subestructura predefinida existe


en la base de datos, por lo que esta caracterı́stica la explota mejor el experto
en el dominio.

142
7.2.5 Macheo Inexacto de Grafos

Subdue tiene la capacidad de encontrar subestructuras con ligeras diferen-


cias en sus instancias. Estas diferencias pueden ser causa de ruido o por la
naturaleza de la información. Algunas de estas pequeñas diferencias pueden
ser un vértice adicional o uno mejor, una etiqueta diferente en un vértice, un
arco que no existe en una instancia, etc.

La manera en que Subdue maneja el macheo inexacto es asignando un


costo a cada diferencia que encuentra en la nueva instancia y lleva un registro
del costo total de las diferencias de la nueva instancia con respecto a la origi-
nal. Si el costo es menos que un umbral (este umbral se da como parámetro),
entonces se considera que la nueva instancia hace un macheo con la original.
Se utilizan reglas para asignar un costo a cada tipo de diferencia, estas reglas
se ajustan de acuerdo al dominio. El procedimiento de macheo de grafos
esta restringido a ser polinomial con respecto al tamaño de los grafos que se
comparan.

7.3 Aprendizaje de Conceptos basado en Grafos

Los sistemas basados en lógica han dominado el área de aprendizaje de con-


ceptos relacional, en especial los sistemass de programación lógica inductiva
Inductive Logic Programming (ILP) (Muggleton and Feng 1992).

Sin embargo, la lógica de primer orden también se puede representar como


un grafo y de hecho, la lógica de primer orden es un subconjunto de lo que se
puede representar utilizando grafos (Sowa 1992). Entonces, los sistemas de
aprendizaje que utilizan representaciones gráficas también tienen el potencial
de aprender conceptos ricos si pueden manejar el incremento en el tamaño
del espacio de hipótesis.

7.3.1 Modelo

Como se ha mencionado, el aprendizaje de conceptos es un proceso que con-


siste en la inducción de una función concepto a partir de ejemplos de entre-

143
namiento positivos y negativos. Para el aprendizaje de conceptos basado en
grafos, se utiliza un conjunto de ejemplos positivos y negativos en su repre-
sentación con grafos para entrenar y encontrar el concepto que describe el
dominio.

La meta es que el concepto encontrado debe ser capaz de predecir si un


nuevo ejemplo (uno que no fue utilizado durante el entrenamiento) pertenece
al concepto o no. Los grafos son una buena representación para datos es-
tructurales y capaz de representar FOPC.

El espacio de hipótesis consiste de todos los subgrafos que se pueden


derivar a partir de los grafos de ejemplos positivos; este espacio es exponencial
con respecto al tamaño de los grafos (número de vértices y arcos).

El criterio de evaluación se basa en el número de ejemplos positivos y


negativos que describe la hipótesis a partir del conjunto de entrenamiento.
Una buena hipótesis es aquella que describe a los ejemplos positivos pero no
a los ejemplos negativos.

El método de aprendizaje de conceptos SubdueCL sigue el paradigma


set-covering. Esto implica que el concepto resultante puede consistir de un
conjunto de subconceptos.

El proceso de aprendizaje inicia con el conjunto de ejemplos positivos y


negativos. Cuando se encuentra un sub-concepto, todos los ejemplos pos-
itivos cubiertos por él se quitan del conjunto de entrenamiento y se inicia
una búsqueda de un nuevo sub-concepto. Este proceso se repite hasta que
todos los ejemplos positivos se han descrito a través de cualquiera de los
sub-conceptos encontrados. La hipótesis resultante es un conjunto de sub-
conceptos en DNF (Disjunctive Normal Form).

El concepto resultante se utiliza para clasificar nuevos ejemplos (no in-


cluidos en el conjunto de entrenamiento). El ejemplo se prueba por el primer
sub-concepto en la DNF. Si el ejemplo descrito por el sub-concepto, entonces
el ejemplo se clasifica como positivo. Si el ejemplo no fue descrito por el
primer sub-concepto, se prueba con el segundo sub-concepto. Si el segundo
sub-concepto describe el ejemplo, entonces el ejemplo es positivo, y si no, se
utiliza el siguiente sub-concepto para probar el nuevo ejemplo. Este proceso
continúa hasta que uno de los sub-conceptos en la DNF clasifica al ejemplo

144
como positivo o todos los sub-conceptos se probaron sin ningún resultado
positivo, lo cual significa que el ejemplo se clasifica como negativo.

7.3.2 Implementación

Para extender Subdue para poder realizar la tarea de aprendizaje de concep-


tos se incluyó el manejo de ejemplos negativos al proceso. Las subestructuras
que describen ejemplos positivos, pero no ejemplos negativos, son las que
tienen más posibilidades de representar el concepto deseado. Por lo tanto, la
versión de aprendizaje de conceptos de Subdue, que conocemos como Sub-
dueCL, acepta ejemplos positivos y negativos en formato de grafo.

Como Subdue CL es una extensión de Subdue, utiliza el núcleo de fun-


ciones de Subdue para realizar operaciones con grafos, pero el proceso de
aprendizaje cambia. SubdueCL trabaja como un algoritmo de aprendizaje
supervizado, que diferencı́a ejemplos positivos de los negativos utilizando
una método set-covering en lugar de compresión de grafos. La hipótesis
encontrada por SubdueCL consiste de un conjunto de disyunciones de con-
junciones (subestructuras, por ejemplo, el concepto puede contener varias re-
glas). SubdueCL forma una de esas conjunciones (reglas) en cada iteración.
Los grafos de ejemplos positivos descritos por la subestructura encontrada
en una iteración anteriorse eliminan del grafo de entrada para las iteraciones
siguientes.

7.3.2.1 Evaluación de Subestructuras

La manera en que SubdueCL decide si las subestructuras (o reglas) formarán


parte del concepto o no es diferente a Subdue. SubdueCL utiliza una fórmula
de evaluación para asignar un valor a cada una de las subestructuras gen-
eradas. Esta fórmula asigna un valor a una subestructura de acuerdo a que
tan bien describe a los ejemplos positivos (o subconjunto de los ejemplos
positivos) sin describir ejemplos negativos. De esta manera, los ejemplos
positivos cubiertos por la subestructura incrementan el valor de la misma
mientras que los ejemplos negativos decrementan su valor. En esta fórmula
los ejemplos positivos que no son cubiertos y los negativos cubiertos por la

145
subestructura se consideran errores poruq la subestructua ideal seria una
que cubre todos los ejemplos positivos sin cubrir ningún ejemplo negativo.
El valor de la subestructura se calcula con la siguiente ecuación:
value = 1 − Error

donde el error se calcula con respecto a los ejemplos positivos y negativos


cubiertos por la subestructura utilizando la siguiente fórmula:
#P osEgsNotCovered + #NegEgsCovered
Error =
#P osEgs + #NegEgs

Utilizando esta ecuación, SubdueCL elige reglas que maximizan el valor


de las subestructuras y de esta manera minimiza el número de errores hechos
por la subestructura utilizada para formar el concepto. Los ejemplos posi-
tivos no cubiertos por la subestructura y los ejemplos negativos cubiertos por
ella se consideran errores. #P osEgsNotCovered es el número de ejemplos
positivos no cubiertos y #NegEgsCovered es el número de ejemplos cubier-
tos cubiertos. #P osEgs es el número de ejemplos positivos que quedan en
el conjunto de entrenamiento (recordando que los ejemplos positivos que ya
fueron cubiertos en alguna de las iteraciones anteriores ya fueron removidos
del conjunto de entrenamiento), y #NegEgs es el número total de ejemp-
los negativos. Este número no cambia porque los ejemplos negativos no se
remueven del conjunto de entrenamiento.

El problema de la ecuación 2 es que cuando dos subestructuras tienen el


mismo error, nos gustarı́a elegir aquella que cubra más ejemplos positivos.
Por ejemplo, suponiendo que tenemos 10 ejemplos positivos y 10 negativos.
La subestructura S1 cubre 5 ejemplos positivos y 0 negativos, y la sube-
structura S2 cubre 10 ejemplos positivos y 5 negativos. En este caso ambas
subestructuras tienen un error de 41 de acuerdo a la ecuación 2 pero preferi-
mos elegir S1 porque no cubre ningún ejemplo negativo. Para hacer esto, se
asigna una penalización (sea k) a los errores negativos. Después de alguna
manipulación matemática expresamos el error con la fórmula 3, donde k es un
peso de penalizació y k ≥ 2. El valor por default de k es de 3. Ahora el error
de S1 y S2 de acuerdo a la fórmula 3 (y con el valor por default de k = 3) es
de 45 y 74 respectivamente. Con esta fórmula, SubdueCL preferira S1 sobre
S2. Los resultados de un análisis empı́rico mostraron que esta ecuación para
evaluar subestructuras funciona muy bien.

146
Tabla 7.2: Algoritmo Principal de Subdue

Main(Gp , Gn , Limit, Beam)


H={}
repeat
repeat
BestSub = SubdueCL(Gp , Gn , Limit, Beam)
if BestSub = {}
then Beam = Beam * 1.1
until(BestSub 6= {})
Gp = Gp - {p ∈ Gp |BestSubcoversp }
H = H + BestSub
until Gp = {}
return
end

7.3.3 Algoritlmo SubdueCL

El algoritmo SubdueCL se muestra en las tablas 7.2 y 7.3. La función


principal toma como parámetros los ejemplos positivos Gp , los ejemplos neg-
ativos Gn , el tamaño del beam (porque el algoritmo de SubdueCL utiliza
una búsqueda beam), y un lı́mite limit sobre el número de subestructuras
a incluir en su búsqueda. La función principal hace llamadas a la función
SubdueCL para formar la hipótesis H que describa los ejemplos positivos.

Cada vez que se hace una llamada a la función SubdueCL se añade una
subestructura a H. En el caso en que SubdueCL regresa NULL, el Beam
se incrementa en 10%, de tal modo que SubdueCL pueda explorar un espa-
cio de búsqueda más amplio. Elegimos hacer incrementos del beam de 10%
porque ese valor fue suficiente para encontrar una subestructura en la sigu-
iente iteración para la mayorı́a de los experimentos. Además, después de que
SubdueCL encuentra una subestructura, los ejemplos positivos cubiertos por
ella se eliminan del grafo positivo.

En la tabla 7.3 se muestra la función SubdueCL, la cual empieza a con-

147
Tabla 7.3: Algoritmo SubdueCL.

SubdueCL(Gp , Gn , Limit, Beam)


P arentList = (All substructures of one vertex in Gp ) mod Beam
Repeat
BestList = {}
Exhausted = TRUE
i = Limit
while ((i ¿ 0 ) and (P arentList 6= {}))
ChildList = {}
foreach substructure in P arentList
C = Expand(Substructure)
Evaluate(C, Gp , Gn )
if CoversOnePos(C, Gp )
then BestList = BestList ∪ C
ChildList = (ChildList ∪ C) mod Beam
i=i-1
endfor
P arentList = ChildList mod Beam
endwhile
if BestList = {} and P arentList 6= {}
then Exausted = FALSE
Limit = Limit * 1.2
until(Exhausted = TRUE)
return f irst(BestList)
end

148
struir una ParentList creando una subestructura para cada vértice en el
grafo con una etiqueta diferente, pero manteniendo solo tantas subestructuras
como lo permita el tamaño del Beam. El operador “mod Beam” significa que
las listas contienen tantas subestructuras como el tamaño del Beam. Poste-
riormente se expande cada una de las subestructuras en la lista ParentList
con un arco o un vértice y un arco en todos los modos posibles y se evalúa
de acuerdo a la ecuación presentada anteriormente. Aquellas subestructuras
que cubran al menos un ejemplo positivo y caen dentro de los lı́mites del
tamaño del Beam se quedan en la lista BestList. La lista ChildList mantiene
todas las subestructuras que fueron obtenidas de la expansión de las sube-
structuras de la lista ParentList y también se esta restringida por el tamaño
del Beam.

El parámetro Limit se utiliza para expandir tantas subestructuras como


su valor, pero si la lista BestList esta vacı́a después de expandir tantas sube-
structuras como el valor de Limit de la lista ParentList, entonces Limit se
incrementa en 20% hasta que se encuentre una. Elegimos un valor de in-
cremento del lı́mite de 20% porque usualmente era suficiente para encontrar
una subestructura positiva en el siguiente intento para nuestros experimentos.
Finalmente la función SubdueCL regresa lo mejor de la lista BestList con-
teniendo todas las subestructuras que cubren al menos un ejemplo positivo.
Es importante mencionar que todas las listas estan ordenadas de acuerdo al
valor de evaluación de las subestructuras.

149
Capı́tulo 8

Aprendizaje Bayesiano

8.1 Probabilidad

Existen diferentes interpretaciones de probabilidad, las más comunes son:

• Clásica: P (A) = N(A)/N

• Frecuencia relativa: P (A) = limN →∞ N(A)/N

• Subjetiva: P(A) = “creencia en A” (factor de apuesta)

Definición: Dado un experimento E y el espacio de muestreo S respectivo,


a cada evento A le asociamos un número real P (A), el cual es la probabilidad
de A y satisface las siguientes propiedades:

1. 0 ≤ P (A) ≤ 1

2. P (S) = 1

3. P (A ∪ B) = P (A) + P (B), si A y B mutuamente exclusivos

Teorema 1: P (∅) = 0

150
Teorema 2: P (A) = 1 − P (A)

Teorema 3: P (A ∪ B) = P (A) + P (B) − P (A ∩ B)

Probabilidad Condicional

Si A y B son dos eventos en S, la probabilidad de que ocurra A dado que


ocurrió el evento B es la probabilidad condicional de A dado B, y se denota
P (A | B).

La probabilidad condicional por definición es: P (A | B) = P (A∩B)/P (B),


dado P (B) > 0

Ejemplo: Para un dado, si sé que cayó impar, cuál es la probabilidad de 3?

Similarmente: P (B | A) = P (A ∩ B)/P (A)

De donde: P (B | A) = P (B)P (A | B)/P (A)

Esta expresión se conoce como el Teorema de Bayes, que en su forma más


general es:
P
P (Bj | Ai ) = P (Bj )P (Ai | Bj )/ j P (Ai | Bj )P (Bj )

El denominador se le conoce como el teorema de la probabilidad total.

Teorema 4: Si B1 , B2 , . . . , Bk representan una partición (exclusivos, exhaus-


tivos y mayores a cero) de S, y A es un evento respecto a S, entonces la
probabilidad de A la podemos escribir como:
P
P (A) = j P (A | Bj )P (Bj )

Eventos independientes

Dos eventos, A y B, son independientes si la ocurrencia de uno no tiene


que ver con la ocurrencia de otro.

Por definición, A es independiente de B si y sólo si: P (A∩B) = P (A)P (B)

Esto implica que: P (A | B) = P (A) y que P (B | A) = P (B)

Independientes es diferente a mutuamente exclusivos.

151
Independencia condicional

Un evento A es condicionalmente independiente de otro B dado un tercer


evento C, si el conocer C hace que A y B sean independientes. Es decir, si
conozco C, B no tiene influencia en A. Esto es: P (A | B, C) = P (A | C)

Ejemplo:

• A - regar el jardı́n
• B - predicción del clima
• C - lluvia

De la definicı́on de probabilidad condicional, podemos obtener una ex-


presı́on para evaluar la probabilidad conjunta de N eventos:
P (A1 , A2 , ..., An ) = P (A1 | A2 , ..., An )P (A2 | A3 , ..., An ) · · · P (An )

Variables Aleatorias

Si a cada posible evento A le asignamos un valor numérico real, X(A),


obtenemos una variable aleatoria. A cada valor de la variable le corresponde
una probabilidad, P (X = k).

Las variables aleatorias pueden ser de dos tipos: discretas y continuas.


Nosotros nos enfocaremos a variables discretas.

Ejemplos de variables aleatorias discretas: lanzar una moneda, lanzar un


dado, número de fallas antes de darle al blanco.

Función acumulativa de probabilidad

Para una variable aleatoria X, se define la función acumulativa de prob-


abilidad como la probabilidad de que la variable aleatoria sea menor a un
valor x:

F (x) = P {X ≤ x}

Es decir, corresponde a la sumatoria de la función de probabilidad de −∞ a


x:

152
Px
F (x) = −∞ p(X)

Propiedades:

1. 0 ≤ F (x) ≤ 1

2. F (x1) ≤ F (x2) , si x1 ≤ x2 (función siempre creciente)

3. F (−∞) = 0

4. F (+∞) = 1

Estadı́sticas de una variable aleatoria

Valores caracterı́sticos de una variable aleatoria:

• Modo: valor de probabilidad máxima

• Media: valor medio (divide el área en 2 partes iguales)

Momentos

• promedio (valor esperado o primer momento): E{X} = M1 (X) =


P
xi P (xi )
P
• valor promedio-cuadrado (segundo momento): M2 (X) = x2i P (xi )
P
• momento N: Mn (X) = xni P (xi )

Momentos “centrales”

P
• varianza: σ 2 (X) = (xi − E{X})2 P (xi )

• desviación estandar: σ(x) = σ 2 (x)

Variables Aleatorias de 2-Dimensiones

153
Definición: Dado un experimento E con espacio de muestreo S. Si X y Y
son dos funciones que le asignan números reales a cada resultado posible,
entonces (X, Y ) es una variable aleatoria bidimensional .

Dadas dos variables aleatorias (discretas), X, Y , deben satisfacer lo sigu-


iente:

1. P (xi , yj ) ≥ 0
P P
2. i j P (xi , yj ) = 1

Ejemplos: número de artı́culos terminados en dos lı́neas de producción,


número de pacientes con cancer y número de fumadores, etc.

Probabilidad marginal

Es la probabilidad particular de una de las variables dada un variable


aleatoria bidimensional, y se define como:
P
P (X) = y P (xi , yj )

Probabilidad condicional

Dada la probabilidad conjunta y marginal, la probabilidad condicional se


define como:

P (X | Y ) = P (X, Y )/P (Y )

Variables independientes

Dos variables aleatorias son independientes si su probabilidad conjunta


es igual al producto de las marginales, esto es:

P (xi , yj ) = P (xi )P (yj ), ∀(i.j)

Correlación

El coeficiente de correlación (ρ) denota el grado de linearidad entre dos


variables aleatorias y se define como:

ρxy = E{[X − E{X}][Y − E{Y }]}/σx σy

154
La correlación está dentro del intervalo: ρ ∈ [−1, 1], donde un valor de 0
indica no-correlacionadas, y un valor de -1 ó 1 indica una relación lineal.

• Independencia → no-correlación (pero no viceversa).

Distribución Binomial

Una distribución binomial de la probabilidad de observar r eventos (e.g.,


soles) de n muestras independientes con dos posibles resultados (e.g., tirar
monedas).

n!
P (r) = pr (1 − p)(n−r)
r!(n − r)!

El valor esperado es: E{x} = np

La varianza es: V ar(x) = np(1 − p)


q
La desviación estandar es: σx = np(1 − p)

Si n es grande, se aproxima a una distribución Normal

Distribución Normal o Gaussiana

1 1 x−µ 2
p(x) = √ e− 2 ( σ )
2πσ 2

El valor esperado es: E{x} = µ

La varianza es: V ar(x) = σ 2

La desviación estandar es: σx = σ

El Teorema Central del Lı́mite dice que la suma de un número grande


de variables aleatorias independientes identicamente distribuidas siguen una
distribución Normal.

155
8.2 Aprendizaje Bayesiano

Aprendizaje Bayesiano es importante por:

• ser práctico
• provee un enfoque de comprensión (y diseño) de otros algoritmos

Algunas caracterı́sticas:

• Cada nuevo ejemplo puede aumentar o disminuir la estimación de una


hipótesis (flexibilidad - incrementalidad)
• Conocimiento a priori se puede combinar con datos para determinar
la probabilidad de las hipótesis
• Da resultados con probabilidades asociadas
• Puede clasificar combinando las predicciones de varias hipótesis
• Sirve de estandar de comparación de otros algoritmos

Problemas:

• Se requieren conocer muchas probabilidades


• Es computacionalmente caro (depende linealmente del número de hipótesis)

Lo que normalmente se quiere saber en aprendizaje es cuál es la mejor


hipótesis (más probable) dados los datos.

Si denotamos P (D) como la probabilidad a priori de los datos (i.e., cuales


datos son más probables que otros), P (D | h) la probabilidad de los datos
dada una hipótesis, lo que queremos estimar es: P (h | D), la probabilidad
posterior de h dados los datos. Esto lo podemos estimar con Bayes.

Teorema de Bayes:
P (D | h)P (h)
P (h | D) =
P (D)

156
Para estimar la hipótesis más probable o MAP (maximum a posteriori
hypothesis):

hM AP = argmaxh∈H (P (h | D))
 
P (D|h)P (h)
= argmaxh∈H P (D)

= argmaxh∈H (P (D | h)P (h))

Ya que P (D) es una constante independiente de h.

Si asumimos que todas las hipótesis son igualmente probables, entonces


nos queda la hipótesis de máxima verosimilitud o ML (maximum likelihood ):

hM L = argmaxh∈H (P (D | h))

Ejemplo: Se tienen dos hipótesis, el paciente tiene un tipo de cancer o no


tiene cancer.

Sabemos que solo el 0.008% de la población tiene ese tipo de cancer. La


prueba sobre cancer no es infalible, y nos da resultados positivos correctos
en el 98% de los casos y nos da resultados negativos correctos en el 97% de
los casos.

Esto es:
P (cancer) = 0.008 y P (¬cancer) = 0.992
P (⊕|cancer) = 0.98 y P (⊖|cancer) = 0.02
P (⊕|¬cancer) = 0.03 y P (⊖|¬cancer) = 0.97

Si a un paciente le dieron un resultado positivo en la pruebra:

P (cancer|⊕) = P (cancer)P (⊕|cancer) = 0.008 ∗ 0.98 = 0.0078


P (¬cancer|⊕) = P (¬cancer)P (⊕|¬cancer) = 0.992 ∗ 0.03 = 0.0298

Que al normalizar, nos da:


P (cancer|⊕) = 0.21
P (¬cancer|⊕) = 0.69

Por lo que sigue siendo más probable que no tenga cancer.

157
Una forma de implantar un algoritmo Bayesiano es calculando para to-
das las posibles hipótesis su P (h | D) = P (D|h)P
P (D)
(h)
y quedandose con la de
mayor probabilidad. Obviamente esto es impráctico cuando se tienen muchas
posibles hipótesis.

También para hacerlo, necesitamos especificar los valores para P (h) y


para P (D | h).

Si asumimos que no hay ruido y que todas las hipótesis son igualmente
1
probables (i.e., P (h) = |H| ∀h ∈ H), P (D | h) = 1 sii D es consistente con h.
Esto es:
1
P (h | D) =
| V SH,D |
donde, V SH,D es el subconjunto de hipótesis de H que es consistente con D
(su espacio de versiones).

Por lo mismo, toda hipótesis consistente es una hipótesis MAP.

Lo que quiere decir, es que cualquier sistema de aprendizaje que nos de


hipótesis consistentes, asumiendo que no hay ruido y que todas las hipótesis
son igualmente probables, nos está dando hipótesis MAP.

Si tenemos un sistema de aprendizaje de general a especı́fico (o al revés)


que busca especializaciones más generales (o generalizaciones más especı́ficas),
lo podemos caracterizar asumiendo que las hipótesis más generales (o es-
pecı́ficas) son más probables que las otras.

En general, podemos caracterizar varios algoritmos de aprendizaje con un


enfoque Bayesiano, al caracterizar sus distribuciones de probabilidad P (h) y
P (D | h).

Variables Continuas y Ruido

Los métodos más usados para buscar funciones con variables continuas
a partir de datos con cierto ruido, son regresiones lı́neales, ajustes de poli-
nomios y redes nueronales.

La idea es aprender funciones h : X → R lo más cercanas a f , en donde


los datos están descritos por: di = f (xi ) + ei , donde f (xi ) es la función sin
ruido y ei es una variable aleatoria representando el error.

158
Asumimos que la distribución de probabilidad de ei está dada por una
distribución Gaussiana (normal) con media cero.

De nuevo lo que queremos es encontrar la hipótesis más probable:

hM L = argmaxh∈H (p(D | h))

Asumiento que los datos son independientes entre sı́ dado h, la proba-
bilidad se puede expresar como el producto de varias p(di | h) para cada
dato: !
m
Y
hM L = argmaxh∈H p(di | h)
i=1

Como el ruido sigue una distribución Gaussiana con media cero y vari-
anza σ 2 , cada di debe de seguir la misma distribución pero ahora centrada
alrededor de f (xi ).

m
!
Y 1 1 2
hM L = argmaxh∈H √ e− 2σ2 (di −µ)
2πσ 2
i=1

m
!
Y 1 1 2
hM L = argmaxh∈H √ e− 2σ2 (di −h(xi ))
i=1 2πσ 2

Podemos maximizar tomando su logartimo (dado que es una función


monotónica creciente):

m
!
X 1 1
hM L = argmaxh∈H ln( √ ) − 2 (di − h(xi ))2
i=1 2πσ 2 2σ

Eliminando el primer término (que no depende de h):

m
!
X 1
hM L = argmaxh∈H − 2 (di − h(xi ))2
i=1 2σ

Que es igual a minimizar lo mismo con el signo contrario. Al cambiar


signo y eliminar constantes que no dependen de h nos queda:

159
m
!
X 2
hM L = argminh∈H (di − h(xi ))
i=1

Lo que nos dice que la hipótesis de máxima verosimilitud es la que min-


imiza la suma de los errores al cuadrado entre los datos observados (di ) y
los datos predichos (h(xi )), siempre y cuando el error siga una distribución
Normal con media cero.

Todo esto asume que el error está dado únicamente en el valor meta y no
en los atributos que describen la meta.

Principio de Longitud de Descripción Mı́nima

Como el proceso inductivo no es seguro se necesita alguna medida de


calidad.

Normalmente se hace en base a evaluaciones con los ejemplos de entre-


namiento y prueba.

Una alternativa es encontrar la hipótesis más probable dados los datos.

El MDL está motivado al interpretar la definición de hM AP en base a


conceptos de teorı́a de información.

hM AP = argmaxh∈H (P (D | h)P (h))

= argmaxh∈H (log2 (P (D | h)) + log2 (P (h)))

= argminh∈H (−log2 (P (D | h)) − log2 (P (h)))

Lo cual puede pensarse como el problema de diseñar el mensaje de trans-


misión de información más compacto para transmitir la hipótesis y los datos
dada la hipótesis.

MDL recomienda seleccionar la hipótesis que minimiza la suma de estas


dos descripciones:

hM DL = argminh∈H (L(h) + L(D | h))

160
Si lo queremos aplicar a un árbol de decisión, tenemos que buscar una
codificación para los árboles de decisión y una para los ejemplos mal clasifi-
cados junto con su clasificación.

Esto permite establecer un balance entre complejidad de la hipótesis


(L(h)) y número de errores o calidad de la hipótesis (L(D | h)).

La idea es detectar regularidades en los datos para que el código de trans-


misión de la hipótesis con los datos sea menor que el de los datos solos.

Clasificador Bayesiano Óptimo

En lugar de preguntarnos cuál es la hipótesis más probable, podemos


preguntar, cuál es la clasificación más probable para un ejemplo.

La clasificación más probable se puede obtener combinando las clasifica-


ciones de todas las hipótesis aplicables pesadas por su probabilidad.

Si la clasificación puede tomar un valor vj :

X
P (vj | D) = P (vj | hi )P (hi | D)
hi ∈H

Y la clasificación óptima será:


 
X
argmaxvj ∈V  P (vj | hi )P (hi | D)
hi ∈H

Ejemplo:

Supongamos que tenemos dos clases 3 hipótesis (h1 , h2 , h3 ) y que sus


probabilidades dados los datos son (0.4, 0.3, 0.3) respectivamente. Si se tiene
un nuevo ejemplo x que se clasifica como positivo por h1 pero negativo por h2
y h3 , su clasificación por la hipótesis MAP serı́a positivo, pero considerando
todas las hipótesis serı́a negativo.

P (h1 |D) = 0.4, P (⊖|h1 ) = 0, P (⊕|h1) = 1


P (h2 |D) = 0.3, P (⊖|h2 ) = 1, P (⊕|h2) = 0
P (h3 |D) = 0.3, P (⊖|h3 ) = 1, P (⊕|h3) = 0

161
X
P (⊕ | hi )P (hi | D) = 0.4
hi ∈H

X
P (⊖ | hi )P (hi | D) = 0.6
hi ∈H
 
X
argmaxvj ∈{⊕,⊖}  P (vj | hi )P (hi | D) = ⊖
hi ∈H

Aplicar el clasificador Bayesiano óptimo puede ser muy costoso.

Una posibilidad es seleccionar una hipótesis (h) aleatoriamente de acuerdo


con la distribución de probabilidad de las probabilidades posteriores de H, y
usar h para predecir (Gibbs).

Se puede mostrar que el error esperado es a lo más el doble del error


esperado del clasificador Bayesiano óptimo.

8.3 Clasificador Bayesiano naive

Se utiliza cuando queremos clasificar una instancia descrita por un conjunto


de atributos (ai ’s) en un conjunto finito de clases (V ).

Clasificar un nuevo ejemplo de acuerdo con el valor más probable dados


los valores de sus atributos.

vM AP = argmaxvj ∈V (P (vj | a1 , . . . , an ))

Usando Bayes:

 
P (a1 ,...,an |vj )P (vj )
vM AP = argmaxvj ∈V P (a1 ,...,an )

= argmaxvj ∈V (P (a1 , . . . , an | vj )P (vj ))

162
P (vj ) se puede estimar con la frecuencia de las clases, pero para P (a1 , . . . , an |
vj ) tenemos muy pocos elementos. El clasificador Bayesiana naive, también
llamado a veces idiot Bayes, asume que los valores de los atributos son condi-
cionalmente independientes dado el valor de la clase.
Q
Osea: P (a1 , . . . , an | vj ) = i P (ai | vj )

Por lo que:
!
Y
vN B = argmaxvj ∈V P (vj ) P (ai | vj )
i

Los valores P (ai | vj ) se estiman con la frecuencia de los datos observados.

Nota: no se hace búsqueda de hipótesis, simplemente se cuentan frecuen-


cias de ocurrencias.

Ejemplo:

Si tomamos el ejemplo de la tabla 2.2 (de jugar golf), supongamos que


tenemos el siguiente ejemplo que lo queremos clasificar con un naive Bayes:

Ambiente=soleado, Temperatura=baja, Humedad=alta, Viento=si

vN B = argmaxvj ∈{P,N } P (vj ) (P (Ambiente = soleado | vj )


P (T emperature = baja | vj )P (Humedad = alta | vj )
P (V iento = si | vj ))

P (Clase = P ) = 9/14
P (Clase = N) = 6/14
P (V iento = si | P ) = 3/9 = 0.33
P (V iento = si | N) = 3/5 = 0.60

P (P )P (soleado | P )P (baja | P )P (alta | P )P (si | P ) = 0.0053


P (N)P (soleado | N)P (baja | N)P (alta | N)P (si | N) = 0.0206
0.0206
Que normalizando nos da: 0.0206+0.0053
= 0.795.

163
Estimación de Probabilidades

Hasta ahora hemos asumido que la probabilidad de un evento se puede


estimar por su frecuencia ( nnc ).

A pesar de ser una buena aproximación, da estimaciones malas cuando


tenemos pocos ejemplos.

Una alternativa es utilizar la estimación m (m-estimate):


nc + m ∗ p
n+m

donde p es una estimación a priori de lo que queremos estimar y m es una


constante llamada “tamaño de muestra equivalente” (equivalent sample size).

Una valor tı́pico para p es asumir que se tiene una distribución uniforme,
por lo que: p = k1 cuando existen k posibles valores.

m también se usa como estimador de ruido.

Ejemplo

Podemos usar un clasificador Bayesiano naive para aprender a clasificar


textos de acuerdo a las preferencias de un usuario.

Suponemos que los ejemplos son documentos en texto asociados con una
clase (e.g., me interesa y no me interesa, o polı́tica, deportes, espectáculos,
sociales, etc.). Suponiendo que las palabras son idependientes entre sı́ y de
su posición en el texto (lo cual no es cierto, pero de todos modos se tienen
buenos resultados):

Vocabulario = todas las palabras distintivas (eliminando palabras muy co-


munes y poco distintivas como artı́culos, puntuaciones, etc.)

Para cada clase:


doc(clase) = subconjunto de textos de esa clase
P (clase) = |doc(clase)|
Ejemplos
Texto = concatenación de todos los textos en doc(clase)
n = número de palabras distintas en Texto
Para cada palabra (w) en Vocabulario:

164
nk = número de veces que aparece la palabra w en Texto
P (w|clase) = n+|V nocabulario|
k +1

(se calcula la probabilidad considerando el estimador m, nn+m


c +mp

con probabilidad uniforme en las clases (Laplace) y m = |V ocabulario|

Para clasificar un nuevo documento (considerando solo las palabras en el


nuevo documento que teniamos en Vocabulario):
!
Y
vN B = argmaxvj ∈V P (vj ) P (ai | vj )
i

8.4 Aprendizaje en Redes Bayesianas

Introducción

Las redes bayesianas o probabilı́sticas son una representación gráfica de


dependencias para razonamiento probabilı́stico en sistemas expertos, en la
cual los nodos y arcos representan:

• Nodo: Variable proposicional.


• Arcos: Dependencia probabilı́stica.

Definición:

Una red probabilı́stica (RP) es un gráfo acı́clico dirigido (DAG) en la


cual cada nodo representa una variable y cada arco una dependencia proba-
bilı́stica, en la cual se especifica la probabilidad condicional de cada variable
dados sus padres.

La variable a la que apunta el arco es dependiente (causa–efecto) de la


que está en el origen de éste.

Podemos interpretar a una RP de dos formas:

1. Distribución de probabilidad: Representa la distribución de la proba-


bilidad conjunta de las variables representadas en la red. Por ejemplo:

165
P (A, B, C, D, E, F, G) =
P (G|D)P (F |C, D)P (E|B)P (D|A, B)P (C|A)P (B)P (A)
2. Base de reglas: Cada arco representa un conjunto de reglas que asocian
las variables involucradas, Por ejemplo:
Si C, D entonces F
Dichas reglas están cuantificadas por las probabilidades respectivas.

La topologı́a o estructura de la red nos da información sobre las depen-


dencias probabilı́sticas entre las variables.

La red también representa las independencias condicionales de una vari-


able (o conjunto de variables) dada(s) otra(s) variable(s).

Ej.: {E} es cond. indep. de {A,C,D,F,G} dado {B}

Esto es: P (E|A, C, D, F, G, B) = P (E|B)

Esto se representa gráficamente por el nodo B separando al nodo E del


resto de las variables.

En general, el conjunto de variables A es independiente del conjunto B


dado C si al remover C hace que A y B se desconecten . Es decir, NO
existe una trayectoria entre A y B en que las siguientes condiciones sean
verdaderas.

1. Todos los nodos con flechas convergentes están o tiene descendientes


en C.
2. Todos los demás nodos están fuera de C.

Esto se conoce como Separación–D.

En una RP todas la relaciones de independencia condicional representadas


en el grafo corresponden a relaciones de independencia en la distribución de
probabilidad.

Dichas independencias simplifican la representación del conocimiento (menos


parámetros) y el razonamiento (propagación de las probabilidades).

166
Propagación de Probabilidades

El razonamiento probabilı́stico o propagación de probabilidades consiste


en propagar la evidencia a través de la red para conocer la probabilidad
a posteriori de las variables. La propagación consiste en darle valores a
ciertas variables (evidencia), y obtener la probabilidad posterior de las demás
variables dadas las variables conocidas (instanciadas)

Los algoritmos de propagación dependen de la estructura de la red:

• Árboles

• Poliárboles

• Redes multiconectadas

No vamos a ver los procesos de propagación de probabilidad en redes


bayesianas. Para árboles y poli–árboles la derivación resulta en una forma
recursiva que se puede implantar mediante un esquema de paso de mensajes
(se propaga evidencia). Para redes multi–conectadas se han propuesto difer-
entes esquemas basados en condicionamiento, simulación y agrupamiento.

8.4.1 Redes Bayesianas en Minerı́a de Datos

Las redes bayesianas son una alternativa para minerı́a de datos, la cual tiene
varias ventajas:

• Permiten aprender sobre relaciones de dependencia y causalidad.

• Permiten combinar conocimiento con datos.

• Evitan el sobre-ajuste de los datos.

• Pueden manejar bases de datos incompletos.

El obtener una red bayesiana a partir de datos es un proceso de apren-


dizaje,el cual se divide, naturalmente, en dos aspectos:

167
1. Aprendizaje paramétrico: dada una estructura, obtener las proba-
bilidades a priori y condicionales requeridas.
2. Aprendizaje estructural: obtener la estructura de la red Bayesiana,
es decir, las relaciones de dependencia e independencia entre las vari-
ables involucradas.

Las técnicas de aprendizaje estructural dependen del tipo de estructura de


red: árboles, poliárboles y redes multicomectadas. Otra alternativa es com-
binar conocimiento subjetivo del experto con aprendizaje. Para ello se parte
de la estructura dada por el experto, la cual se valida y mejora utilizando
datos estadı́sticos.

Aprendizaje Paramétrico

El aprendizaje paramétrico consiste en encontrar los parámetros asociados


a una estructra dada de una red bayesiana. Dichos parámetros consisten en
las probabilidades a priori de los nodos raı́z y las probabilidades condicionales
de las demás variables, dados sus padres.

Si se conocen todas las variables, es fácil obtener las probabilidades re-


queridas. Las probabilidades previas corresponden a las marginales de los
nodos raı́z, y las condicionales se obtienen de las conjuntas de cada nodo con
su(s) padre(s).

Para que se actualizen las probabilidades con cada caso observado, éstas
se pueden representar como razones enteras, y actualizarse con cada obser-
vación. En el caso de un árbol, las fórmulas para modificar las probabilidades
correspondientes son:

Probabilidades previas
P (Ai ) = (ai + 1)/(s + 1)
i=k
P (Ai ) = ai /(s + 1)
i 6= k

Probabilidades condicionales
P (Bj | Ai ) = (bj + 1)/(ai + 1)

168
i=k yj=l
P (Bj | Ai ) = bj /(ai + 1)
i = k y j 6= l
P (Bj | Ai ) = bj /ai
i 6= k

Donde s corresponde al número de casos totales, i, j los ı́ndices de las


variables, k, l los ı́ndices de las variables observadas.

Aprendizaje Estructural

Naı̈ve Bayes

Como vimos antes, el clasificar Bayesiano Naive (CBN) asume indepen-


dencia entre los atributos dada la clase y su estructura ya esta dada, por
lo que solo se tienen que aprender las probabilidades de los valores de los
atributos dada la clase.

Una forma de mejorar la estructura de un CBN es añadiendo entre los


nodos o atributos que tengan cierta dependencia. Existen dos estructuras
básicas:

• TAN: clasificador bayesiano simple aumentado con un árbol.


• BAN: clasificador bayesiano simple aumentado con una red.

Otra forma es realizando operaciones locales hasta que no mejore la


predicción:

1. eliminar un atributo,
2. unir dos atributos en una nueva variable combinada,
3. introducir un nuevo atributo que haga que dos atributos dependientes
sean independientes (nodo oculto).

Se pueden ir probando cada una de las opciones anteriores midiendo la


dependencia de los atributos dada la clase:
X
I(Xi , Xj | C) = P (Xi , Xj | C)log(P (Xi , Xj | C)/P (Xi | C)P (Xj | C))
Xi ,Xj

169
En base a lo anterior puede integrarse el siguiente algoritmo.
Algoritmo de Mejora Estructural:

1. Obtener la información mutua condicional (IMC) entre cada par de


atributos.
2. Seleccionar el par de atributos de IMC mayor.
3. Probar las 3 operaciones básicas (i) eliminación, (ii) unión, (iii) in-
serción.
4. Evaluar las 3 estructuras alternativas y la original, y quedarse con la
“mejor” opción.
5. Repetir 2–4 hasta que ya no mejore el clasificador.

Para evaluar las estructuras resultantes se pueden usar datos de prueba


o una medida basada en MDL.

Árboles

El método para aprendizaje estructural de árboles se basa en el algo-


ritmo desarrollado por Chow y Liu (68) para aproximar una distribución de
probabilidad por un producto de probabilidades de segundo orden, lo que
corresponde a un árbol. La probabilidad conjunta de n variables se puede
representar (aproximar) como:

n
Y
P (X1 , X2 , . . . , Xn ) = P (Xi )P (Xi | Xj(i) ))
i=1

donde Xj(i) es la causa o padre de Xi .

Se plantea el problema como uno de optimización y lo que se desea es


obtener la estructura en forma de árbol que más se aproxime a la distribución
“real”. Para ello se utiliza una medida de la diferencia de información entre
la distribución real (P ) y la aproximada (P ∗ ):

X
I(P, P ∗) = P (X)log(P (X)/P ∗(X))
x

170
Entonces el objetivo es minimizar I. Para ello se puede definir dicha
diferencia en función de la información mutua entre pares de variables, que
se define como:

X
I(Xi , Xj ) = P (Xi , Xj )log(P (Xi , Xj )/P (Xi )P (Xj ))
x

Se puede demostrar (Chow 68) que la diferencia de información es una


función del negativo de la suma de las informaciones mutuas (pesos) de todos
los pares de variables que consituyen el árbol. Por lo que encontrar el árbol
más próximo equivale a encontrar el árbol con mayor peso. Basado en lo
anterior, el algoritmo para determinar árbol Bayesiano óptimo a partir de
datos es el siguiente:

1. Calcular la información mutua entre todos los pares de variables (n(n−


1)/2).

2. Ordenar las informaciones mutuas de mayor a menor.

3. Seleccionar la rama de mayor valor como árbol inicial.

4. Agregar la siguiente rama mientras no forme un ciclo, si es ası́, desechar.

5. Repetir (4) hasta que se cubran todas las variables (n − 1 ramas).

El algoritmo NO provee la direccionalidad de los arcos, por lo que esta se


puede asignar en forma arbitraria o utilizando semántica externa (experto).

Por ejemplo, para el ejemplo de la tabla 2.2 para jugar golf nos queda la
tabla 8.1.

Poliárboles

Rebane y Pearl [89] extendieron el algoritmo de Chow y Liu para poliárboles.


Para ello parten del esqueleto (estructura sin direcciones) obtenido con el al-
goritmo anterior y determinan las dirección de los arcos utilizando pruebas
de dependencia entre tripletas de variables.

171
Tabla 8.1: Información mutua entre pares de variables para el ejemplo del
golf.
No. Var 1 Var 2 Info. mutua
1 temp. ambiente .2856
2 juega ambiente .0743
3 juega humedad .0456
4 juega viento .0074
5 humedad ambiente .0060
6 viento temp. .0052
7 viento ambiente .0017
8 juega temp. .0003
9 humedad temp. 0
10 viento humedad 0

De esta forma se obtiene una red bayesiana en forma de poliárbol. En el


caso de un poliárbol, la probabilidad conjunta es:

n
Y
P (X) = P (Xi | Xj1(i) , Xj2(i) , ..., Xjm(i) )
i=1

donde {Xj1(i) , Xj2(i) , ..., Xjm(i) } es el conjunto de padres de la variable Xi .

El algoritmo de Rebane y Pearl se basa en probar las relaciones de de-


pendencia entre todas las tripletas de variables en el esqueleto. Dadas 3
variables, existen 3 casos posibles:

• Arcos divergentes: X ← Y → Z.

• Arcos secuenciales: X → Y → Z.

• Arcos convergentes: X → Y ← Z.

Los primeros dos casos son indistinguibles, pero el tercero es diferente, ya


que las dos variables “padre” son marginalemente independientes. Entonces
el algoritmo consiste en:

172
1. Obtener el esqueleto utilizando el algoritmo de Chow y Liu.

2. Recorrer la red hasta encontrar una tripleta de nodos que sean conver-
gentes (tercer caso) -nodo multipadre-.

3. A partir de un nodo multipadre determinar las direcciones de los arcos


utilizando la prueba de tripletas hasta donde sea posible (base causal).

4. Repetir 2-3 hasta que ya no se puedan descubrir más direcciones.

5. Si quedan arcos sin direccionar utilizar semántica externa para obtener


su dirección.

El algoritmo está restringido a poliárboles y no garantiza obtener todas


las direcciones. Desde el punto de vista práctico, un problema es que gen-
eralmente no se obtiene independencia absoluta (información mutua cero),
por lo que habrı́a que considerar una cota empı́rica.

Redes Generales

Existen dos clases de métodos para el aprendizaje genérico de redes


bayesianas, que incluyen redes multiconectadas. Éstos son:

1. Métodos basados en medidas de ajuste y búsqueda.

2. Métodos basados en pruebas de independencia.

Dentro de los métodos basados en ajsute y búsqueda, se generan diferentes


estructuras y se evalúan respecto a los datos utilizando alguna medida de
ajuste. Estos métodos tienen dos aspectos principales:

1. Una medida para evaluar que tan buena es cada estructura respecto a
los datos.

2. Un método de búsqueda que genere diferentes estructuras hasta encon-


trar la óptima, de acuerdo a la medida seleccionada.

Existen varias medidas pero dos son las más utilizadas:

173
• Medida bayesiana: estima la probabilidad de la estrutura dado los datos
la cual se trata de maximizar. La medida bayesiana busca maximizar
la probabilidad de la estructura dados los datos, esto es:

P (Es | D)

Donde Es es la estructura y D son los datos. La cual podemos escribir


en términos relativos al comparar dos estructuras, i y j como:

P (Esi | D)/P (Esj | D) = P (Esi , D)/P (Esj , D)

Considerando variables discretas y que los datos son independientes, las


estructuras se pueden comparar en función del número de ocurrencias
(frecuencia) de los datos predichos por cada estructura.

• Longitud de descripción mı́nima (MDL): estima la longitud (tamaño


en bits) requerida para representar la probabilidad conjunta con cierta
estructura, la cual se compone de dos partes:

1. Representación de la estructura,
2. Representación del error de la estructura respecto a los datos.

La medida MDL hace un compromiso entre la exactitud y la compleji-


dad del modelo. La exactitud se estima midiendo la información mutua
entre los atributos y la clase; y la complejidad contando el número de
parámetros.
Una constante, α, en [0, 1], se utiliza para balancear el peso de cada
aspecto, exactitud contra complejidad. Ası́, la medida de calidad está
dada por:

MC = α(W/W max) + (1 − α)(1 − L/Lmax)

Donde W representa la exactitud del modelo y L la complejidad, mien-


tras que W max y Lmax representan la máxima exactitud y compleji-
dad, respectivamente.
Para determinar estos máximoa normalmente se considera una lim-
itación en cuanto al número de padres máximo permitido por nodo.

174
La complejidad está dada por el número de parámetros requeridos
para representar el modelo, la cual se puede calcular con la siguiente
ecuación:
L = Si [ki log2 n + d(Si − 1)Fi ]
Donde, n es el número de nodos, k es el número de padres por nodo, Si
es el número de valores promedio por variable, Fi el número de valores
promedio de los padres, y d el número de bits por parámetro.
La exactitud se puede estimar en base al “peso” de cada nodo, en forma
análoga a los pesos en el método de aprendizaje de árboles. En este
caso el peso de cada nodo se estima en base a la información mutua
con sus padres:
X
w(xi, F xi) = P (xi, F xi)log[P (xi, F xi)/P (xi)P (F xi)]
xi

Y el peso (exactitud) total está dado por la suma de los pesos de cada
nodo: X
W = w(xi, F xi)
i

Para utilizar la medida MDL se puede hacer un hill-climbing iniciando


con una estructura simple (por ejemplo un árbol construido con Chow-Liu)
y agregando las ligas que mejoren la medida MDL hasta alcanzar un mı́nimo
local.

Algoritmo - búsqueda de la mejor estructura:

1. Generar estructura incial - árbol.

2. Calcular medida de calidad de la estructura inicial.

3. Agregar / invertir un arco en la estructura actual.

4. Calcular medida de calidad de nueva estructura.

5. Si se mejor la calidad conservar el cambio, si no dejar estructura ante-


rior.

6. Repetir 3 a 5 hasta que ya no haya mejoras.

175
Otra posibilidad es empezar con una estructura compleja y eliminar ligas
que reduzcan la medida MDL hasta llegar a un mı́nimo local.

Una última posibilidad es combinar los dos enfoques.

A diferencia del enfoque basado en una medida global, el enfoque basado


en pruebas de independiencia usa medidas de dependencia local entre sub-
conjuntos de variables.

El caso más sencillo es el del algoritmo de Chow y Liu, en el cual se mide


la información mutua entre pares de variables. A partir de estas medidas,
como se vió previamente, se genera una red bayesiana en forma de árbol.
Analizando dependencias entre tripletas de variables, el método se extiende
a poliárboles.

Este enfoque se puede generalizar para el aprendizaje de redes multi-


conectadas, haciendo pruebas de dependencia entre subconjunto de variables,
normalmente dos o tres variables. Por ejemplo, se puede continuar el método
de Chow y Liu agregando más arcos aunque se formen ciclos, hasta un cierte
umbral mı́nimo de información mutua.

La desventaja es que pueden generarse muchos arcos “innecesarios”, por lo


que se incorporan formas de luego eliminar arcos. Hay diferentes variantes de
este enfoque que consideran diferentes medidas de dependencia y diferentes
etrategias para eliminar arcos innecesarios.

176
Capı́tulo 9

Aprendizaje Basado en
Instancias

En este tipo de aprendizaje, se almacenan los ejemplos de entrenamiento


y cuando se quiere clasificar un nuevo objeto, se extraen los objetos más
parecidos y se usa su clasificación para clasificar al nuevo objeto.

Contrario a los otros esquemas vistos, el proceso de aprendizaje es trivial


y el de clasificación es el que consume el mayor tiempo.

Este tipo de aprendizaje también se conoce como lazy learning o memory-


based learning donde los datos de entrenamiento se procesan solo hasta que
se requiere (cuando se requiere constestar alguna pregunta), y la relevancia
de los datos se mide en función de una medida de distancia.

9.1 Vecinos más cercanos

El algoritmo de k-NN (k-nearest neighbours) es el más simple.

El algoritmo es robusto con ejemplos que tienen ruido.

Los vecinos más cercanos a una instancia se obtienen, en caso de atributos


continuos, utilizando la distancia Euclideana sobre los n posibles atributos

177
Tabla 9.1: El algoritmo de los k vecinos más cercanos.

Entrenamiento:
almacena todos los ejemplos de entrenamiento (x, f (x))
Clasificación:
Dada una instancia xq :
Sean x1 , . . . , xk los k vecinos más cercanos a xq .
Entonces:
k
X
f (xq ) = argmaxv∈V δ(v, f (xi ))
i=1

donde: δ(a, b) = 1 si a = b y 0 en caso contrario.

(luego veremos otro tipo de distancias):

v
u n
uX
d(xi , xj ) = t (a
r (xi ) − ar (xj ))2
r=1

El resultado de la clasificación de k-NN puede ser discreto o continuo.

En el caso discreto, el resultado de la clasificación es la clase más común


de los k-vecinos (ver tabla 9.1).

La forma que se genera con k = 1 es un diagrama de Voronoi alrededor de


las instancias almacenadas. A una nueva instancia se le asigna la clasificación
del vecino más cercano.

Para clasificaciones continuas, se puede tomar la media de las clasifica-


ciones.

Pk
i=1 f (xi )
f (xq ) =
k

Un extensión obvia al algoritmo es pesar las clasificaciones de los vecinos


de acuerdo a su distancia con el objeto a clasificar (la clasificación de vecinos

178
más cercanos tienen más peso). Promedio ponderado (weigthed average)
promedia la salida de los puntos pesados inversamente por su distancia.

Para clases discretas:

k
X
f (xq ) = argmaxv∈V wi δ(v, f (xi ))
i=1

1
donde: wi = d(xq ,xi )2
(si la distancia es 0 entonces w = 0).

Para clase continuas:

Pk
i=1 wi f (xi )
f (xq ) = Pk
i=1 wi

Una suposición es que los vecinos más cercanos nos dan la mejor clasifi-
cación y esto se hace utilizando todos los atributos.

El problema es que es posible que se tengan muchos atributos irrelevantes


que dominen sobre la clasificación (e.g., 2 atributos relevantes dentro de 20
irrelevantes no pintan).

Una posibilidad es pesar las distancias de cada atributo, dandole más


peso a los atributos más relevantes.

Otra posibilidad es tratar de determinar estos pesos con ejemplos cono-


cidos de entrenamiento. Alterando los pesos para minimizar el error.

Finalmente, también se pueden eliminar los atributos que se consideran


irrelevantes.

Un elemento práctico adicional, tiene que ver con el almacenamiento


de los ejemplos. En este caso se han sugerido representaciones basadas en
árboles (kd-trees) donde las instancias están distribuidas en base a su cerca-
nia.

179
9.2 Regresión pesada local

Locally weigthed regression es una generalización que construye una función


que ajusta los datos de entrenamiento que están en la vecindad de xq .

Se pueden usar funciones lineales, cuadráticas, redes neuronales, etc. Si


utilizamos una función lineal:

fˆ(x) = w0 + w1 a1 (x) + . . . + wn an (x)

Podemos usar gradiente descendiente para ajustar los pesos que mini-
mizan el error.

El error lo podemos expresar por diferencias de error al cuadrado de la


siguiente forma:

1X
E(W ) = (f (x) − fˆ(x))2
2 x∈D

Lo que queremos es determinar el vector de pesos que minimice el error


E. Esto se logra alterando los pesos en la dirección que produce el máximo
descenso en la superficie del error.

La dirección de cambio se obtiene mediante el gradiente. El gradiente


nos especifica la dirección que produce el máximo incremento, por lo que el
mayor descenso es el negativo de la dirección.

La regla de actualización de pesos es entonces:


W ← W + ∆W
∆W = −α∇E

donde α es el factor de aprendizaje (qué tanto le creemos al error para ajustar


nuestos pesos).

∂E ∂ 1 P
= ∂w ˆ
x∈D (f (x) − f (x))
2
∂wi
Pi 2
= x∈D (f (x) − fˆ(x)) ∂w∂
i
(f (x) − w
~ · ~ax )
P ˆ
= x∈D (f (x) − f (x))(−ai,x )

180
Por lo que: X
∆wi = α (f (x) − fˆ(x))(−ai,x )
x∈D

Para modificar los pesos se puede hacer:

1. Minimizar el error cuadrado usando los k vecinos más cercanos.

1 X
E(W ) = (f (x) − fˆ(x))2
2
x∈k vecinas más cercanos

2. Minimizar el error cuadrado usando todos los ejemplos pesados por su


distancia a xq .

1 X
E(W ) = (f (x) − fˆ(x))2 K(d(xq , x))
2 x∈D

3. Minimizar el error cuadrado usando los k vecinos más cercanos pesados


por su distancia a xq .

1 X
E(W ) = (f (x) − fˆ(x))2 K(d(xq , x))
2
x∈k vecinas más cercanos

Para el último caso, la regla de actualización es entonces:

X
∆wi = α K(d(xq , x))(f (x) − fˆ(x))(−ai,x )
x∈k vecinas más cercanos

9.3 Funciones de Distancia

Las funciones de distancia las podemos clasificar en:

• Funciones globales: se usa la misma función de distancia en todo el


espacio.

181
• Funciones basadas en el query. Los parámetros de la función de dis-
tancia se ajustan con cada query, tı́picamente minimizando el error con
validación cruzada.

• Funciones basadas en puntos. Cada dato tiene asopciado su propia


función de distancia

El cambiar/ajustar la función de distancia puede mejorar las predicciones.

Las funciones de distancia tı́picas para datos continuos son:

• Euclideana
sX q
dE (x, q) = (xj − qj )2 = (x − q)T (x − q)
j

• Euclideana pesada diagonalmente


sX q
dm (x, q) = (mj (xj − qj )2 ) = (x − q)T MT M(x − q) = dE (Mx, Mq)
j

donde mj es el factor de escala en la dimensión j y M es una matriz


diagonal con Mjj = mj .

• Euclideana completa o Mahalanobis


q
dM (x, q) = (x − q)T MT M(x − q) = dE (Mx, Mq)

donde M puede ser arbitraria.

• Normal o Minkowski
X 1
dp (x, q) = ( |xi − qi )|p ) p
i

• Normal pesada diagonal o completa. Igual que la Minkowski pero in-


cluyendo pesos.

182
Matrices (M) diagonales hacen escalas radiales simétricas. Se pueden
crear elipses con orientaciones arbitrarias incluyendo otras elementos fuera
de la diagonal.

También se puede incluir un rango o escala en donde aplicar la función


de generalización. Algunas opciones son:

• Selección de ancho de banda fijo. h es un valor constante, por lo que


se usan valores constantes de datos y forma.

• Selección de los vecinos más cervanos. h se pone como la distancia a


los k vecinos más cercanos y el volúmen de datos cambia de acuerdo a
la densidad de los datos más cercanos.

• Selección de banda global. h se ajusta globalmente por un proceso de


optimización.

• Basado en el query. h se selecciona de acuerdo al query siguiendo un


proceso de optimización.

• Basada en puntos. Cada dato tiene asociado su propia h.

9.4 Funciones de pesos o Kernels

Las funciones de peso deben de ser máximas a distancia cero y decaer suave-
mente con la distancia.

No es necesario normalizar el kernel, tampoco tiene que ser unimodal, y


tiene que ser positivo siempre.

Algunos ejemplos son:

• Elevar la distancia a una potencia negativa


1
K(d) =
dp

183
• Para evitar infinitos (inverse distance):
1
K(d) =
1 + dp
• Uno de los más populares, es el kernel Gaussiano:
K(d) = exp(−d2 )

• Uno relacionado es el exponencial:


K(d) = exp(−|d|)
Los dos últimos tienen una extensión infinita que se puede truncar
después de un cierto umbral.
• Kernel cuadrático o Epanechnikov o Bartlett-Priestley:
(
(1 − d2 ) si |d| < 1
K(d) =
0 de otra forma
el cual ignora datos más alejados que 1 unidad.
• El kernel tricube:
(
(1 − |d|3)3 si |d| < 1
K(d) =
0 de otra forma

• Kernel de uniform weighting:


(
1 si |d| < 1
K(d) =
0 de otra forma

• Kernel triangular:
(
1 − |d| si |d| < 1
K(d) =
0 de otra forma

• Variante del triangular:


( 1−|d|
|d|
si |d| < 1
K(d) =
0 de otra forma

Se pueden crear nuevos kernels. Según los autores la definición del kernel
no es tan crı́tica.

184
9.5 Pocos datos y otras consideraciones

Un posible problema que puede surgir es cuando se tienen pocos datos. Al-
gunas de las posibles soluciones es o tratar de introducir nuevos datos artifi-
cialmente y/o reducir la dimensionalidad usando un proceso de selección de
variables.

La eficiencia de LWR depende de cuantos datos se tengan. Se puede usar


una representación de kd-trees para accesar datos cercanos más rápidamente.

En general, LWR es más caro que vecinos más cercanos y promedios


pesados.

Por otro lado, cualquier representación se puede usar para construir el


modelo local (e.g., árboles de decisión, reglas, redes neuronales, etc.).

Una forma sencilla de hacerlo, es tomar los vecinos más cercanos y entre-
nar un modelo/clasificador con ellos.

Lo que se requiere para implantar un LWR es:

• Una función de distancia. Aquı́ la suposición más grande de LWR es


que datos más cercanos son los más relevantes. La función de distancia
no tiene que cumplir con los requerimientos de una métrica de distancia.
• Criterio de separabilidad. Se calcula un peso para cada punto dado por
el kernel aplicado a la función de distancia. Este criterio es aparte de
P
la función de predicción (C = i [L(ŷi , yi )K(d(xi , q))]
• Suficientes datos para construir los modelos
• Datos con salida yi .
• Representación adecuada.

Algunas posibles direcciones futuras de investigación incluyen:

• Combinar datos continuos y discretos


• Mejores formas de sintonización de parámetros

185
• Sintonización local a múltiples escalas

• Usar gradientes para sintonizar parámetros

• Definir cuánta validación cruzada es suficiente

• Usar métodos probabilı́sticos

• Olvidar datos

• Mejorar aspectos computacionales con muchos datos

• No hacer el aprendizaje completamente lazy

9.6 Funciones de bases radiales

Radial basis functions (RBF) utilizan una combinación de funciones Kernel


que decrecen con la distancia (corresponderı́a a K(d(xq , x)) en las expresiones
de arriba).

k
X
fˆ(x) = w0 + wu Ku (d(xu , x))
u=1

Para cada instancia xu existe una función Kernel que decrece con la dis-
tancia a xu .

Lo más común es escoger funciones normales o Gaussianas para las Ks.

1 1 2
Ku (d(xu , x)) = √ e− 2σ2 d (xu ,x)
2πσ 2

La función fˆ(x) consiste básicamente de dos elementos: uno que calcula


las funciones Kernel y otro los pesos de estas.

Estas se pueden aprender dentro de una red neuronal de dos capas (ver
figure 9.1).

186
w0 w2 wk
w1

a 1(x) a2(x) an(x)

Figura 9.1: Una red de funciones bases radiales.

El entrenamiento se lleva en dos pasos. Se buscan las xu y σ para cada


función y después de buscan los pesos para las funciones minimizando el error
global.

Posibilidades:

1. Centrar cada función en cada punto y a todas darles la misma desviación


estandar.

2. Seleccionar un número limitado de funciones distribuidas uniforme-


mente en el espacio de instancias.

3. Seleccionar funciones no distribuirlas uniformemente (sobretodo si las


instancias no estan distribuidas uniformemente).

• Se puede hacer un muestreo sobre las instancias o tratar de inden-


tificar prototı́pos (posiblemente con un algoritmo de clustering).
• Se puede utilizar EM para escoger k medias de las distribuciones
Gaussianas que mejor se ajusten a los datos.

En el caso de RBF, se realiza un aprendizaje previo con las instancias


de entrenamiento (como en los sistemas de aprendizaje que se han visto) y
luego se trata de clasificar a las nuevas instancias.

187
9.7 Razonamiento Basado en Casos

Una alternativa para aprendizaje basado en instancias, es utilizar una repre-


sentación simbólica mucho más rica para representar cada instancia.

Un Razonador Basado en Casos resuelve problemas nuevos mediante la


adaptación de soluciones previas usadas para resolver problemas similares.

Las instancias o casos tienen normalmente representado el problema que


solucionan, una descripción de cómo lo solucionaron, y el resultado obtenido.

Obviamente, las medidas de distancia se vuelven más complejas.

Las combinaciones de las instancias también se complica y generalmente


involucra conocimiento del dominio y mecanismos de búsqueda y razon-
amiento sofisticados.

188
Capı́tulo 10

Clustering

Clustering es el proceso de agrupar datos en clases o clusters de tal forma


que los objetos de un cluster tengan una similaridad alta entre ellos, y baja
(sean muy diferentes) con objetos de otros clusters.

La medida de similaridad está basada en los atributos que describen a los


objetos.

Los grupos pueden ser exclusivos, con traslapes, probabilı́sticos, jerárquicos.

Clustering puede ser aplicado, por ejemplo, para caracterizar clientes,


formar taxonomı́as, clasificar documentos, etc.

Retos:

• Escalabilidad: normalmente corren con pocos datos.

• Capacidad de manejar diferentes tipos de atributos: numéricos (lo más


común), binarios, nominales, ordinales, etc.

• Clusters de formas arbitrarias: lo basados en distancias numéricas tien-


den a encontrar cluster esféricos.

• Requerimientos mı́nimos para especificar parámetros, como el número


de clusters.

189
• Manejo de ruido: muchos son sensibles a datos erroneos.

• Independiendentes del orden de los datos.

• Poder funcionar eficientemente con alta dimensionalidad.

• Capacidad de añadir restricciones.

• Que los clusters interpretables y utilizables.

La medida de similaridad se define usualmente por proximidad en un


espacio multidimensional.

Para datos numéricos, usualmente se pasa primero por un proceso de


estandarización.

La medida z (z-score) elimina las unidades de los datos:

xif − µf
Zif =
σf

donde, σf es la desviación media absoluta de la variable f , µf es su media y


xif es el i-ésimo valor de f .

1
σf = (|x1f − µf | + |x2f − µf | + . . . + |xnf − µf |)
n

1
µf = (x1f + x2f + . . . + xnf )
n

Medidas de similaridad

Las medidas más utilizadas son:

1. Para variables numéricas (lineales):

190
• Distancia Euclideana:
q
d(i, j) = |xi1 − xj1 |2 + |xi2 − xj2 |2 + . . . + |xin − xjn |2

• Distancia Manhattan:

d(i, j) = |xi1 − xj1 | + |xi2 − xj2 | + . . . + |xin − xjn |

• Distancia Minkowski:

d(i, j) = (|xi1 − xj1 |q + |xi2 − xj2 |q + . . . + |xin − xjn |q )1/q

Si q = 1 es Manhattan y si q = 2 es Euclideana.
• Distancia Pesada (e.g., Euclideana):
q
d(i, j) = w1 |xi1 − xj1 |2 + w2 |xi2 − xj2 |2 + . . . + wn |xin − xjn |2

Propiedades de las distancias: (i) d(i, j) ≥ 0, (ii) d(i, i) = 0, (iii)


d(i, j) = d(j, i), y (iv) d(i, j) ≤ d(i, h) + d(h, j).

2. Variables Binarias (0,1):

• Simétricas (ambos valores tienen el mismo peso):

r+s
d(i, j) =
q+r+s+t

donde: q = número de valores que son 1 en las dos, r = número


de valores que son 1 en i y 0 en j, s = número de valores que son
0 en i y 1 en j, y t = número de valores que son 0 en las dos.
• No-simétricas (el más importante y más raro vale 1), conocido
como el coeficiente Jaccard:
r+s
d(i, j) =
q+r+s

3. Variables nominales (e.g., color):

p−m
d(i, j) =
p

191
donde: m = número de valores iguales, p = número total de casos.
Se pueden incluir pesos para darle más importancia a m.
Se pueden crear nuevas variables binarias asimétricas a partir de las
nominales (e.g., es amarillo o no).
4. Variables ordinales: nominales con un orden relevante. El orden es
importante, pero no la magnitud.
Pasos:
(a) Cambia el valor de cada variable por un ranqueo rif ∈ {1, . . . , Mf },
donde Mf es el ı́ndice del valor más alto de la variable.
(b) Mapeo el ranqueo entre 0 y 1 para darle igual peso
rif − 1
zif =
Mf − 1
(c) Usa cualquiera de las medidas numéricas anteriores.
5. Variables escalares no lineales, por ejemplo, variables que siguen una
escala exponencial.
Posibilidades:
(a) Tratalas como numérica normal.
(b) Obten su logaritmo (o algúna otra transformación) antes para
convertirlas en lineales.
(c) Consideralas como variables ordinales.
6. Variables mixtas:
Una posibilidad es escalar todas las variables a un intervalo común
(entre 0 y 1):
Pp (f ) (f )
f =1 δij dij
d(i, j) = Pp (f )
f =1 δij

donde:
(f )
δij = 0 si xif o xjf se desconocen o si los dos valores son 0 y la variable
es asimétrica binaria. En caso contrario vale 1.
(f )
dij depende del tipo:

192
(f ) (f )
• Si f es binaria o nominal: dij = 0 si xif = xjf , si no, dij = 1.
(f ) |xif −xjf |
• Si f es numérica lineal: dij = maxh xhf −minh xhf

• Si f es ordinal o numérica no lineal: calcula los ı́ndices rif y


r −1
zif = Miff −1 y toma a zif como numérica lineal.

Existe una gran cantidad de algoritmos de clustering (solo vamos a ver


algunos):

1. Métodos basados en paticiones: construyen k particiones de los datos,


donde cada partición representa un grupo o cluster. Cada grupo tiene
al menos un elemento y cada elemento pertenece a un solo grupo.
Estos métodos, crean una partición inicial e iteran hasta un criterio de
paro. Los más populares son k-medias y k-medianas (otros: CLARA
y CLARANS).
2. Métodos jerárquicos: crean descomposiciones jerárquicas.
El método aglomerativo o bottom-up, empieza con un grupo por cada
objeto y une los grupos más parecidos hasta llegar a un solo grupo u
otro criterio de paro (e.g., AGNES, BIRCH, CURE, ROCK).
El método divisorio o top-down, empieza con un solo grupo y lo divide
en grupos más pequeños hasta llegar a grupos de un solo elemento u
otro criterio de paro (e.g., DIANA, MONA).
3. Métodos basados en densidades: Se agrupan objetos mientras su den-
sidad (número de objetos) en la “vecindad” este dentro de un cierto
umbral (e.g., DBSCAN, DENCLUE).
4. Métodos basados en rejillas: se divide el espacio en rejillas a diferentes
niveles (e.g, STING, CLIQUE).
5. Métodos basados en modelos: se encuentra un modelo para cada cluster
que mejor ajuste los datos de ese grupo (e.g., COBWEB, AutoClass).
6. Métodos basados en teorı́a de grafos:utilizan representaciones basadas
en grafos (e.g., Chameleon, Delaunay triangulation graph (DTG), highly
connected subgraphs (HCS), clustering identification via connectivity
kernels (CLICK), cluster affinity search technique (CAST))

193
7. Técnicas basadas en Búsqueda Combinatoria (e.g., Genetically guided
algorithm (GGA), TS clustering, SA clustering)

8. Técnicas Fuzzy, (e.g., Fuzzy c-means (FCM), mountain method (MM),


possibilistic c-means clustering algorithm (PCM), fuzzy c-shells (FCS))

9. Técnicas basadas en Redes Neuronales (e.g., Learning vector quantiza-


tion (LVQ), self-organizing feature map (SOFM), ART, simplified ART
(SART), hyperellipsoidal clustering network (HEC), self-splittting com-
petitive learning network (SPLL))

10. Técnicas basadas en Kernels (e.g. Kernel K-means, support vector


clustering (SVC))

11. Técnicas para Datos Secuenciales (e.g. Similaridad secuencial, cluster-


ing secuencial indirecto, clustering secuencial estadı́stico)

12. Técnicas para grandes conjuntos de datos (e.g., CLARA, CURE, CLARANS,
BIRCH, DBSCAN, DENCLUE, WaveCluster, FC, ART)

10.1 k-Means

Toma como parámetro k que es el número de clusters que forma.

Selecciona k elementos aleatoriamente, los cuales representan el centro o


media de cada cluster. A cada objeto restante se le asigna el cluster con el
cual más se parece, basandose en una distancia entre el objeto y la media del
cluster. Despúes calcula la nueva media del cluster e itera hasta no cambiar
de medias.

Normalmente se utiliza un medida de similaridad basada en el error


cuadrático:
k X
X
E= |p − mi |2
i=1 p∈Ci

donde: p representa al objeto y mi a la media del cluster Ci (ambos son


objetos multidimensionales).

194
Tabla 10.1: Algoritmo de k-means.

selecciona k objetos aleatoriamente


repeat
re(asigna) cada objeto al cluster más similar con el valor medio
actualiza el valor de las medias de los clusters
until no hay cambio

k-means es susceptible a valores extremos porque distorcionan la dis-


tribución de los datos.

Tambı́en se pueden utilizar las modas (k-modes) para agrupar objetos


categóricos.

Otra posibilidad es usar medianas (k-medoids) para agrupar en base al


objeto más representativo del cluster. La idea básica es encontrar un objeto
representativo. La estrategia es reemplazar una de las medianas por otro
objeto en forma aleatoria y medir si la calidad de los clusters resultantes
mejoran.

La calidad se evalúa con base a una función de costo que mide la disimi-
laridad promedio entre un objeto y la mediana en su cluster.

Para ver si un objeto aleatorio (Oalea ) es un buen reemplazo de la mediana


(Oactu ) se consideran todos los objetos que no sean medianas y se analiza la
re-distribución de los objetos a partir de la cual se calcula un costo basado,
por ejemplo, en el error cuadrático. Esto se repite hasta que no exista mejora.

Cómo en muchos de los métodos vistos, este no garantiza encontrar el


mı́nimo global, por lo que se recomiendo correr varias veces el algoritmo con
diferentes valores iniciales.

Otra variante es hacer un k-means jerárquico, en donde se empieza con


k = 2 y se continua formando clusters sucesivos en cada rama.

Si queremos escalarlo a grandes bases de datos, podemos tomar únicamente


muestras de los datos.

195
10.2 COBWEB

Crea un cluster jerárquico con un árbol de clasificación.

En un árbol de clasificación cada nodo es un concepto que tiene una


descipción probabilı́stica de ese concepto que resume los objetos clasificados
bajo ese nodo.

La descripción probabilı́stica incluye la probabilidad del concepto (P (Ci ))


y las probabilidades condicionales de pares atributos-valor dado el concepto
(P (Ai = Vij |Ck )).

COBWEB utiliza una medida llamada utilidad de la categoria para con-


struir el árbol:

Pn hP P P P i
k=1 P (Ck ) i j P (Ai = Vij |Ck )2 − i j P (Ai = Vij )2
CU =
n

donde: n es el número de clases en un nivel del árbol.

La utilidad de la categoria mide el valor esperado de valores de atributos


que pueden ser adivinados a partir de la partición sobre los valores que se
pueden adivinar sin esa partición.

Si la partición no ayuda en esto, entonces no es buena partición.

Entre más grande es la proporción de elementos de la clase que tienen ese


atributo-valor, ese atributo-valor es más predictivo sobre la clase.

COBWEB desciende el árbol buscando el mejor lugar o nodo para cada


objeto. Esto se basa en poner el objeto en cada nodo y en un nodo nuevo y
medir en cual se tiene la mayor ganancia de utilidad de categorı́a.

COBWEB también considera en cada iteración unir los dos mejores nodos
evaluados y dividir el mejor nodo evaluado. Esto es, cada vez que se considera
un lugar en un nivel para un nuevo objeto, se consideran los dos mejores
objetos (de mayor utilidad) y se considera juntarlos.

El caso contrario, sucede una vez que se encuentra el mejor lugar para un

196
nuevo objeto, pero el unir nodos no resulta beneficioso, entonces se considera
dividir ese nodo.

COBWEB depende del orden de los objetos, por lo que a veces es conve-
niente probarlo con obejtos en diferente orden.

La división entre el número de cluster sirve para incentivar tener clusters


con más de un elemento.

COBWEB asume que la distribución de probabilidad de los atributos es


independiente de las demás.

El algoritmo se puede extender a valores numéricos usando distribuciones


gaussianas (CLASSIT).

1 (a−µ)2
f (a) = √ e− 2σ2
2πσ 2

El equivalente a la sumatoria de probabilidades es ahora:

Z
X 1
P (Ai = Vij )2 ∼ f (ai )2 dai = √
j 2 πσi

Ahora se estima la desviación estandar del atributo numérico con los


datos en el cluster y en los datos para todos los clusters:

n  
1X 1 X 1 1
CU = P (Ck ) √ −
k k=1 2 π i σik σi

Si la desviación estandar es cero el valor de utilidad se vuelve infinito,


por lo que se impone un valor de varianza mı́nimo en cada atributo (acuity).

El otro parámetro que se usa en COBWEB es el de corte (cutoff ), que


básicamente se usa para parar la generación de nuevos nodos.

197
10.3 Clustering basado en probabilidades

Desde el punto de vista bayesiano, lo que buscamos es el grupo de clusters


más probables dados los datos.

Ahora los objetos tienen cierta probabilidad de pertenecer a un grupo o


cluster.

La base de un clustering probilı́stico está basado en un modelo estadı́stico


llamado finite mixtures (mezcla de distribuciones).

Una mezcla es un conjunto de k distribuciones, representando k clusters.

Cada distribución nos da la probabilidad de que un objeto tenga un con-


junto particular de pares atributo-valor si se supiera que fuera miembro de
ese cluster.

La mezcla más sencilla es cuando tenemos puros atributos numéricos con


distribuciones gaussianas con diferentes medias y varianzas.

La idea es, dado un conjunto de datos, determinar las k distribuciones


normales (medias y varianzas) y las probabilidades particulares de cada dis-
tribución (pueden ser diferentes).

Por ejemplo, si tuvieramos dos distribuciones A y B con µA , σA y µB , σB ,


y PA (PA + PB = 1), podemos generar un conjunto de datos.

Si supieramos de qué distribución salió cada dato, es fácil calcular su


media y varianza, y las PA y PB .

x1 + x2 + . . . xn
µ=
n

(x1 − µ)2 + (x2 − µ)2 + . . . (xn − µ)2


σ2 =
n−1

Calcular la probabilidad de que un objeto (x) pertenezca a un cluster


(e.g., A), es:

198
P (x|A)P (A) f (x; µA , σA )PA
P (A|x) = =
P (x) P (x)

donde f (x; µA , σA ) es una distribución normal:

1 (x−µ)2
f (x; µA , σA ) = √ e− 2σ2
2πσ 2

Podemos ignorar P (x) y al final normalizar.

10.4 Algoritmo EM

El problema es que no sabemos de qué distribución viene cada dato y no


concemos los parámetros de las distribuciones.

El algoritmo EM (Expectation Maximization) empieza adivinando los


parámetros de las distribuciones y los usa para calcular las probabilidades
de que cada objeto pertenezca a un cluster y usa esas probabilidades para
re-estimar los parámetros de las probabilidades, hasta converger (se puede
empezar adivinando las probabilidades de que un objeto pertenezca a una
clase).

El cálculo de las probabilidades de las clases o los valores esperados de


las clases es la parte de expectation.

El paso de calcular los valores de los parámetros de las distribuciones, es


maximization, maximar la verosimilitud de las distribuciones dados los datos.

Para estimar los parámetros, tenemos que considerar que tenemos únicamente
las probabilidades de pertenecer a cada cluster y no los clusters en si. Estas
probabilidades actuan como pesos:

w1 x1 + w2 x2 + . . . wn xn
µA =
w1 + w2 + . . . wn

199
w1 (x1 − µ)2 + w2 (x2 − µ)2 + . . . wn (xn − µ)2
σA2 =
w1 + w2 + . . . wn

donde wi es la probabilidad de que el objeto i pertenezca al cluster A y se


suma sobre todos los objetos (no solo los de A).

El algoritmo tiende a converger pero nunca llega a un punto fijo.

Podemos ver que tanto se acerca calculando la versorimilitud general de


los datos con esos parámetros, multiplicando las probabilidades de los objetos
individuales (i):

Y
(PA P (xi |A) + PB P (xi |B))
i

Esta medida crece en cada iteración, y se itera hasta que el crecimiento


es despreciable.

Aunque EM garantiza convergencia, esta puede ser a un máximo local,


por lo que se recomienda repetir el proceso varias veces.

10.5 Extensiones

Extender a más de dos distribuciones es prácticamente directo.

Extenderlo a instancias con atributos múltiples, si se asume independen-


cia de los atributos, se puede hacer multiplicando las probabilidades para
obtener una distribución de probabilidad conjunta.

Si existen dos atributos correlacionados, se pueden analizar con una dis-


tribución normal bi-variable en donde se utiliza una matriz de covarianza.
El número de parámetros crece al cuadrado del número de atributos que se
consideren correlacionados entre si.

Se pueden especificar diferentes distribuciones (cada una con sus propios


parámetros) para diferentes tipos de datos.

200
Se puede penalizar el modelo que instroduzca parámetros y el que defina
un número mayor de clusters.

10.6 AutoClass

Realiza un descubrimiento automático de clases en datos (P. Cheeseman, J.


Stutz).

Una vez que las clases han sido identificadas, éstas pueden servir para
clasificar nuevos datos.

La idea es encontrar la hipótesis más probable, dados los datos e infor-


mación a priori.

Normalmente se busca un balance entre qué tan bien se ajustan los datos
a las clases y complejidad de las clases (casos extremos, una clase por dato
o una sola clase para todos los datos).

En AutoClass los datos se pueden representar por valores discretos, en-


teros y reales.

El modelo es una mezcla finita de distribuciones de probabilidad, cada


una con su conjunto de parámetros.

Para cada dato se asigna una probabilidad de pertenencia a una clase (o


un peso).

Dado un conjunto de datos se busca:

1. Los valores más probables (MAP) de los parámetros (para las distribu-
ciones y clases dadas), dada una distribución de probabilidad.
2. La distribución de probabilidad más probable (número de clases y mod-
elos alternativos), independientemente de los parámetros.

Se asume que los datos son condicionalmente independientes dada la clase,


por lo que la distribución conjunta de los datos es el producto de las proba-
bilidades individuales.

201
Cada dato pertenece a una y solo una clase (de un conjunto disjunto
de clases) con probabilidad P (Xi ∈ Cj | V~c , Tc ), donde V~c es el vector de
parámetros de la distribución y Tc es la distribución particular).

Las clases representan una partición discreta de los datos y por lo tanto
la distribución más apropiada es una distribución Bernoulli o binomial

Asume que los atributos son independientes dada la clase.

Los modelos individuales de los atributos tienen sus propios parámetros


de distribución.

AutoClass trata de encontrar los parámetros de las distribuciones de prob-


abilidad dependiendo del tipo de valores de las variables:

• Discretos: Bernoulli

• Reales: Gaussianas

• Reales - Escalares (e.g., edad, peso): log-Gaussianas

• Enteros: Poisson

En general se debe de establecer cuantas clases y correr el proceso. Al


correrlo, existen muchos máximos locales, por lo que hay que correr el proceso
varias veces a partir de diferentes valores iniciales para los parámetros.

10.7 Cuántos Clusters?

Para algunas aplicaciones es fácil determinar el número de clusters, ”K”, de


acuerdo al conocimiento del dominio. Sin embargo, para la mayorı́a de los
casos, ”K” se desconoce y se estima a partir de los datos.

Muchos algoritmos de clustering preguntan ”K” como parámetro de en-


trada y la calidad de los resultados está fuértemente ligada a este valor.

Una división con muchos clusters complica los resultados porque los hace
difı́ciles de interpretar y analizar.

202
Una división con muy pocos clusters lleva a una pérdida de información
y puede llevar a tomar malas decisiones.

Al problema de determinar el número de clusters se le conoce como ”el


problema fundamental de la validez del cluster”.

Algunos métodos que se han utilizado para encontrar el número adecuado


de clusters son:

• Visualización del conjunto de datos, lo que funciona bien para dos


dimensiones pero generalmente nuestros conjuntos de datos son mucho
más complicados.

• Construcción de ı́ndices (o reglas de paro). En este caso se utilizan


ı́ndices para enfatizar la compactés intra-cluster e isolación inter-cluster
considerando efectos tales como: el error cuadrático, propiedades geométricas
o estadı́sticas de los datos, el número de patrones, la disimilaridad o
similaridad, número de clusters.

• Optimización de alguna función de criterio bajo el marco del modelo


de mezcla de probabilidades. En este caso se utiliza el algoritmo EM
(usualmente), para encontrar el valor de ”K” que maximize o minimize
el criterio definido como óptimo.

– Criterio de Información de Akaike (AIC).


– Criterio de Inferencia Bayesiana.

• Otros métodos heurı́sticos basados en una variedad de técnicas y teorı́as.

Referencias

Survey of Clustering Algorithms. Rui Xu and Donald Wunsch II. IEEE


Transactions on Neural Networks, Vol. 16, No. 3, May 2005.

203
Capı́tulo 11

Aprendizaje por Refuerzo

11.1 Introducción

Uno de los enfoques más usados dentro de aprendizaje es el aprendizaje


supervisado a partir de ejemplos (pares entradas – salida provistos por el
medio ambiente), para después predecir la salida de nuevas entradas.

Cualquier sistema de predicción puede verse dentro de este paradigma, sin


embargo, ignora la estructura secuencial del mismo.

En algunos ambientes, muchas veces se puede obtener sólo cierta retroali-


mentación o recompensa o refuerzo (e.g., gana, pierde).

El refuerzo puede darse en un estado terminal y/o en estados intermedios.

Los refuerzos pueden ser componentes o sugerencias de la utilidad actual a


maximizar (e.g., buena movida).

En aprendizaje por refuerzo (RL) el objetivo es aprender cómo mapear situa-


ciones a acciones para maximizar una cierta señal de recompensa.

Promesa: programar agentes mediante premio y castigo sin necesidad de


especificar cómo realizar la tarea.

Diferencias con otro tipo de aprendizaje:

204
Figura 11.1: Aprendizaje por Refuerzo.

• No se le presentan pares entrada - salida.

• El agente tiene que obtener experiencia útil acerca de los estados, ac-
ciones, transiciones y recompensas de manera activa para poder actuar
de manera óptima.

• La evaluación del sistema ocurre en forma concurrente con el apren-


dizaje.

En RL un agente trata de aprender un comportamiento mediante interac-


ciones de prueba y error en un ambiente dinámico e incierto.

En general, al sistema no se le dice qué acción debe tomar, sino que él debe
de descubrir qué acciones dan el máximo beneficio.

En un RL estandar, un agente está conectado a un ambiente por medio de


percepción y acción (ver figura 11.1). En cada interacción el agente recibe
como entrada una indicación de su estado actual (s ∈ S) y selecciona una
acción (a ∈ A). La acción cambia el estado y el agente recibe una señal de
refuerzo o recompensa (r ∈ R).

El comportamiento del agente debe de ser tal que escoga acciones que tiendan
a incrementar a largo plazo la suma de las recompensas totales.

205
Figura 11.2: Ejemplo de problema.

El objetivo del agente es encontrar una polı́tica (π), que mapea estados a
acciones que maximice a largo plazo el refuerzo.

En general el ambiente es no-determinı́stico (tomar la misma acción en el


mismo estado puede dar resultados diferentes).

Sin embargo, se asume que el ambiente es estacionario (esto es, las probabil-
idades de cambio de estado no cambian o cambian muy lentamente).

Aspectos importantes: (i) se sigue un proceso de prueba y error, y (ii) la


recompensa puede estar diferida.

Otro aspecto importante es el balance entre exploración y explotación. Para


obtener buena ganancia uno prefiere seguir ciertas acciones, pero para saber
cuáles, se tiene que hacer cierta exploración. Muchas veces depende de cuánto
tiempo se espera que el agente interactue con el medio ambiente.

La caracterización de esta problemática está dada por procesos de decisión


de Markov o MDP.

Un MDP modela un problema de decisión sequencial en donde el sistema


evoluciona en el tiempo y es controlado por un agente.

La dinámica del sistema esta determinada por una función de transición de


probabilidad que mapea estados y acciones a otros estados.

206
Formalmente, un MDP es una tupla M =< S, A, Φ, R >. Los elementos de
un MDP son:

• Un conjunto finito de estados S({1, ..., n}).


• Un conjunto finito de acciones A, que pueden depender de cada estado.
• Función de recompensa (R): define la meta. Mapea cada estado–acción
a un número (recompensa), indicando lo deseable del estado.
• Modelo del ambiente (opcional): imita el comportamiento del ambi-
ente. Se puede usar para hacer planeación al considerar posibles situa-
ciones futuras basadas en el modelo.
Φ : A × S → S es una función de transición de estados dada como una
distribución de probabilidad. La probabilidad de alcanzar el estado
s′ ∈ S al realizar la acción a ∈ A en el estado s ∈ S, que se puede
denotar como Φ(a, s, s′ ).
• Polı́tica (π): define cómo se comporta el sistema en cierto tiempo. Es
un mapeo (a veces estocástico) de los estados a las acciones.
• Función de valor (V ): indica lo que es bueno a largo plazo. Es la
recompensa total que un agente puede esperar acumular empezando
en ese estado (predicciones de recompensas). Se buscan hacer acciones
que den los valores más altos, no la recompensa mayor.
Las recompensas están dadas por el ambiente, pero los valores se deben
de estimar (aprender) en base a las observaciones.
Aprendizaje por refuerzo aprende las funciones de valor mientras in-
teractua con el ambiente.

11.1.1 Modelos de Comportamiento Óptimo

Dado un estado st ∈ S y una acción at ∈ A(st ), el agente recibe una recom-


pensa rt+1 y se mueve a un nuevo estado st+1 .

El mapeo de estados a probabilidades de seleccionar una acción particular es


su polı́tica (πt ). Aprendizaje por refuerzo especifica cómo cambiar la polı́tica
como resultado de su experiencia.

207
No trata de maximizar la recompensa inmediata, sino la recompensa a largo
plazo (acumulada).

La recompensa debe de mostrar lo que queremos obtener y se calcula por el


ambiente.

Si las recompensas recibidas después de un tiempo t se denotan como: rt+1 ,


rt+2 , rt+3 , . . ., lo que queremos es maximizar lo que esperamos recibir de
recompensa (Rt ) que en el caso más simple es:
Rt = rt+1 + rt+2 + rt+3 + . . . + rT

Si se tiene un punto terminal se llaman tareas episódicas, si no se tiene se


llaman tareas continuas. En este último caso, la fórmula de arriba presenta
problemas, ya que no podemos hacer el cálculo cuando T no tiene lı́mite.

Podemos usar una forma alternativa en donde se van haciendo cada vez más
pequeñas las contribuciones de las recompensas más lejanas:

X
2
Rt = rt+1 + γrt+2 + γ rt+3 + . . . = γ k rt+k+1
k=0

donde γ se conoce como la razón de descuento y está entre: 0 ≤ γ < 1

Si γ = 0 se trata sólo de maximizar tomando en cuenta las recompensas


inmediatas.

En general, podemos pensar en los siguientes modelos:

1. Horizonte finito: el agente trata de optimizar su recompensa esperada


en los siguientes h pasos, sin preocuparse de lo que ocurra despues:
h
X
E( rt )
t=0

donde rt significa la recompensa recibida t pasos en el futuro.


Este modelo se puede usar de dos formas: (i) polı́tica no estacionaria:
donde en el primer paso se toman los h siguientes pasos, en el siguiente
los h − 1, etc., hasta terminar. El problema principal es que no siem-
pre se conoce cuántos pasos considerar. (ii) receding-horizon control :
siempre se toman los siguientes h pasos.

208
2. Horizonte infinito: las recompensas que recibe un agente son reducidas
geométricamente de acuerdo a un factor de descuento γ (0 ≤ γ ≤ 1):

X
E( γ t rt )
t=0

3. Recompensa promedio: optimizar a largo plazo la recompensa prome-


dio:
h
1X
limh→∞ E( rt )
h t=0
Problema: no hay forma de distinguir polı́ticas que reciban grandes
recompensas al principio de las que no.

En general, se utiliza la de horizonte infinito.

11.1.2 Recompensa diferida y modelo Markoviano

En general, las acciones del agente determinan, no sólo la recompensa in-


mediata, sino también (por lo menos en forma probabilı́stica) el siguiente
estado del ambiente.

Los problemas con refuerzo diferido se pueden modelar como procesos de


decisión de Markov (MDPs).

El modelo es Markoviano si las transiciones de estado no dependen de estados


anteriores.

En aprendizaje por refuerzo se asume que se cumple con la propiedad Marko-


viana y las probabilidades de transición están dadas por:
a ′
Pss ′ = P r{st+1 = s | st = s, at = a}

El valor de recompensa esperado es:


Rass′ = E{rt+1 | st = s, at = a, st+1 = s′ }

Lo que se busca es estimar las funciones de valor. Esto es, qué tan bueno es
estar en un estado (o realizar una acción).

209
La noción de “qué tan bueno” se define en términos de recompensas futuras
o recompensas esperadas.

La polı́tica π es un mapeo de cada estado s ∈ S y acción a ∈ A(s) a la


probabilidad π(s, a) de tomar la acción a estando en estado s. El valor de
un estado s bajo la polı́tica π, denotado como V π (s), es el refuerzo esperado
estando en estado s y siguiendo la polı́tica π.

Este valor esperado se puede expresar como:


( ∞
)
X
π k
V (s) = Eπ {Rt | st = s} = Eπ γ rt+k+1 | st = s
k=o

y el valor esperado tomando una acción a en estado s bajo la polı́tica π


(Qπ (s, a)):
( ∞
)
π
X k
Q (s, a) = Eπ {Rt | st = s, at = a} = Eπ γ rt+k+1 | st = s, at = a
k=o

Las funciones de valor óptimas se definen como:


V ∗ (s) = maxπ V π (s) y Q∗ (s, a) = maxπ Qπ (s, a)

Las cuales se pueden expresar como las ecuaciones de optimalidad de Bell-


man:
X
V ∗ (s) = maxa a
Pss a ∗ ′
′ [Rss′ + γV (s )]
s′
y X
Q∗ (s, a) = a
Pss a ∗ ′
′ [Rss′ + γV (s )]
s′
o X
Q∗ (s, a) = a
Pss a ∗ ′ ′
′ [Rss′ + γmaxa′ Q (s , a )]
s′

11.2 Métodos de Solución de MDPs

Existen tres formas principales de resolver MDPs: (i) usando métodos de


programación dinámica, (ii) usando métodos de Monte Carlo, y (iii) usando
métodos de diferencias temporales o de aprendizaje por refuerzo.

210
11.2.1 Programación Dinámica

Si se conoce el modelo del ambiente, osea las transiciones de probabilidad


a a
(Pss ′ ) y los valores esperados de recompensas (Rss′ ), las ecuaciones de op-

timalidad de Bellman nos representan un sistema de |S| ecuaciones y |S|


incognitas.

Consideremos primero como calcular la función de valor V π dada una polı́tica


arbitraria π.

V π (s) = Eπ {Rt | st = s}
= Eπ {rt+1 + γrt+2 + γ 2 rt+3 + . . . | st = s}
= E {r + γV π (st+1 ) | st = s}
Pπ t+1 P a a π ′
= a π(s, a) s′ Pss′ [Rss′ + γV (s )]

donde π(s, a) es la probabilidad de tomar la acción a en estado s bajo la


polı́tica π.

Podemos hacer aproximaciones sucesivas, evaluando Vk+1 (s) en términos de


Vk (s). X X
a a ′
Vk+1(s) = π(s, a) Pss ′ [Rss′ + γVk (s )]
a s′

Podemos entonces definir un algoritmo de evaluación iterativa de polı́ticas


como se muestra en la tabla 11.1.

Una de las razones para calcular la función de valor de una polı́tica es para
tratar de encontrar mejores polı́ticas. Dada una función de valor para una
polı́tica dada, podemos probar una acción a 6= π(s) y ver si su V (s) es mejor
o peor que el V π (s).

En lugar de hacer un cambio en un estado y ver el resultado, se pueden con-


siderar cambios en todos los estados considerando todas las acciones de cada
estado, seleccionando aquella que parezca mejor de acuerdo a una polı́tica
greedy.

Podemos entonces calcular una nueva polı́tica π ′ (s) = argmaxa Qπ (s, a) y


continuar hasta que no mejoremos.

211
Tabla 11.1: Algoritmo iterativo de evaluación de polı́tica.

Inicializa V (s) = 0 para toda s ∈ S


Repite
∆←0
Para cada s ∈ S
v ← V (s)
P P a a ′
V (s) ← a π(s, a) s′ Pss ′ [Rss′ + γV (s )

∆ ← max(∆, |v − V (s)|)
Hasta que ∆ < θ (número positivo pequeño)
Regresa V ≈ V π

Esto sugiere, partir de una polı́tica (π0 ) y calcular la función de valor (V π0 ),


con la cual encontrar una mejor polı́tica (π1 ) y ası́ sucesivamente hasta con-
verger a π ∗ y V ∗ .

A este procedimiento se llama iteración de polı́ticas y viene descrito en la


tabla 11.2.

Uno de los problemas de iteración de polı́ticas es que cada iteración involucra


evaluación de polı́ticas que requiere recorrer todos los estados varias veces.

Sin embargo, el paso de evaluación de polı́tica lo podemos truncar de varias


formas, sin perder la garantı́a de convergencia. Una de ellas es pararla de-
spués de recorrer una sola vez todos los estados. A esta forma se le llama
iteración de valor (value iteration). En particular se puede escribir combi-
nando la mejora en la polı́tica y la evaluación de la polı́tica truncada como
sigue: X
a a ′
Vk+1 (s) = maxa Pss ′ [Rss′ + γVk (s )]
s′

Se puede ver como expresar la ecuación de Bellman en una regla de actual-


ización. Es muy parecido a la regla de evaluación de polı́ticas, solo que se
evalúa el máximo sobre todas las acciones (ver tabla 11.3).

Para espacios muy grandes, el ver todos los estados puede ser computacional-
mente muy caro. Una opción es hacer estas actualizaciones al momento de

212
Tabla 11.2: Algoritmo de iteración de polı́tica.

1. Inicialización:
V (s) ∈ R y π(s) ∈ A(s) arbitrariamente ∀s ∈ S
2. Evaluación de polı́tica:
Repite
∆←0
Para cada s ∈ S
v ← V (s)
P π(s) π(s)
V (s) ← s′ Pss′ [Rss′ + γV (s′ )]
∆ ← max(∆, |v − V (s)|)
Hasta que ∆ < θ (número positivo pequeño)
3. Mejora de polı́tica:
pol-estable ← true
Para cada s ∈ S:
b ← π(s)
P a a ′
π(s) ← argmaxa s′ Pss ′ [Rss′ + γV (s )]

if b 6= π, then pol-estable ← false


If pol-estable, then stop, else go to 2.

Tabla 11.3: Algoritmo de iteración de valor.

Inicializa V (s) = 0 para toda s ∈ S


Repite
∆←0
Para cada s ∈ S
v ← V (s)
P a a ∗ ′
V (s) ← maxa s′ Pss ′ [Rss′ + γV (s )]

∆ ← max(∆, |v − V (s)|)
Hasta que ∆ < θ (número positivo pequeño)
Regresa una polı́tica determinı́stica tal que:
P a a ∗ ′
π(s) = argmaxa s′ Pss ′ [Rss′ + γV (s )]

213
Tabla 11.4: Algoritmo de Monte Carlo para estimar V π .

Repite
Genera un episodio usando π
Para cada estado s en ese episodio:
R ← recompensa después de la primera ocurrencia de s
Añade R a recomp(s)
V (s) ← promedio(recomp(s))

estar explorando el espacio, y por lo tanto determinando sobre qué estados


se hacen las actualizaciones.

El hacer estimaciones en base a otras estimaciones se conoce también como


bootstrapping.

11.2.2 Monte Carlo

Los métodos de Monte Carlo, solo requieren de experiencia y la actualización


se hace por episodio más que por cada paso.

El valor de un estado es la recompensa esperada que se puede obtener a partir


de ese estado.

Para estimar V π y Qπ podemos tomar estadı́sticas haciendo un promedio


de las recompensas obtenidas. El algoritmo para V π está descrito en la
tabla 11.4.

Para estimar pares estado-acción (Qπ ) corremos el peligro de no ver todos


los pares, por lo que se busca mantener la exploración. Lo que normalmente
se hace es considerar solo polı́ticas estocásticas que tienen una probabilidad
diferente de cero de seleccionar todas las acciones.

Con Monte Carlo podemos alternar entre evaluación y mejoras en base a cada
episodio. La idea es que después de cada episodio las recompensas observadas
se usan para evaluar la polı́tica y la polı́tica se mejora para todos los estados
visitados en el episodio. El algoritmo viene descrito en la tabla 11.5.

214
Tabla 11.5: Algoritmo de Monte Carlo.

Repite
Genera un episodio usando π con exploración
Para cada par s, a en ese episodio:
R ← recompensa después de la primera ocurrencia de s, a
Añade R a recomp(s, a)
Q(s, a) ← promedio(recomp(s, a))
Para cada s en el episodio:
π(s) ← argmaxa Q(s, a)

Existen dos formas para asegurar que todas las acciones pueden ser selec-
cionadas indefinidamente:

• Los algoritmos on-policy: Estiman el valor de la polı́tica mientras la


usan para el control. Se trata de mejorar la polı́tica que se usa para
tomar decisiones.
• Los algoritmos off-policy: Usan la polı́tica y el control en forma sep-
arada. La estimación de la polı́tica puede ser por ejemplo greedy y la
polı́tica de comportamiento puede ser ǫ-greedy. Osea que la polı́tica de
comportamiento está separada de la polı́tica que se quiere mejorar.
Esto es lo que hace Q-learning, lo cual simplifica el algoritmo.

Ejemplos de polı́ticas de selección de acciones son:

• ǫ−greedy: en donde la mayor parte del tiempo se selecciona la acción


que da el mayor valor estimado, pero con probabilidad ǫ se selecciona
una acción aleatoriamente.
• softmax, en donde la probabilidad de selección de cada acción depende
de su valor estimado. La más común sigue una distribución de Boltz-
mann o de Gibbs, y selecciona una acción con la siguiente probabilidad:
eQt (a)/τ
Pn Qt (b)/τ
b=1 e

215
donde τ es un parámetro positivo (temperatura).

11.2.3 Diferencias Temporales (Temporal Difference)

Los métodos de TD combinan las ventajas de los dos anteriores: permite


hacer bootstrapping (como DP) y no requiere tener un modelo del ambiente
(como MC).

Métodos tipo TD sólo tienen que esperar el siguiente paso.

TD usan el error o diferencia entre predicciones sucesivas (en lugar del error
entre la predicción y la salida final) aprendiendo al existir cambios entre
predicciones sucesivas.

Ventajas:

• Incrementales y por lo tanto fáciles de computar.

• Convergen más rápido con mejores predicciones.

El más simple TD(0) es:

V (st ) ← V (st ) + α [rt+1 + γV (st+1 ) − V (st )]

El algoritmo de TD(0) viene descrito en la tabla 11.6.

La actualización de valores tomando en cuenta la acción serı́a:

Q(st , at ) ← Q(st , at ) + α[rt+1 + γQ(st+1 , at+1 ) − Q(st , at )]

y el algoritmo es prácticamente el mismo, solo que se llama SARSA, y viene


descrito en la tabla 11.7.

Uno de los desarrollos más importantes en aprendizaje por refuerzo fué el


desarrollo de un algoritmo “fuera-de-polı́tica” (off-policy) conocido como Q-
learning.

216
Tabla 11.6: Algoritmo TD(0).

Inicializa V (s) arbitrariamente y π a la polı́tica a evaluar


Repite (para cada episodio):
Inicializa s
Repite (para cada paso del episodio):
a ← acción dada por π para s
Realiza acción a; observa la recompensa, r, y el siguiente estado, s′
V (s) ← V (s) + α [r + γV (s′ ) − V (s)]
s ← s′
hasta que s sea terminal

Tabla 11.7: Algoritmo SARSA.

Inicializa Q(s, a) arbitrariamente


Repite (para cada episodio):
Inicializa s
Selecciona una a a partir de s usando la polı́tica dada por Q
(e.g., ǫ–greedy)
Repite (para cada paso del episodio):
Realiza acción a, observa r, s′
Escoge a′ de s′ usando la polı́tica derivada de Q
Q(s, a) ← Q(s, a) + α [r + γQ(s′ , a′ ) − Q(s, a)]
s ← s′ ; a ← a′ ;
hasta que s sea terminal

217
Tabla 11.8: Algoritmo Q-Learning.

Inicializa Q(s, a) arbitrariamente


Repite (para cada episodio):
Inicializa s
Repite (para cada paso del episodio):
Selecciona una a de s usando la polı́tica dada por Q
(e.g., ǫ–greedy)
Realiza acción a, observa r, s′
Q(s, a) ← Q(s, a) + α [r + γmax′a Q(s′ , a′ ) − Q(s, a)]
s ← s′ ;
hasta que s sea terminal

La idea principal es realizar la actualización de la siguiente forma (Watkins,


89):
Q(st , at ) ← Q(st , at ) + α[rt+1 + γmaxa Q(st+1 , at+1 ) − Q(st , at )]

El algoritmo viene descrito en la tabla 11.8.

11.3 Trazas de Elegibilidad (eligibility traces)

Están entre métodos de Monte Carlo y TD de un paso.

Los métodos Monte Carlo realizan la actualización considerando la secuencia


completa de recompensas observadas.

La actualización de los métodos de TD la hacen utilizando únicamente la


siguiente recompensa.

La idea de las trazas de elegibilidad es considerar las recompensas de n es-


tados posteriores (o afectar a n anteriores).

Si recordamos:
Rt = rt+1 + γrt+2 + γ 2 rt+3 + . . . + γ T −t−1 rT

218
Lo que se hace en TD es usar:
Rt = rt+1 + γVt (st+1 )
lo cual hace sentido porque Vt (st+1 ) reemplaza a los términos siguientes
(γrt+2 + γ 2 rt+3 . . .).

Sin embargo, hace igual sentido hacer:

Rt = rt+1 + γrt+2 + γ 2 Vt (st+2 )


y, en general, para n pasos en el futuro.

En la práctica, más que esperar n pasos para actualizar (forward view ), se


realiza al revés (backward view ). Se guarda información sobre los estados por
los que se pasó y se actualizan hacia atrás las recompensas (descontadas por
la distancia). Se puede probar que ambos enfoques son equivalentes.

Para implementar la idea anterior, se asocia a cada estado o par estado-acción


una variable extra, representando su traza de elegibilidad (eligibility trace)
que denotaremos por et (s) o et (s, a).

Este valor va decayendo con la longitud de la traza creada en cada episodio.


La figura 11.3 muestra este comportamiento.

Para T D(λ):
(
γλet−1 (s) si s 6= st
et (s) =
γλet−1 (s) + 1 si s = st

Para SARSA se tiene lo siguiente:


(
γλet−1 (s, a) si s 6= st
et (s, a) =
γλet−1 (s, a) + 1 si s = st

El algoritmo para SARSA(λ) viene descrito en la tabla 11.9.

Para Q-learning como la selección de acciones se hace, por ejemplo, sigu-


iendo una polı́tica ǫ−greedy, se tiene que tener cuidado, ya que a veces los
movimientos, son movimientos exploratorios.

219
Figura 11.3: Comportamiento de las trazas de elegibilidad.

Tabla 11.9: SARSA(λ) con trazas de elegibilidad.

Inicializa Q(s, a) arbitrariamente y e(s, a) = 0 ∀s, a


Repite (para cada episodio)
Inicializa s, a
Repite (para cada paso en el episodeo)
Toma acción a y observa r, s′
Selecciona a′ de s′ usando una polı́tica derivada de Q (e.g., ǫ−greedy)
δ ← r + γQ(s′ , a′ ) − Q(s, a)
e(s, a) ← e(s, a) + 1
Para todos s, a
Q(s, a) ← Q(s, a) + αδe(s, a)
e(s, a) ← γλe(s, a)
s ← s′ ; a ← a′
hasta que s sea terminal

220
Aquı́ se puede mantener historia de la traza solo hasta el primer movimiento
exploratorio, ignorar las acciones exploratorias, o hacer un esquema un poco
más complicado que considera todas las posibles acciones en cada estado.

11.4 Planeación y Aprendizaje

Asumamos que tenemos un modelo del ambiente, esto es, que podemos pre-
decir el siguiente estado y la recomepensa dado un estado y una acción.

La predicción puede ser un conjunto de posibles estados con su probabilidad


asociada o puede ser un estado que es muestreado de acuerdo a la distribución
de probabilidad de los estados resultantes.

Dado un modelo, es posible hacer planificación. Lo interesante es que pode-


mos utilizar los estados y acciones utilizados en la planificación también
para aprender. De hecho al sistema de aprendizaje no le importa si los pares
estado-acción son dados de experiencias reales o simuladas.

Dado un modelo del ambiente, uno podrı́a seleccionar aleatoriamente un par


estado–acción, usar el modelo para predecir el siguiente estado, obtener una
recompensa y actualizar valores Q. Esto se puede repetir indefinidamente
hasta converger a Q∗ .

El algoritmo Dyna-Q combina experiencias con planificación para aprender


más rápidamente una polı́tica óptima.

La idea es aprender de experiencia, pero también usar un modelo para simular


experiencia adicional y ası́ aprender más rápidamente (ver tabla 11.10).

El algoritmo de Dyna-Q selecciona pares estado-acción aleatoriamente de


pares anteriores. Sin embargo, la planificación se puede usar mucho mejor si
se enfoca a pares estado-acción especı́ficos.

Por ejemplo, enfocarnos en las metas e irnos hacia atrás o más generalmente,
irnos hacia atrás de cualquer estado que cambie su valor.

Los cambios en las estimaciones de valor V o Q pueden cambiar, cuando se


está aprendiendo o si el ambiente cambia y un valor estimado deja de ser

221
Tabla 11.10: Algoritmo de Dyna-Q.

Inicializa Q(s, a) y Modelo(s, a) ∀s ∈ S, a ∈ A


DO forever
s ← estado actual
a ← ǫ−greedy(s, a)
realiza acción a observa s′ y r
Q(s, a) ← Q(s, a) + α[r + γmaxa′ Q(s′ , a′ ) − Q(s, a)]
Modelo(s, a) ← s′ , r
Repite N veces:
s ← estado anterior seleccionado aleatoriamente
a ← acción aleatoria tomada en s
s′ , r ← Modelo(s, a)
Q(s, a) ← Q(s, a) + α[r + γmaxa′ Q(s′ , a′ ) − Q(s, a)]

cierto.

Lo que se puede hacer es enfocar la simulación al estado que cambio su valor.


Esto nos lleva a todos los estados que llegan a ese estado y que también
cambiarı́an su valor.

Esto proceso se puede repetir sucesivamente, sin embargo, algunos estados


cambian mucho más que otros. Lo que podemos hacer es ordenarlos y cam-
biar solo los que rebacen un cierto umbral. Esto es precisamente lo que hacer
el algoritmo de prioritized sweeping (ver tabla 11.11).

11.5 Generalización en Aprendizaje por Re-


fuerzo

Hasta ahora hemos asumido que se tiene una representación explı́cita en


forma de tabla (i.e., una salida por cada tupla de entradas). Esto fun-
ciona para epacios pequeños, pero es impensable para dominios como ajedrez
(10120 ) o backgammon (1050 ).

222
Tabla 11.11: Algoritmo de Prioritized sweeping.

Inicializa Q(s, a) y Modelo(s, a) ∀s ∈ S, a ∈ A y ColaP = ∅


DO forever
s ← estado actual
a ← ǫ−greedy(s, a)
reaiza acción a onserva s′ y r
Modelo(s, a) ← s′ , r
p ←| r + γmaxa′ Q(s′ , a′ ) − Q(s, a) |
if p > θ, then inserta s, a a ColaP con prioridad p
Repite N veces, mientras ColaP 6= ∅:
s, a ← primero(ColaP )
s′ , r ← Modelo(s, a)
Q(s, a) ← Q(s, a) + α[r + γmaxa′ Q(s′ , a′ ) − Q(s, a)]
Repite ∀s, a que se predice llegan a s:
r ← recomensa predicha
p ←| r + γmaxa Q(s, a) − Q(s, a) |
if p > θ, then inserta s, a a ColaP con prioridad p

223
Una forma de hacerlo es con una representación implı́cita, i.e., una función.

Por ejemplo en juegos, una función de utilidad estimada se puede representar


como una función lineal pesada sobre un conjunto de atributos (Fi ’s):
V (i) = w1 f1 (i) + w2 f2 (i) + . . . + wn fn (i)
En ajedrez se tienen aproximadamente 10 pesos, por lo que es una compresión
bastante significativa.

La compresión lograda por una representación implı́cita permite al sistema


de aprendizaje, generalizar de estados visitados a estados no visitados.

Por otro lado, puede que no exista tal función. Como en todos los sistemas
de aprendizaje, existe un balance entre el espacio de hipótesis y el tiempo
que toma aprender una hipótesis aceptable.

Muchos sistemas de aprendizaje supervisado tratan de minimizar el error


cuadrado (MSE) bajo cierta distribución P de las entradas.
~ t representa el vector de parámetros de la función parametrizada que
Si Θ
queremos aprender:
X
~ t) =
MSE(Θ P (s)[V π(s) − Vt (s)]2
s∈S

donde P (s) es una distribución pesando los errores de diferentes estados.

Para ajustar los parámetros del vector de la función que queremos optimizar,
las técnicas de gradiente ajustan los valores en la dirección que produce la
máxima reducción en el error:

~ t+1 =
Θ ~ t − 1 α∇ ~ [V π(st ) − Vt (st )]2
Θ 2 Θt
= ~ t + α[V π(st ) − Vt (st )]∇ ~ Vt (st )
Θ Θt

donde α es un parámetro positivo 0 ≤ α ≤ 1 y ∇Θ~t f (Θt ) denota un vector


de derivadas parciales.

Como no sabemos V π(st ) lo tenemos que aproximar. Podemos hacerlo con


trazas de elegibilidad y actualizar la función Θ como sigue:
~ t+1 = Θ
Θ ~ t + αδt~et

224
donde δt es el error:

δt = rt+1 + γVt (st+1 ) − Vt (st )


~ t,
y ~et es un vector de trazas de elegibilidad, una por cada componente de Θ
que se actualiza como:

~et = γλ~et−1 + ∇Θ
~ t Vt (st )

con ~e0 = 0.

11.6 Aplicaciones a Juegos y Control

La primera aplicación en aprendizaje por refuerzo fué el programa para jugar


damas de Samuel. Usó una función lineal de evaluación con pesos usando
hasta 16 términos. Su programa era parecido a la ecuación de actualización
de pesos, pero no usaba recompensa en los estados terminales. Esto hace que
puede o no converger y puede aprender a perder.

Logró evitar ésto haciendo que el peso para ganancia de material fuera siem-
pre positivo.

Se han hecho aplicaciones a control de robots. Una de las más conocidas es el


control del péndulo invertido. Controlar la posición x para que se mantenga
aproximadamente derecho (θ ≈ π/2), manteniendose en los lı́mites de la
pista. X, θ, Ẋ y θ̇ son continuas. El control es de tipo bang–bang.

Boxes (Michie, Chambers ’68) balanceaba el pendulo por más de una hora
después de 30 intentos (no simulado). Idea: discretizar el espacio en cajas.
Se corria el sistema hasta que se caı́a el péndulo o se salia de los lı́mites.
Entonces se daba un refuerzo negativo a la última “caja” y se propagaba
a la secuencia de “cajas” por las que pasó. Sin embargo, los resultados
más impresionantes (un péndulo invertido triple) se lograron derivando un
algoritmo con teorı́a de control clásica (simulado).

TD-gammon (Tesauro ’92) ilustra la potencialidad de técnicas de aprendizaje


por refuerzo. Tesauro primero trató de aprender Q(s, a) directamente con
una red neuronal (Neurogammon) con poco éxito. Después representó una

225
función de evaluación con una sola capa intermedia con 40 nodos. Después
de 200,000 juegos de entrenamiento mejoró notablemente su desempeño.
Añadiendo atributos adicionales a una red con 80 nodos escondidos, después
de 300,000 juegos de entrenamiento, juega como los 3 mejores jugadores del
mundo.

Recientemente (2000), se desarrolló un algoritmo de RL que actualiza las


funciones de evaluación en un árbol de búsqueda en juegos (TDLeaf(λ).

Aplicado a ajedrez, mejora el puntaje de un programa (KnightCap) de 1,650


a 2,150 después de 308 juegos en 3 dı́as.

Se ha aplicado recientemente para controlar aviones y helicópteros

11.7 Algunos desarrollos recientes

Uno de los problemas principales de las técnicas usadas en aprendizaje por


refuerzo, y para resolver MDP en general, es la aplicación a espacios grandes
(muchos estados y acciones).

Aunque el algoritmo converge en teorı́a, en la práctica puede tomar un


tiempo inaceptable.

Dentro de los enfoques que atacan, en parte, esta problemática, podemos


mencionar:

• Agregación de estados, en donde se juntan estados “parecidos” y a


todos ellos se les asigna el mismo valor, reduciendo con esto el espacio
de estados. Algunos ejemplos de esto son: tile-coding, coarse coding,
radial basis functions, Kanerva coding, y soft-state aggregation.
• Abstracciones basadas en máquinas de estado finito, en donde el apren-
dizaje por refuerzo tiene que decidir que máquina utilizar (por ejemplo,
HAM y PHAM).
• Definición de jerarquı́as, en donde se divide el espacio en subproblemas,
se aprenden polı́ticas a los espacios de más bajo nivel y estas se usan
para resolver problemas de más alto nivel (e.g., MAXQ, HEXQ). Algo

226
parecido se usa con Macros y Options, en donde se aprenden polı́ticas
de subespacios que se usan para resolver problemas mas grandes.

• Otra opción es utilizar un sistema de planificación que decida la se-


cuencias de submetas que se tienen que cumplir para resolver cierto
problema (por ejemplo usando TOPs) y después aprender por apren-
dizaje por refuerzo las acciones a realizar para resolver cada submeta
(e.g., RL-TOP).

• También se ha buscado utilizar representaciones relacionales dentro de


aprendizaje por refuerzo, ya sea para representar las funciones de valor
y/o para representar los estados y las acciones.

• También se han utilizado soluciones conocidas como guı́as o trazas que


se usan para aprender más rápidamente las funciones de valor o para
aprender un subconjunto de acciones relevantes.

227