Los algoritmos de machine learning logran entender problemas de cientos o a veces miles de dimensiones, logrando así ver cosas que el ojo humano no podría de otro modo ver, pero… ¿como se comparan estos métodos cuando el ojo humano si puede ver?
Por ello generamos una serie de experimentos en 2 dimensiones y les aplicamos varios distintos métodos de machine learning para comparar el dato real vs lo que vio el computador.
Básicamente el desafío consiste en tomar un patrón fácil para el ojo humano y generalizarlo de este modo:
Se le entrega un dataset siguiente modo: Y se espera que generalice de este modo:
Los algoritmos aplicados son:
- rpart: Arbol de Decisión usando rpart, parámetros por defecto.
- logit: Regresión Logistica usando glm.
- forest_h2o, Random Forest usando H2O, 5000 arboles.
- forest_ranger, Random Forest, 5000 arboles.
- knn50, KNN con 50 muestras.
- nnet50, usando H2O, Red neuronal de 1 capa con 50 nodos con kernel logit.
- deep10x5, Red Neuronal multicapa usando H2O, 5 capas de 10 neuronas cada una..
Luego se calcularán métricas como accuracy y AUC en ambos dataset.
Ahora esperando que ya hayan entendido el desafío, comencemos con los distintos experimentos:
Diagonal
Tablero de Ajedrez
Cruz
Tablero de Ajedrez 2
Harley Queen
Circulo
Circulos
Conclusiones
Creo que lo más interesante de haber hecho esto, es que un AUC de 0.7 es considerado bueno en un modelo de propensión, pero en la realidad no es un buen modelo, es cosa de comparar lo que vió la red neuronal en el caso «Harley Queen»:
Lo que me hace pensar que el Machine Learning tiene aun mucho que «aprender».
Por otro lado, las super queridas redes neuronales, no siempre fueron las mejores prediciendo.
Saludos.
Como siempre les dejo el código del ejercicio realizado: comparacion_ml