Inteligencia Artificial “Aprendizaje inductivo” Ing. Sup. en Informática, 4º Curso académico: 2011/2012 Profesores: Ramón Hermoso y Matteo Vasirani Aprendizaje Resumen: 3. Aprendizaje automático 3.1 Introducción al aprendizaje automático 3.2 Árboles de decisión 3.3 Redes neuronales 3.4 Algoritmos genéticos 3.5 Aprendizaje por refuerzo Aprendizaje: motivación 1. Es difícil especificar el conocimiento necesario para realizar una determinada tarea – Ejemplo: diagnosis de cáncer de mama a partir de imágenes 2. Organizar, analizar y estructurar los datos y la información 3. Automatizar los sistemas y personalizarlos a los individuos Solución: sistemas que aprendan y se adaptan Aprendizaje: posibles tareas • Clasificación: – clasificar productos de una fábrica en correctos y erróneos • Predicción: – predecir el tráfico en una ciudad • Diagnostico: – diagnosticar enfermedades de pacientes a partir de síntomas • Agrupación: – agrupar páginas Web en función de su contenido • Caracterización: – Determinar las características de las personas que compren determinados tipos de productos • Mejorar la eficiencia: – mejorar un robot que tiene que encontrar caminos a una determinada posición en un edificio para que encuentre los caminos más rápido Aprendizaje Representación de los datos Simbólico • Representación de los datos por características y atributos • E.g.: estado de trafico tiempo – día de la semana – hora <lluvia–viernes–8:00> <sol–sábado– 12:00> Sub-simbólico • Representación no directamente interpretable • E.g.: estado de trafico tiempo – día de la semana – hora <0001–1101–0010> <1101–0101–1110> Aprendizaje Tipo de datos Supervisado • Tenemos un conjunto de ejemplos para los que conocemos los resultados • E.g.: estado de trafico tiempo – día de la semana – hora tráfico <lluvia–viernes–8:00 mucho> <sol–sábado– 12:00 poco> No supervisado • Tenemos un conjunto de ejemplos sin etiquetas • E.g.: agrupar objetos Aprendizaje Supervisado Simbólico Sub-simbólico Árboles de decisión Redes neuronales No supervisado Aprendizaje por refuerzo Algoritmos genéticos Aprendizaje supervisado: ejemplo Ejemplos sí Casos nuevos no sí sí sí no no Algoritmo de aprendizaje Concepto objetivo: objetos con 3 lados son triángulos Aprendizaje supervisado: notación básica • Objetivo: – aprender un cierto concepto objetivo (por ejemplo: “determinados objetos son triángulos”) , a partir de ejemplos, definidos como un conjunto de atributos, de los que conocemos los resultados (p. e.: objeto nº1=triángulo, objeto nº2=triángulo, objeto nº3=no triángulo, …) • Problema: – encontrar una descripción del concepto objetivo (hipótesis) que – I) concuerda con los ejemplos presentados – II) generaliza a casos nuevos Aprendizaje supervisado: notación básica • Matemáticamente: – Suponemos que el concepto objetivo es una función f:X→Y • X es un espacio de entradas (posibles casos) (p.E.: {objeto azul nº1, objeto verde nº5, …}) • Y el espacio de salidas (resultados) {p.e.:{triángulo, no triángulo}) – Tenemos como entrada una secuencia de ejemplos de pares (entrada,salida): • { (x1,y1), (x2,y2), …} con xi ∈ X e yi ∈ Y • p.e.:{(objeto rojo nº22, triángulo), (objeto verde nº34, no triángulo), …} – Objetivo del algoritmo de aprendizaje: • encontrar función h є H que aproxime f , tal que: – h(xi)=f(xi) para todos (o la mayoría de los) ejemplos presentados – h tenga expectativas de comportase igual (o similar) a f para casos aun desconocidos (generalización) • H : espacio de hipótesis Formalización de un problema de aprendizaje supervisado • Clase de problemas: – ¿Que se debe aprender (concepto objetivo) , cómo se representan los elementos (atributos y posible valores de cada atributo)? • Información presentada (ejemplos de entrenamiento): – Ejemplos positivos, negativos o ambos • Espacio de las hipótesis: – ¿En qué lenguaje se presentan las hipótesis (árbol de decisión, red neuronal), cuál es el conjunto de hipótesis? • Algoritmo de aprendizaje: – ¿Qué algoritmo /arquitectura se usa? • Características del aprendizaje – ¿Cuándo se ha aprendido? – ¿ Cuándo se aprende correctamente? Espacio de hipótesis • Encontrar una hipótesis que: – Concuerda con los ejemplos de entrenamiento – Generaliza bien a casos aún desconocidos • ¿Cómo encontrar esta hipótesis h є H? y y x y x • Navaja de Ockham: – Entre varias hipótesis posibles, preferir la hipótesis más sencilla. x Clasificación • Clasificación: – f:X → Y, Y es discreto – Clasificación binaria: • Problema: decidir la pertenencia de casos a una clase • f:X →{0,1} • Posible información presentada (ejemplos de entrenamiento): – Casos positivos: (x,1) (x pertenece a la clase) – Casos negativos: (x,0) (x no pertenece a la clase) – La clasificación binaria tiene muchas aplicaciones reales: • Frecuentemente se identifica aprendizaje supervisado con la clasificación – Árboles de decisión y redes neuronales son algoritmos de clasificación Aprendizaje Resumen: 3. Aprendizaje automático 3.1 Introducción al aprendizaje automático 3.2 Árboles de decisión 3.3 Redes neuronales 3.4 Algoritmos genéticos 3.5 Aprendizaje por refuerzo Ejemplo • Decidir si se puede dar una tarjeta de crédito a clientes de un banco Saldo act. Edad Saldo med. Años cliente ¿Dar tarjeta? bajo <18 alto <1 no alto 18-25 alto >1 si alto 18-25 medio >1 no alto >25 bajo >1 no bajo >25 medio >1 si alto 18-25 alto >1 si bajo 18-25 alto <1 no medio <18 medio <1 no medio >25 alto <1 si • Objetivo: aprender un clasificador de clientes Árboles de decisión como clasificadores • Un ejemplo: edad <18 18-25 NO saldo med. bajo, medio NO >25 saldo med. alto bajo saldo act. NO bajo, medio alto NO años cliente <1 NO >1 alto medio años cliente <1 NO SI >1 SI SI Clasificar un caso: (saldo act.=bajo, edad=>25, saldo med.=medio, años cliente=>1) Aprendizaje de árboles de decisión • Problema: inducir (encontrar/aprender) árboles de decisión (hipótesis) a partir de ejemplos de entrenamiento • Algoritmo 1: – para cada ejemplo de entrenamiento añadir la rama completa del ejemplo saldo act. Ejemplo 1: ((bajo,<18,alto,<1),no) bajo edad <18 saldo med. alto años cliente <1 NO hipótesis 1 Aprendizaje de árboles de decisión • Problema: inducir (encontrar/aprender) árboles de decisión (hipótesis) a partir de ejemplos de entrenamiento • Algoritmo 1: – para cada ejemplo de entrenamiento añadir la rama completa del ejemplo saldo act. Ejemplo 1: ((bajo,<18,alto,<1),no) bajo hipótesis 2 alto edad edad <18 18-25 Ejemplo 2: ((alto,18-25,alto,>1),si) saldo med. saldo med. alto alto Las hipótesis concuerdan con los ejemplos, pero: no generalizan a casos nuevos años cliente años cliente <1 >1 NO SI Aprendizaje de árboles de decisión • Algoritmo de aprendizaje de árboles de decisión: {(E1,si),(E2,si),(E3,no),(E4,no),(E5,si),…} – crear el árbol de forma recursiva de A1 A =a A1=b arriba abajo 1 – utilizar en cada nodos el atributo {(E1,si),(E2,si),(E4,no),…} {(E3,no),(E5,si), …} “más importante” A2 – el atributo más importante es él que … A =d 2 mejor discrimina los ejemplos que A2=c han llegado hasta este nodo {(E1,si),(E2,si)} {(E4,no),…} – clasifica los ejemplos y sigue en el … … siguiente nivel Aprendizaje de árboles de decisión: algoritmo ID3 • • • • Seleccionar el “mejor” atributo Ai Crear un nodo para ese atributo con tantos sucesores como valores tenga Introducir los ejemplos en los sucesores según el valor que tenga el atributo Ai Por cada sucesor, • Si sólo hay ejemplos de una clase ck entonces etiquetarlo con ck • Si no, llamar recursivamente el algoritmo con una tabla formada por los ejemplos de ese nodo, eliminando la columna del atributo Ai Aprendizaje de árboles de decisión: ejemplo Ej.: edad s_a s_m tarjeta E1 <18 alto alto NO E2 <18 bajo bajo NO E3 18-25 alto alto SI E4 18-25 bajo alto SI E5 18-25 alto bajo NO E6 18-25 bajo bajo NO {E1,E2,E3,E4,E5,E6} edad <18 >25 18-25 NO s_m NO {E1,E2} {E3,E4,E5,E6} {} alto bajo medio SI NO SI/NO {E3,E4} {E5,E6} {} Aprendizaje de árboles de decisión: elección de los atributos E edad s_a tarjeta Ej1 <18 bajo NO Ej2 <18 alto NO Ej3 18-25 mediano SI Ej4 >25 alto SI ¿Cuál es el “mejor” atributo: s_a o edad? Elección basada en la entropía de un atributo – mide en contenido de información en bits – ¿Cuántos bits hacen falta para codificar una respuesta que pueda tener n valores distintos y cada valor ri tiene una probabilidad P(ri) I[P(r1),…,P(rn)] = ∑ - P(ri) · log2 [P(ri)] Para el conjunto de ejemplos E y el concepto “dar tarjeta”: r1=SI, r2=NO I[P(SI),P(NO)] = -2/4 · log2 [2/4] -2/4 · log2 [2/4] = 1 Aprendizaje de árboles de decisión: elección de los atributos • El concepto objetivo tiene valores r1,…,rn (p.Ej.: r1=SI, r2=NO) • Cada atributo Ak ∈ A tiene una serie de posibles valores v1,…,vm.. Estos dividen los ejemplos del conjunto E en m subconjuntos E1,…,Em: – p. e.: Ak=“edad”, v1=“<18”, v2=“18-25”, v3=“>25”, E1={Ej1,Ej2}, E2={Ej3}, E3={Ej4} • Procedimiento para elegir el “mejor” atributo: – Paso 1: Calcula la entropía de E: IE [P(r1),…,P(rn)] = ∑i - P(ri) · log2 [P(ri)] – Paso 2: Para cada Ak, se calcula la entropía de los subconjuntos Ei: IEi [P(r1 |vi ),…,P(rn |vi )] = ∑j - P(rj | vi ) · log2 [P(rj | vi )] – Paso 3: Para cada Ak, se calcula la cantidad de entropía del atributo: I(Ak) = ∑j P(vj ) · IEj [P(r1 |vj ),…,P(rn |vj )] – Paso 4: Elegir aquel atributo que obtiene la mayor ganancia de información: Ganancia(Ak) = IE - I(Ak ) Aprendizaje de árboles de decisión: elección de los atributos, ejemplo E edad s_a tarjeta Ej1 <18 bajo NO Ej2 <18 alto NO Ej3 18-25 mediano SI Ej4 >25 alto SI ¿Cuál es el “mejor” atributo: s_a o edad? • Paso 1: – Calcula la entropía de E: I[P(SI),P(NO)] = -2/4 · log2 [2/4] -2/4 · log2 [2/4] = 1 Aprendizaje de árboles de decisión: elección de los atributos E edad s_a tarjeta Ej1 <18 bajo NO Ej2 <18 alto NO Ej3 18-25 mediano SI Ej4 >25 alto SI ¿Cuál es el “mejor” atributo: s_a o edad? • Paso 2: – Para cada Ak, se calcula la entropía de los subconjuntos Ei: – Ejemplo: edad E={Ej1,Ej2,Ej3,Ej4} edad <18 E1={Ej1,Ej2} 18-25 >25 E2={Ej3} I[P(SI|<18),P(NO|<18)] I[P(SI|18-25),P(NO|18-25)] = -0/2 · log2 [0/2] -2/2 · = -1/1 · log2 [1/1] -0/1 · log2 [0/1] = 0 log2 [2/2] = 0 E3={Ej4} I[P(SI|>25),P(NO|>25)] = -1/1 · log2 [1/1] -0/1 · log2 [0/1] = 0 Aprendizaje de árboles de decisión: elección de los atributos E edad s_a tarjeta Ej1 <18 bajo NO Ej2 <18 alto NO Ej3 18-25 mediano SI Ej4 >25 alto SI ¿Cuál es el “mejor” atributo: s_a o edad? • Paso 2: – Para cada Ak, se calcula la entropía de los subconjuntos Ei: – Ejemplo: s_a E={Ej1,Ej2,Ej3,Ej4} s_a bajo E1={Ej1} I[P(SI|bajo),P(NO|bajo)] = -0/1 · log2 [0/1] -1/1 · log2 [1/1] = 0 mediano E2={Ej3} I[P(SI|med),P(NO|med)] = -1/1 · log2 [1/1] -0/1 · log2 [0/1] = 0 alto E3={Ej2, Ej4} I[P(SI|alto),P(NO|alto)] = -1/2 · log2 [1/2] -1/2 · log2 [1/2] = 1 Aprendizaje de árboles de decisión: elección de los atributos E edad s_a tarjeta Ej1 <18 bajo NO Ej2 <18 alto NO Ej3 18-25 mediano SI Ej4 >25 alto SI • Paso 3: – Para cada Ak,, calcular I(Ak): ¿Cuál es el “mejor” atributo: s_a o edad? I[edad] = P(<18)·I[P(SI|<18),P(NO|<18)] + P(18-25)·I[P(SI|18-25),P(NO|18-25)] + P(>25)·I[P(SI|>25),P(NO|>25)] = 2/4 · 0 + 1/4 · 0 + 1/4 · 0 = 0 I[s_a] = P(bajo)·I[P(SI|bajo),P(NO|bajo)] + P(med)·I[P(SI|med),P(NO|med)] + P(alto)·I[P(SI|alto),P(NO|alto)] = 1/4 · 0 + 1/4 · 0 + 2/4 · 1 = 0.5 Aprendizaje de árboles de decisión: elección de los atributos E edad s_a tarjeta Ej1 <18 bajo NO Ej2 <18 alto NO Ej3 18-25 mediano SI Ej4 >25 alto SI ¿Cuál es el “mejor” atributo: s_a o edad? • Paso 4: – Elegir el atributo con mayor ganancia de información: Ganancia(edad) = IE - I(edad) = 1 – 0 = 1 Ganancia(s_a) = IE - I(s_a) = 1 – 0.5 = 0.5 – Como cabe esperar se elige el atributo “edad” Aprendizaje de árboles de decisión: Comentarios • Ventajas: – decisiones basadas en la estadística (es capaz de tratar ruido) – Los clasificadores aprendidos (árboles de decisión) son fácilmente interpretables • Problemas: – mantiene una hipótesis única /no es capaz de aprender de forma incremental (si se tienen nuevos ejemplos hay que calcular el árbol de nuevo) – tratamientos de valores continuos, o atributos con un gran número de valores discretos (C4.5) – tratamiento de valores desconocidos (información incompleta) – árboles exponenciales para determinadas funciones (p.e.: función paridad) – overfitting: generar árboles demasiado específicos (¿Cuándo se debe parar de dividir los nodos?) Evaluación de métodos de aprendizaje Evaluación empírica • No se puede evaluar un clasificador con los mismos ejemplos que se han utilizado para el entrenamiento • Colecciones de pruebas: – contienen un conjunto de ejemplos de entrenamiento – ML repository: http://www.ics.uci.edu/~mlearn/MLRepository.html • Un clasificador clasifica un conjunto de casos de la siguiente forma: Ejemplos pos. Ejemplos neg. Clasificados como positivos TP FP Clasificados como negativos FN TN TP: true positives (clasificado: positivo, realidad: positivo) TN: true negatives (clasificado: negativo, realidad: negativo) FP: false positives (clasificado: positivo, realidad: negativo) FN: false negatives (clasificado: negativo, realidad: positivo) Evaluación de métodos de aprendizaje Medidas (más comunes) de evaluación: • true positive rate (sensitivity, recall): [0,…,1]; ideal=1 TP clasificados correctamente como positivos = TP + FN todos los positivos tpr = • false positive rate: [0,…,1]; ideal=0 fpr = FP clasificados erroneamente como positivos = FP + TN todos los negativos • precision: [0,…,1]; ideal=1 precision = TP clasificados correctamente como positivos = TP + FP todos los clasificados como positivos • corrección:[0,…,1]; ideal=1 correccion = TP + TN clasificados correctamente = TP + FP + TN + FN todos los ejemplos • ¿Es útil un clasificador con corrección=0.4? Evaluación de métodos de aprendizaje • Hay dos tipos de errores – falsos positivos – falsos negativos • En algunos dominios es más grave un error que otro: – Ejemplo: diagnostico de cáncer – es muy importante identificar todos los pacientes que tienen cáncer – no importa (demasiado) si se diagnostica cáncer a una persona que no lo tiene – hay que evitar falsos negativos – el true positive rate tiene que ser alto Evaluación de métodos de aprendizaje Aumentar el true positive rate es muy fácil Por ejemplo: tpr = tpr = TP 9 = =1 TP + FN 9 + 0 TP 6 = = 0,66 TP + FN 6 + 3 • Entonces true_positive_rate =1 (muy bien), pero false_positive_rate=1 (muy mal) • Es importante encontrar un equilibrio entre ambas medidas • Ideal: true_positive_rate=1 y false_positive_rate=0 Ejercicio Aprendizaje de árboles de decisión: Aplique el algoritmo de aprendizaje de árboles de decisión al siguiente conjunto de ejemplos. Especifique el árbol aprendido y los valores de ganancia de los atributos elegidos en los diferentes nodos. Pelo Altura Peso Protección Quemadura rubio medio bajo no sí rubio alto medio sí no moreno bajo medio sí no rubio bajo medio no si rojo medio alto no si moreno alto alto no no moreno medio alto no no rubio bajo bajo sí no