Material de la charla "Olap aún más fácil"

Algún día tenía que ser, y este martes me toco a mi dar la charla mensual del grupo de usuarios de Euskadi, Artalde.NET. La charla fue una introducción muy básica a lo que es un sistema OLAP, y estuvo compuesta de:



  • Una pequeña charleta de 30 minutos, en la que vimos conceptos básicos.

  • Una demostración de hora y media, en la que hicimos una demo con un ETL y un cubo muy básicos… vamos, que nos marcamos un «OLAP Mundo» (por cierto… en la charla nadie se rio con ese chiste… ¿tan malo será?)

La verdad que tuvo bastante buena acogida, creo. Bueno, a lo mejor es que soy un optimista y no veía los bostezos de la gente… concentrado en ver cómo las transformaciones del dtsx cambiaban de color según pasaba el flujo de datos. Hubo algo menos de 40 personas, una de esas charlas en familia, en la que la gente que va de verdad está interesada en el tema. La gente se animó bastante a participar, y creo que el grupo de Artalde está cogiendo una «clientela fija» de fans incondicionales que son estupendos.


En fin, voy a dejar de enrollarme e iré al grano. Voy a dejar aquí el material de la charla, por si a alguien le interesa. Os dejo:



  • Las transparencias PowerPoint de la presentación.

  • La solución que contiene el ETL, y el cubo OLAP tal y como quedó al final.

  • Los datos de origen y el script de creación del Data Warehouse.

De los cubos no sacaréis mucha información, porque básicamente está construido a partir de datos aleatorios. Bueno… digamos que cogí la lista de clientes de AdventureWorks y la convertí en una lista de «nacimientos» (con el peso, talla y grupo sanguíneo del niño). Lugo le añadí datos sobre supuestos factores que determinaban el éxito social de esos retoños, y pretendía ser un «serio» estudio sobre la influencia que pueden tener factores como el signo del zodíaco en parámetros como el salario medio anual. Vamos… ¡verdadero papel mojado! Fue divertido… 🙂

Aplicaciones prácticas de los algoritmos de minería de datos

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?