Programas que aprenden?
“Se dice que un programa aprende si mejora su performance en una cierta tarea al incorporar experiencia”
Programas que aprenden?
Memorizar no es aprender
Generalizar es aprender
Como logramos generalizar?
Tengo estos datos:
8 – T
2 – T
5 – F
9 – F
4 – T
13 – F
Cual es la respuesta para 12?
Y si agrego los datos:
14 – F
16 – T
Como logramos generalizar?
Para generalizar incorporamos “algo” a los datos: un bias.
En general usamos la “navaja de Occam”: La respuesta más simple que explica las observaciones es la válida
Distintos métodos de ML usan distintos bias
Métodos básicos
Arboles de decisión
Probablemente el método más conocido para resolver problemas de clasificación
Muy asociado a nuestra forma de proceder
Uno de los primeros desarrollos en ML
Arboles de decisión
Ejemplo: “Play Tennis”
Arboles de decisión
Ejemplo: “Play Tennis”
Arboles de decisión
Cómo construímos el árbol?
Hay variables más relevantes que otras.
Si ponemos más alto las más relevantes, seguramente el árbol llegara antes a la solución, será mas simple.
Un árbol más simple seguramente generalizará mejor (Occam).
Arboles de decisión
Cómo elegir que variable usar para dividir?
Necesitamos la más “relevante”
Busquemos la que dá más información sobre la clase->Information Gain, correlación, etc.
Dividimos e iteramos
Arboles de decisión
Hasta cuando dividimos?
Hasta que tenga clases puras en todos los nodos
Hasta que no tenga más variables disponibles
O hay algo mejor?
Arboles de decisión
Sobreajuste!
Arboles de decisión
Cómo controlar el sobreajuste?
Necesitamos un conjunto independiente de datos, sobre el que podamos controlar la capacidad de generalización (“Validación”).
Cuando deja de mejorar, detenemos el proceso.
Este proceso se suele llamar “Model Selection”
El perceptron
En muchos problemas tenemos datos reales
wTx + b = 0
wTx + b < 0
wTx + b > 0
f(x) = sign(wTx + b)
El perceptron
Tenemos una regla de clasificación de forma fija
Aprender: encontrar el mejor W y b para el problema
Regla de aprendizaje del perceptron: si es incorrecto muevo W hacia el ejemplo
Converge a la solución
wTx + b = 0
f(x) = sign(wTx + b)
Estimación del error
Como estimar qué tan bueno es lo que aprendí?
La solución más simple es medirlo en una muestra de datos similar a la que voy a usar a futuro: Conjunto de test
Estimación del error
Si no tengo un conjunto de test, estimo con Cross-Validation
Límite: Leave-one-out
Como resolver un problema en ML
Identificar el problema y conseguir conocimiento experto
Conseguir datos, muchos datos!
Elegir un método adecuado (o varios)
Entrenar varios modelos con el conjunto de train, evaluarlos con el conjunto de validación
Estimar error con el conjunto de test
Selección de inputs
Selección de variables: Por qué?
Muchos problemas actuales tienen cientos o miles de variables medidas (sobre pocos ejemplos)
Modelar esos problemas “directamente” suele ser sub-óptimo.
Tanto en calidad como en interpretabilidad.
En algunos casos la “extracción de variables” (pca, ica, etc.) no es una opción válida.
Página anterior | Volver al principio del trabajo | Página siguiente |