Como comentamos en la anterior sección vamos a dedicar una serie de entradas a explicar los conceptos básicos necesarios para abordar el problema real a modelar.
Esta entrada la dedicaremos a los Algoritmos de Machine Learning de Clasificación.
Estos algoritmos, aplicables al tanto al análisis de datos de negocio tradicional (DataMining) como a grandes volúmenes de datos (Big Data), nos permitirán predecir la clase o categoría a la que pertenece una instancia del dominio. Sin embargo predecir o "adivinar" implica "incertidumbre" por lo que es necesario conocer no solamente las técnicas básicas sino, también, saber evaluar el grado de certidumbre que dicho modelo nos arroja.
Tipos de algoritmos
- Árboles de decisión (Decision trees)
Es un tipo de modelo de los denominados jerárquicos ya que va dividiendo el dominio en distintos subdominios o regiones (nodos) hasta llegar a una condición de parada (hojas).
En el proceso de generalización, esto es "predicción", se irá evaluando cada instancia a través de las distintas condiciones del árbol hasta llegar a un nodo hoja que determinará su clase.
El proceso asociado a hacer crecer el árbol desde su raíz (root) hasta sus hojas (leaves) se le denomina "growing" y a la optimización para simplificarlo se le denomina "pruning" (poda).
Es muy importante controlar tanto el crecimiento como la forma de dividir el árbol, por ello hay que tener en cuenta un criterio de parada (que controle cuánto va crecer como máximo nuestro árbol) y cual va a ser nuestra estrategia de división de nodos (univariable, multivariable, basada en distribuciones probabilísticas balanceadas, ..)
Estos modelos son muy fáciles de leer y comprender por lo que se ha extendido su uso en los últimos 30 años.
- Naïve Bayes
- Clasificadores Lineales
- Instance Based Learning o K-neighbours
Es la técnica más parecida a nuestra forma habitual de resolver problemas computacionales. Utilizamos los datos históricos almacenados en, normalmente, nuestras bases de datos para, en base a un valor definido como K, realizar la comprobación del valor que le corresponde al suceso que queremos clasificar mediante una función de distancia y una función de agregación. A modo de ejemplo si tenemos una clasificación de un valor de mercado de una vivienda (Alto, medio o bajo) con un algoritmo de k-neighbours con k= 5 buscaremos los datos almacenados de las 5 viviendas más cercanas a la propiedad que queremos valorar (función de distancia) y obtendremos la moda de sus valores de clasificación (función de agregación) para obtener así la clasificación estimada de la nueva propiedad.
- SVM o Support Vector Machines
El concepto es tan sencillo como compleja su formulación matemática. Se basa en separar dos conjuntos de datos por una linea o plano que maximice las distancia entre los conjuntos de datos. El problema viene asociado a que normalmente los conjuntos de datos no son linealmente separables, pero aquí, la complejidad matemática nos aporta la solución. Dentro de esta formulación compleja hay una parte concreta que determina la similaridad de los sucesos y, modificando esta, se puede conseguir separaciones complejas de datos tales y aplicarla a temas tan complejos como la diferenciación de imagenes o la similaridad de cadenas de texto. A estas modificaciones las denominaremos Kernels o K(x).
- Ensamblaje o Boosting
Ya lo dijeron en su momento. Divide y vencerás y la solución más sencilla suele ser la mejor (Principio de la navaja de Occam) . La técnica de Boosting no es más que un método matemático para unir modelos simples con un rendimiento "débil" para, trabajando juntos, obtener un rendimiento superior al de un modelo más complejo. ¿Ventajas? Dos principalmente. Al trabajar con modelos simples la necesidad de recursos suele ser menor y es mucho menos sensible al overfitting que otros algoritmos. Como desventaja ... hay que tener cuidado con el llamado "ruido rosa (Pink noise)", esto es, el ruido o errores en los datos que se distribuye de forma uniforme.
Conceptos importantes
Misclassification Cost: es el coste de un error de clasificación.
Pensemos en el mundo real, ¿Cuestan lo mismo y tienen el mismo impacto todos los errores?. Claramente no, por tanto, para que el modelo generado pueda predecir clasificaciones de la forma más adecuada tiene que tener en cuenta estos aspectos e incorporarlos a su modelo de decisiones minimizando así el error en aquellas con un a mayor coste, esto es, obteniendo el óptimo global.
Modelo de evaluación: es la forma en la que se va a garantizar que un modelo de clasificación, realmente, va a funcionar dentro de unos parámetros definidos más allá de las instancias del conjunto de datos de aprendizaje.
- Matriz de confusión: asociado al modelo de evaluación nos indica el número de aciertos y falsos positivos (aka type I) o negativos (aka type II) generados por el modelo.
- Análisis ROC: basado en el análisis gráfico de los resultados porcentuales de falsos positivos (eje x) frente a verdaderos positivos (eje y) nos permite ver el rendimiento del modelo y su evolución.
Casos de Uso
Pero vamos al meollo de la cuestión ¿Para que me pueden servir a mi estas técnicas?.
La mayoría de los algoritmos de clasificación que se usan en la actualidad son binarios, esto es, 0/1, True/False. Parece tan simple como inútil en un mundo tan complejo como en el que nos encontramos actualmente .... ¿Seguro?.
Reformulemos la cuestión.
"La mayoría de los algoritmos de clasificación que se usan en la actualidad son binarios, esto es .."
- Decisiones Go/No Go.
- Decisiones asociadas a Riesgo asumible/ Riesgo no asumible.
- Decisiones asociadas a comportamiento normal / detección de comportamiento anómalo.
- Alarmas asociadas a riesgo de fallo / no riesgo de fallo.
- Predicciones asociadas a ruptura de stock / No ruptura de stock.
- Predicciones asociadas a ruptura de planificación / No ruptura de planificación.
Parece que el asunto cambia y podríamos poner muchos más ejemplos.
En nuestro día a día tomamos cientos de decisiones de naturaleza binaria debido a que es nuestra forma natural de decisión (Si/No). La aplicación de estas técnicas es una extensión natural de nuestro comportamiento pero permitiendo, a través de los algoritmos y las capacidades de computación, tomar estas decisiones de forma mucho más rápida (en la mayoría de los casos es imposible para el cerebro humano, incluso con la ayuda de las herramientas actuales, manejar la complejidad real de todas las variables y relaciones implicadas en la decisión) y con tiempo suficiente para planificar una estrategia de mitigación o contingencia.
"El tiempo es oro" y estas técnicas son oro para los negocios en forma de ventaja competitiva e incluso supervivencia.
A partir de aquí, es cada uno desde su negocio y su problemática concreta el que debe evaluar donde y para qué puede utilizar estas técnicas para hacer sus negocios más competitivos y adecuados al contexto actual.