Hoy durante la comida, ha surgido un tema de conversación interesante: qué fácil resulta añadir nuevos algoritmos de minería de datos a SQL Server 2005… pero, ¿para qué puede servir? Lo cierto del caso es que meditando sobre el tema, no se me ha ocurrido ninguna aplicación práctica que no esté debidamente cubierta con los algoritmos «de serie». Todavía no estoy muy puesto en este tema, pero voy a hacer un esfuerzo mental y vamos a ver qué algoritmos trae Analysis Services y para qué los podemos utilizar.
Algoritmo Naive Bayes
Empezamos por este porque es el algoritmo que primero se suele utilizar para explorar datos. Básicamente, este algoritmo busca correlaciones entre atributos. Cuando no tenemos muy claro qué atributo se puede predecir en función de otros, una técnica muy habitual es tratar de utilizar el algoritmo de Naive Bayes tratando de predecir el valor de todos los atributos en función de todos los atributos (un «todos contra todos»). El resultado de esta orgía de correlaciones suele ser un modelo en el que tenemos más o menos claro qué vamos a poder predecir en esos datos.
Otra ventaja de este algoritmo es que se entrena muy rápido… pero su desventaja es que no es muy preciso. Vamos, yo lo usaría para:
- Exploración inicial de los datos
- Tareas de clasificación, en las que el rendimiento sea crítico. Se me ocurre, por ejemplo, entornos en tiempo real en los que queramos detectar entradas anómalas, validaciones, clasificaciones y filtrados de mensajes… etc.
Decision Trees (Árboles de decisión)
Los árboles de decisión son clarísimamente una herramienta potentísima de clasificación… de hecho, son probablemente el mejor algoritmo que podemos utilizar para clasificar. Básicamente, construyen un arbol del que se pueden extraer reglas, del estilo «Si eres hombre, tienes unos ingresos superiores a ‘X’, y eres comprador de revistas de coches… la probabilidad de que tengas coche es del 90%».
Nos pueden servir para tareas como:
- Clasificación en general
- Validaciones. Podemos detectar elementos anómalos en función de si encajan o no con las reglas surgidas del árbol (por ejemplo, «si tienes coche, menos de 20 años y estas en paro… probablemente mientas»)
- Predecir el valor de un atributo con precisión
Clustering
Sirve sobre todo para buscar elementos afines dentro de un conjunto. Por ejemplo, podemos usarlo para saber que en una población hay hombres y mujeres jovenes solteros, hombres mayores solteros, hombres y mujeres mayores casados… pero no mujeres mayores solteras.
Nos puede servir para:
- Segmentar un mercado.
- Validaciones (las entradas que no pertenecen a un cluster, pueden ser «outliners» o elementos anómalos).
Time Series (Series temporales)
Este algorimo es específico para predecir el valor de una magnitud en función del tiempo.
Por ejemplo:
- Análisis bursátiles… ¿subirá o bajará el IBEX mañana?
- Predicción de una magnitud analógica, en general.
Sequence clustering
Tambien es bastante específico para detectar secuencias típicas dentro de un conjunto de eventos. Por ejemplo… saber en qué orden hace click la gente en las noticias de una web, puede ayudarnos a ordenar los titulares de arriba a abajo y de derecha a izquierda.
Usos típicos:
- Estudio de secuencias de eventos
- Detección de algunas anomalías de comportamiento (eventos que llegan fuera de secuencia)
Association rules (Reglas de asociación)
Este se suele usar casi exclusivamente para análisis de cesta de la compra. Detecta asociaciones comunes entre elementos (por ejemplo, quien compra cerveza suele comprar también palitos salados).
Usos típicos:
- Análisis de la cesta de la compra
- Ofrecer recomendaciones al comprador: ¿has comprado cerveza, seguro que no quieres palitos salados?
Neural Network (Redes neuronales)
Al igual que los árboles de decisión, este algoritmo también resuelve problemas de clasificación y regresión. Puede ser adecuado para detectar patrones no lineales, difícilemente descriptibles por medio de reglas. Se usa como alternativa al algoritmo de arboles de decisión: lo mejor es probar ambos sobre un mismo problema y utilizar el que mayor acierto nos de en sus predicciones.
Nos pueden servir para tareas como:
- Las mismas tareas que los árboles de decision, cuando los grupos en los que se divide la población no son lineales. Si no sabes a qué me refiero, imagina la tarea de clasificar puntos en un espacio… cuando no se pueden clasificar fácilmente trazando líneas, el problema no es lineal.
- Regresiones (es similar a la clasificación, pero cuando se trata de predecir una magnitud contínua).
Bueno, el caso es que la riqueza de los algoritmos que vienen incorporados con SQL Server es tal, que no se me ha ocurrido ni un sólo escenario en el que se pueda necesitar algo distinto… ¿eres capaz de comentar alguno? La verdad que esta versión del 2005 es impresionante, ¿verdad?
Gorka, efectivamente !!!
Ademas el gran golazo de estos últimos dias es que, si tenemos un motorcito de AS a mano, podemos dejar estas capacidades de minería de datos para cualquier usuario de Excel 2007 !!! Han pasado solo 3 días y no veas los resultados que analizan con el Sequence Clustering, para analizar los periodos donde mas información se reporta en un CAU (o algo asi).
Impresionante 😀
Saludos
Es cierto, tiene muy buena pinta el nuevo complemento de Excel, y lo que más me gusta es que ofrece una forma muy sencilla de analizar datos de una hoja excel (aunque con UDM también se podía hacer el análisis directamente desde el BI Dev Studio).
De todos modos pasa lo de siempre… al principio puede coartar un poco si uno no sabe por qué algoritmo empezar (al menos fue lo que a mi me pasó la primera vez).
¡Veo que te estás poniendo las pilas! Que envidia poder hincar el diente a datos reales. A ver si en mi empresa retomamos el proyecto de minería de datos operacional que teníamos… «¡estoy cansado de picar!» 🙂