La intro…
Las lecciones a tratar en este tema son:
- Regresión y clasificación
- Modelos lineales y probabilísticos
- Modelos no lineales
- Evaluación, optimización y ensamblados
- Redes neuronales artificiales
Según Javier Bravo lo natural aquí es empezar contando kNN (lo más fácil), explicando los distintos tipos de distancias que existen (euclídea, Manhattan y Minkowski, que combina ambas y es la opción por defecto en scikit-learn). Luego se cuenta regresión, primero lineal (con 1 variable y luego multivariable, hablando de regularización) y después logística (con 1 variable y luego multivariable, hablando de regularización). Se cuenta regresión por solución analítica (ecuación nominal / mínimos cuadrados) y luego por el método del descenso del gradiente.
Antes de continuar es posible contar algo sobre análisis de datos (transformaciones, estrategias como cross-validation, si no las conocen… en nuestro caso ya habrán visto en Minería de Datos), y el tema de métricas para evaluación de modelos (precisión, F1…) ya que a partir de ahora sí van a ser útiles.
Según Javier Bravo se sigue con árboles de decisión. Se puede hablar de los algoritmos que funcionan eligiendo el atributo con mayor ganancia de información (information gain), empezando por ID3, siguiendo por C4.5 que lo mejora (estos dos usan entropía) y siguiendo por CART (que usa impureza Gini o MSE). Luego también se habla de los trees ensembles, como Random Forest y XGBoost (que es bastante moderno y cuenta con su propia librería, ya que no está en scikit-learn).
Después vendría hablar sobre redes neuronales artificiales. MLP, contando primero la forward propagation y luego la back propagation. Finalmente se termina con los SVM (Support Vector Machines), que hay de dos tipos: SVC y SVG, teniendo que contar también sobre Kernels (que sirven para transformar los datos cuando no hay linearidad).
Ismael contaba regresión lineal, multivariable y logística: las bases del descenso de gradiente y los modelos baseline de regresión y clasificación. Aquí ya estamos hablando de diseñar sistemas de aprendizaje automático, por lo que hay que contar cómo aplica aquí la Ingeniería del Software, y cuál es la metodología para plantear un experimento, cómo se dividen los datos y cuáles son las métricas necesarias para saber si los modelos son buenos o no (las típicas de accuracy, precision, recall, F1…). Hay muchas técnicas de aprendizaje supervisado: KNN, SVM, Decission Tree, Random Forest, XGBoost, Naive Bayes… A la hora de hablar de redes neuronales artificiales se cuenta principalmente el perceptrón multicapa.
Ejercicios
Para practicar lo aprendido pueden hacerse algunos ejercicios.
Prácticas
Para aplicar los conocimientos y las técnicas de este tema pueden realizarse prácticas como estas:
- Programarse en python una regresión lineal con descenso de gradiente, e ir ampliando hasta llegar a la regresión logística de múltiples variables.
- Predecir el famoso churn donde la variables objetivo ya está etiquetada (si el jugador abandona o no). Para este problema tan clásico se usarían modelos de clasificación… como regresión logística, árboles de decisión, bosque aleatorio, XGBoost (incluso LightGBM y CatBoost si se cuentan)… y así se practica cómo entrenar modelos para predicción, dividirlos en tres grupos: entrenamiento, validación y prueba… e incluso evaluar accuracy, precisión, recall, F1 y ROC-AUC… e interpretar la importancia de las variables.
- Se podría hacer esto con una pequeña red neuronal. Se podría pedir que implementen un perceptrón multicapa en Python (desde cero, bueno con NumPy) usando descenso de gradiente y backpropagation. Los alumnos aprenden conceptos de forward pass, funciones de activación (sigmoide, ReLU…), backpropagation, optimización (SGD, Adam), pérdida (loss function)…
- Para probar distintos modelos en la práctica, se puede usar scikit-learn. Y así ven cómo se maneja una red neuronal en abstracto: definiendo la arquitectura de capas ocultas, entrenando con una simple llamada a .fit() y prediciendo con .predict().
Referencias
Para complementar este tema es recomendable consultar otros documentos: