89
Machine Learning Una Intro

TestingAR Meetup VIII - Luis Argerich - Una Breve Introducción a Machine Learning

Embed Size (px)

Citation preview

Page 1: TestingAR Meetup VIII - Luis Argerich - Una Breve Introducción a Machine Learning

Machine Learning

Una Intro

Page 2: TestingAR Meetup VIII - Luis Argerich - Una Breve Introducción a Machine Learning

"All models are wrong, but some are useful."

- George. E.P. Box.

Page 3: TestingAR Meetup VIII - Luis Argerich - Una Breve Introducción a Machine Learning
Page 4: TestingAR Meetup VIII - Luis Argerich - Una Breve Introducción a Machine Learning
Page 5: TestingAR Meetup VIII - Luis Argerich - Una Breve Introducción a Machine Learning
Page 6: TestingAR Meetup VIII - Luis Argerich - Una Breve Introducción a Machine Learning
Page 7: TestingAR Meetup VIII - Luis Argerich - Una Breve Introducción a Machine Learning
Page 8: TestingAR Meetup VIII - Luis Argerich - Una Breve Introducción a Machine Learning
Page 9: TestingAR Meetup VIII - Luis Argerich - Una Breve Introducción a Machine Learning
Page 10: TestingAR Meetup VIII - Luis Argerich - Una Breve Introducción a Machine Learning
Page 11: TestingAR Meetup VIII - Luis Argerich - Una Breve Introducción a Machine Learning

Taxonomía

Page 12: TestingAR Meetup VIII - Luis Argerich - Una Breve Introducción a Machine Learning

Diferentes Tipos de Algoritmos

- Aprendizaje Supervisado:

- Regresión.

- Clasificación

- Binaria

- Multiclase

- Recomendaciones

- Aprendizaje No-Supervisado.

- Clustering.

- Reducción de dimensiones.

Page 13: TestingAR Meetup VIII - Luis Argerich - Una Breve Introducción a Machine Learning

Aprendizaje Supervisado

Page 14: TestingAR Meetup VIII - Luis Argerich - Una Breve Introducción a Machine Learning

Aprendizaje Supervisado

- Clasificación, Regresión y Recomendaciones.

- Contamos con un "set de entrenamiento"

- El objetivo es a partir del set de entrenamiento derivar un modelo.

- Que luego nos sirva para realizar predicciones.

Page 15: TestingAR Meetup VIII - Luis Argerich - Una Breve Introducción a Machine Learning
Page 16: TestingAR Meetup VIII - Luis Argerich - Una Breve Introducción a Machine Learning
Page 17: TestingAR Meetup VIII - Luis Argerich - Una Breve Introducción a Machine Learning
Page 18: TestingAR Meetup VIII - Luis Argerich - Una Breve Introducción a Machine Learning
Page 19: TestingAR Meetup VIII - Luis Argerich - Una Breve Introducción a Machine Learning

Parámetros

- Los parámetros son los valores que el algoritmo tiene que aprender.

- f(trainingSet) = parameters

- f(testSet,parameters) = predictions

Page 20: TestingAR Meetup VIII - Luis Argerich - Una Breve Introducción a Machine Learning

Cross Validation

- Dividir el set de entrenamiento en 2: train & test

- Usar solo "train" para entrenar el algoritmo.

- Usar el set de test para evaluar los resultados.

Page 21: TestingAR Meetup VIII - Luis Argerich - Una Breve Introducción a Machine Learning

Evaluando un Algoritmo de ML

- Hace falta definir una métrica que nos diga que tan bien o mal ha funcionado el algoritmo.

- Hay muchas métricas posibles:

- RMSE

- Log Loss

- Cross Entropy

- AUC Score

- F1-Score

- etc...

Page 22: TestingAR Meetup VIII - Luis Argerich - Una Breve Introducción a Machine Learning

Hiper-Parámetros

- Son parámetros que sirven para "tunear" un algoritmo.

- Por ejemplo si nuestro algoritmo es ajustar un polinomio el grado del polinomio es un hiper-parámetro y los coeficientes son los parámetros.

- Un algoritmo que no tiene hiper-parámetros es "libre de parámetros"

- Para encontrar los hiper-parámetros óptimos se usa una combinación de grid-search y cross-validation

Page 23: TestingAR Meetup VIII - Luis Argerich - Una Breve Introducción a Machine Learning

Grid Search & Cross Validation

- Dividir el set de datos en 3:

- Set de entrenamiento

- Set de validación

- Set de test

- Armar una lista de valores posibles para los hiper-parámetros

- Para cada valor posible:

- Entrenar el algoritmo con el set de entrenamiento.

- Validar con el set de validación

- Para los hiper parámetros óptimos:

- Evaluar el algoritmo con el se de test

Page 24: TestingAR Meetup VIII - Luis Argerich - Una Breve Introducción a Machine Learning

Grid Search vs Random Search

- Grid Search:

- Analizar cada valor posible para cada hiper-parámetro

- Random Search:

- Probar valores aleatorios para cada hiper-parámetro.

Page 25: TestingAR Meetup VIII - Luis Argerich - Una Breve Introducción a Machine Learning

Overfitting & Underfitting

Page 26: TestingAR Meetup VIII - Luis Argerich - Una Breve Introducción a Machine Learning

Sobre la "expresividad de los modelos"

- Diferentes modelos tienen diferentes capacidades de expresarse.

- La expresividad del modelo está directamente ligada a su complejidad.

- Un modelo es el adecuado si no es demasiado simple ni demasiado complejo para nuestro problema.

Page 27: TestingAR Meetup VIII - Luis Argerich - Una Breve Introducción a Machine Learning
Page 28: TestingAR Meetup VIII - Luis Argerich - Una Breve Introducción a Machine Learning
Page 29: TestingAR Meetup VIII - Luis Argerich - Una Breve Introducción a Machine Learning
Page 30: TestingAR Meetup VIII - Luis Argerich - Una Breve Introducción a Machine Learning

Underfitting

Page 31: TestingAR Meetup VIII - Luis Argerich - Una Breve Introducción a Machine Learning

Underfitting

- El underfitting se da cuando el modelo no tiene suficiente capacidad expresiva.

- Síntomas: Malos resultados para el set de entrenamiento mismo!

- Diagnóstico: "Visión borrosa": Nuestro algoritmo no ve bien

- Solución: Aumentar la complejidad del modelo o cambiar de algoritmo.

Page 32: TestingAR Meetup VIII - Luis Argerich - Una Breve Introducción a Machine Learning

Overfitting

Page 33: TestingAR Meetup VIII - Luis Argerich - Una Breve Introducción a Machine Learning

Overfitting

- El overfitting se da cuando el algoritmo no puede generalizar bien a datos nuevos.

- Síntomas: Buen resultado para el set de entrenamiento pero mal resultado para el set de test.

- Diagnóstico: Overfitting, nuestro algoritmo alucina!

- Solución:

- Conseguir más datos

- Regularización

Page 34: TestingAR Meetup VIII - Luis Argerich - Una Breve Introducción a Machine Learning

Overfitting

- Todos los algoritmos pueden caer en overfitting.

- Algunos tienen una mayor o menor tendencia a este problema.

Page 35: TestingAR Meetup VIII - Luis Argerich - Una Breve Introducción a Machine Learning
Page 36: TestingAR Meetup VIII - Luis Argerich - Una Breve Introducción a Machine Learning

Regularización

- En ML la regularización es una forma de controlar la complejidad del modelo.

- La idea es penalizar la complejidad del modelo pero sólo si es innecesaria.

- El costo de tener un modelo más complejo es un hiper-parámetro de nuestro algoritmo.

Page 37: TestingAR Meetup VIII - Luis Argerich - Una Breve Introducción a Machine Learning

Bias & Variance

Page 38: TestingAR Meetup VIII - Luis Argerich - Una Breve Introducción a Machine Learning

Big Data & ML

Page 39: TestingAR Meetup VIII - Luis Argerich - Una Breve Introducción a Machine Learning

Big Data & ML

- Tener más datos siempre es una buena idea.

- Para evitar overfitting, cuantos más datos tenemos más expresivo puede ser el modelo que usemos. Mayor expresividad = mayor inteligencia.

- Conseguir más datos es más importante que tener un buen algoritmo!

Page 40: TestingAR Meetup VIII - Luis Argerich - Una Breve Introducción a Machine Learning
Page 41: TestingAR Meetup VIII - Luis Argerich - Una Breve Introducción a Machine Learning
Page 42: TestingAR Meetup VIII - Luis Argerich - Una Breve Introducción a Machine Learning

Machine Learning:Las Tribus

Page 43: TestingAR Meetup VIII - Luis Argerich - Una Breve Introducción a Machine Learning

Los Simbolistas

Page 44: TestingAR Meetup VIII - Luis Argerich - Una Breve Introducción a Machine Learning

Simbolistas

- Principios: Lógica, Filosofía.

- Tipo de razonamiento: If, then, else.

- Algoritmo estrella: árboles de decisión, random forests

Page 45: TestingAR Meetup VIII - Luis Argerich - Una Breve Introducción a Machine Learning
Page 46: TestingAR Meetup VIII - Luis Argerich - Una Breve Introducción a Machine Learning

Los Conexionistas

Page 47: TestingAR Meetup VIII - Luis Argerich - Una Breve Introducción a Machine Learning

Los Conexionistas

- Principios: Sinapsis, paso de mensajes, ajuste continuo.

- Tipo de razonamiento: Aprender de los errores.

- Algoritmo estrella: Redes Neuronales, Backpropagation.

- Deep Learning

- CNNs

Page 48: TestingAR Meetup VIII - Luis Argerich - Una Breve Introducción a Machine Learning
Page 49: TestingAR Meetup VIII - Luis Argerich - Una Breve Introducción a Machine Learning

Evolucionistas

Page 50: TestingAR Meetup VIII - Luis Argerich - Una Breve Introducción a Machine Learning

Evolucionistas

- Principios: Evolución, selección natural.

- Tipo de razonamiento: Supervivencia del mejor, mutación.

- Algoritmo estrella: Algoritmos genéticos.

Page 51: TestingAR Meetup VIII - Luis Argerich - Una Breve Introducción a Machine Learning
Page 52: TestingAR Meetup VIII - Luis Argerich - Una Breve Introducción a Machine Learning

Bayesianos

Page 53: TestingAR Meetup VIII - Luis Argerich - Una Breve Introducción a Machine Learning

Bayesianos

- Principios: Probabilidades a-priori y ajuste en base a la evidencia.

- Tipo de razonamiento: Probabilístico, observación.

- Algoritmo estrella: Naive Bayes, Redes Bayesianas, MCMC.

Page 54: TestingAR Meetup VIII - Luis Argerich - Una Breve Introducción a Machine Learning
Page 55: TestingAR Meetup VIII - Luis Argerich - Una Breve Introducción a Machine Learning

Analogistas

Page 56: TestingAR Meetup VIII - Luis Argerich - Una Breve Introducción a Machine Learning

Analogistas

- Principios: Analogía

- Tipo de razonamiento: Si parece un pato es un pato

- Algoritmo estrella: KNN, SVM

Page 57: TestingAR Meetup VIII - Luis Argerich - Una Breve Introducción a Machine Learning
Page 58: TestingAR Meetup VIII - Luis Argerich - Una Breve Introducción a Machine Learning

The No Free Lunch Theorem

Page 59: TestingAR Meetup VIII - Luis Argerich - Una Breve Introducción a Machine Learning

NFL Theorem [Wolpert ‘97]

"Promediados sobre todos los problemas posibles dos algoritmos de optimización cualesquiera son equivalentes"

Page 60: TestingAR Meetup VIII - Luis Argerich - Una Breve Introducción a Machine Learning

Un set de datos(libro,azul) = 1(auto, azul) = 1(auto, verde) = 0(teclado, azul) = 1(guitarra, verde) = 0(lapicera, roja) = 0(guitarra, azul) = 1(lapiz, verde) = 0(libro, rojo) = 0(auto, rojo) = 0(zapato, azul) = 1(zapato, verde) = 1(lapicera, azul) = 1(cuaderno, azul) = 1(cuaderno, rojo) = 0(lapiz, azul) = 1

Page 61: TestingAR Meetup VIII - Luis Argerich - Una Breve Introducción a Machine Learning

Un set de datos(libro,azul) = 1(auto, azul) = 1(auto, verde) = 0(teclado, azul) = 1(guitarra, verde) = 0(lapicera, roja) = 0(guitarra, azul) = 1(lapiz, verde) = 0(libro, rojo) = 0(auto, rojo) = 0(zapato, azul) = 1(zapato, verde) = 1(lapicera, azul) = 1(cuaderno, azul) = 1(cuaderno, rojo) = 0(lapiz, azul) = 1

Page 62: TestingAR Meetup VIII - Luis Argerich - Una Breve Introducción a Machine Learning

Un set de datos(libro,azul) = 1(auto, azul) = 1(auto, verde) = 0(teclado, azul) = 1(guitarra, verde) = 0(lapicera, roja) = 0(guitarra, azul) = 1(lapiz, verde) = 0(libro, rojo) = 0(auto, rojo) = 0(zapato, azul) = 1(zapato, verde) = 1(lapicera, azul) = 1(cuaderno, azul) = 1(cuaderno, rojo) = 0(lapiz, azul) = 1

95%

Page 63: TestingAR Meetup VIII - Luis Argerich - Una Breve Introducción a Machine Learning

Un set de datos(libro,azul) = 1(auto, azul) = 1(auto, verde) = 0(teclado, azul) = 1(guitarra, verde) = 0(lapicera, roja) = 0(guitarra, azul) = 1(lapiz, verde) = 0(libro, rojo) = 0(auto, rojo) = 0(zapato, azul) = 1(zapato, verde) = 1(lapicera, azul) = 0(cuaderno, azul) = 0(cuaderno, rojo) = 1(lapiz, azul) = 0

Page 64: TestingAR Meetup VIII - Luis Argerich - Una Breve Introducción a Machine Learning

Un set de datos(libro,azul) = 1(auto, azul) = 1(auto, verde) = 0(teclado, azul) = 1(guitarra, verde) = 0(lapicera, roja) = 0(guitarra, azul) = 1(lapiz, verde) = 0(libro, rojo) = 0(auto, rojo) = 0(zapato, azul) = 1(zapato, verde) = 1(lapicera, azul) = 0(cuaderno, azul) = 0(cuaderno, rojo) = 1(lapiz, azul) = 0

5%

Page 65: TestingAR Meetup VIII - Luis Argerich - Una Breve Introducción a Machine Learning

NFL Theorem

- Corolario: Todo algoritmo funciona mal con algún set de datos.

- Corolario 2: Dado un set de datos cualquier algoritmo puede ser el mejor.

Page 66: TestingAR Meetup VIII - Luis Argerich - Una Breve Introducción a Machine Learning

NFL Theorem

- Corolario: Todo algoritmo funciona mal con algún set de datos.

- Corolario 2: Dado un set de datos cualquier algoritmo puede ser el mejor.

Esto solo es cierto si consideramos TODOS los problemas posibles.

La mayoría de los problemas de optimización no tiene sentido.

Solo nos interesan los problemas que pueden tener sentido.

Page 67: TestingAR Meetup VIII - Luis Argerich - Una Breve Introducción a Machine Learning

Feature Engineering

Page 68: TestingAR Meetup VIII - Luis Argerich - Una Breve Introducción a Machine Learning

Feature Engineering

- Es muy importante que los "features" de nuestros datos sean los adecuados para nuestro algoritmo.

- A veces nos hace falta agregar nuevos features.

- A veces nos hace falta quitar features.

- A veces nos hace falta transformar features.

Page 69: TestingAR Meetup VIII - Luis Argerich - Una Breve Introducción a Machine Learning

Agregando Features

- Agregar features permite modelos más complejos.

- Por ejemplo podemos agregar funciones no lineales de atributos que ya tenemos (sqrt, log, log log, etc)

- O podemos agregar features que muestren la interacción entre 2 features ya existentes

- (edad, localidad, género)

- (edad, localidad) (edad, género) (género,localidad) etc.

Page 70: TestingAR Meetup VIII - Luis Argerich - Una Breve Introducción a Machine Learning

Eliminando Features

- Algunos features pueden llevar al overfitting, ej: IDs, etc.

- Algunos features son ruidosos y no aportan nada.

- Ej: la altura del cliente si estamos estimando su riesgo financiero.

Page 71: TestingAR Meetup VIII - Luis Argerich - Una Breve Introducción a Machine Learning

Transformando Features

- El caso más típico es el de atributos categóricos.

- Ejemplo: Color (rojo, verde, azul)

- Técnicas de transformación:

- One hot encoding

- Binary encoding

- Feature Hashing

Page 72: TestingAR Meetup VIII - Luis Argerich - Una Breve Introducción a Machine Learning

Feature Hashing (The Hashing Trick)

- Usar una función de hashing para determinar la dimensión de un atributo.

- Ejemplo: Convertir un texto en un vector numérico.

Page 73: TestingAR Meetup VIII - Luis Argerich - Una Breve Introducción a Machine Learning
Page 74: TestingAR Meetup VIII - Luis Argerich - Una Breve Introducción a Machine Learning

Ensambles

Page 75: TestingAR Meetup VIII - Luis Argerich - Una Breve Introducción a Machine Learning

Ensambles

- La unión hace la fuerza.

- Invariablemente las mejores soluciones siempre surgen de una combinación de varios algoritmos.

Page 76: TestingAR Meetup VIII - Luis Argerich - Una Breve Introducción a Machine Learning

Ensambles: Bagging

- Generar un bootstrap a partir del set de entrenamiento (muestreo con reemplazo del mismo tamaño que el set de entrenamiento)

- Entrenar el algoritmo con este set

- Generar otro bootstrap

- Entrenar el algoritmo con este set

- Etc..

- Resultado final: Promedio o por votación.

- Ejemplo: Random Forest

Page 77: TestingAR Meetup VIII - Luis Argerich - Una Breve Introducción a Machine Learning

Ensambles: Boosting

- Entrenar un algoritmo.

- Entrenar otro algoritmo que aprenda a corregir los errores del anterior.

- Etc.

- Ejemplo: GBM, XGBoost

Page 78: TestingAR Meetup VIII - Luis Argerich - Una Breve Introducción a Machine Learning

Ensambles: Stacking

- Entrenar varios algoritmos diferentes.

- Entrenar un algoritmo que a partir de los algoritmos anteriores aprenda a generar las predicciones correctas.

Page 79: TestingAR Meetup VIII - Luis Argerich - Una Breve Introducción a Machine Learning

Tools

Page 80: TestingAR Meetup VIII - Luis Argerich - Una Breve Introducción a Machine Learning

Tools

Python : Pandas, scikit-learn, Jupyter, matplotlib, seaborn, XGboos, TensorFlow

R: X1071, Caret, Paqueres Varios, Ggplot, TensorFlow(?!)

Page 81: TestingAR Meetup VIII - Luis Argerich - Una Breve Introducción a Machine Learning

El Proceso (?)

Page 82: TestingAR Meetup VIII - Luis Argerich - Una Breve Introducción a Machine Learning

El Proceso

- Es una tarea 100% artesanal.

- Gran parte del tiempo se pierde en conseguir los datos, limpiarlos y darles el formato necesario (80%?)

- Probar modelos y tunearlos (cross validation) es una tarea de fuerza bruta.

- No hay absolutamente ningun standard de deployment

Page 83: TestingAR Meetup VIII - Luis Argerich - Una Breve Introducción a Machine Learning
Page 84: TestingAR Meetup VIII - Luis Argerich - Una Breve Introducción a Machine Learning

Caos, Caos...

- Datos originales (inmutables)

- Datos limpios

- Datos extendidos

- Feature Engineering

- Modelos

- Ensambles

Page 85: TestingAR Meetup VIII - Luis Argerich - Una Breve Introducción a Machine Learning

Unit Testing

Page 86: TestingAR Meetup VIII - Luis Argerich - Una Breve Introducción a Machine Learning

If we knew what it was we were doing it wouldn't be called research.Wouldn't it?

Page 87: TestingAR Meetup VIII - Luis Argerich - Una Breve Introducción a Machine Learning

- No hay resultados "correctos"

- La mejor forma de comparar versiones diferentes es mediante la inspección manual/visual por parte de un humano.

- Es sumamente importante poder revertir cambios que afectan la performance de los modelos.

- Una palabra clave: Reproducibilidad.

- Una herramienta importante: Notebooks.

Unit Testing & Machine Learning

Page 88: TestingAR Meetup VIII - Luis Argerich - Una Breve Introducción a Machine Learning

¿Preguntas?

Page 89: TestingAR Meetup VIII - Luis Argerich - Una Breve Introducción a Machine Learning

Muchas Gracias

[email protected]