lunes, 27 de abril de 2009

¿Qué es Data Mining?

Creo que la trillada explicación “es la extracción de información previamente desconocida, de grandes volúmenes de datos” sólo tiene sentido para aquellos que ya saben qué es. Para quien no lo sabe, son palabras conocidas pero que juntas no le evocan ninguna imagen o experiencia que le sea familiar, es decir, no se entiende.

Así que estando en los comienzos de este blog, me parece oportuno lanzarme a la difícil tarea de definir su objeto principal, a mi propio y subjetivo modo, buscando ser abarcativo pero sencillo, y lo menos técnico posible. Aquí vamos:

¿Qué es Data Mining?
  • "Data Mining" (Minería de Datos) se refiere a un conjunto de técnicas de base estadística y algorítmica (algoritmo = procedimiento computarizable)
  • organizado con un método
  • que permite analizar montañas de datos
  • buscando relaciones sutiles (no evidentes) existentes en estos datos
  • En base a estas relaciones se construyen modelos
  • En base a los modelos se pueden tomar mejores decisiones
¿Qué es un modelo?
  • Un modelo es una representación simplificada de la realidad, que sin embargo mantiene lo que es “importante”
  • En base a cómo funciona el modelo, se pueden inferir aspectos del funcionamiento de la realidad, que siempre es mucho más compleja
¿Cuáles son los tipos de modelos más importantes en Data Mining?
  • Modelos Explicativos
  • --- Permiten encontrar qué factores influyen en un resultado
  • --- Permite agrupar resultados similares
  • Modelos Predictivos
  • --- En base a los patrones de comportamiento previo, permite identificar cuál es el comportamiento futuro más probable
  • --- En base a una clasificación realizada sobre un conjunto de casos conocidos, permite asignarle una clase a un caso nuevo
¿Qué aplicaciones concretas tiene Data Mining? Ejemplos:
  • Market basket analysis: ¿qué productos se venden juntos?
  • Modelo de fuga (churn o attrition): ¿qué clientes están por abandonar un servicio?
  • Segmentación: ¿cuáles son los clientes que se comportan de manera similar? ¿qué prospectos se asemejan a los que son más valiosos para el negocio?
  • ¿Cuáles son los factores que más influyen en un proceso? (de producción, logística, ventas, etc.)
  • Detección de fraudes
  • Personalización de publicidad en Internet
  • Predicción de fallas de maquinaria
  • Predicción de la demanda
  • Predicción del flujo de caja
  • Reconocimiento de imágenes
  • Evaluación de riesgos crediticios
  • Detección de spam
  • Estudios genéticos
  • Catalogación de cuerpos celestes en astronomía
  • Análisis de documentos no estructurados (text mining y web mining)
  • Etc., etc., etc…
Limitaciones
  • No pueden analizarse datos que no se tienen
  • --- Un posible resultado de un proyecto de DM es la determinación de los datos que deben empezar a recolectarse
  • Si los datos son erróneos, las predicciones también lo serán
  • --- Aunque las técnicas son bastante resistentes a una cierta cantidad de “ruido”
¿Qué NO es Data Mining?
  • Recolección de información personal
  • --- Muchas veces se le dice Data Mining a la actividad de los servicios de inteligencia (de gobiernos o empresas). Estas organizaciones probablemente usen Data Mining, pero la etapa recolección de información sin el consentimiento de sus dueños no involucra modelos ni técnicas estadísticas o algorítmicas, por lo que lo dejaría fuera de mi definición.
  • Recolección de mails de páginas web
  • --- En los sitios de ofertas de trabajo habitualmente surgen requerimientos de programas que recorran un sitio web extrayendo los mails (o los detalles de los productos de un catálogo, o cosa similar). Los llaman "trabajos de Data Mining", pero tampoco tiene nada que ver con lo que estamos tratando. (Tiene un nombre más preciso: web scraping)
¿Se entendió? :)  Ahora para satisfacer al lector más avanzado, dos apartaditos más técnicos:

¿Cuáles son las técnicas más importantes que se usan en Data Mining? Ordenadas por uso (de mayor a menor) según reporte de 2008 de Rexer Analytics:
¿Cuáles son los softwares más importantes que se usan en Data Mining? Ordenados por uso (de mayor a menor) según el mismo reporte:

lunes, 20 de abril de 2009

Amor por los árboles (de decisión)

zyxo en su interesante blog Mixotricha, escribió un muy buen artículo relativo a las ventajas de los árboles de decisión y el control del overfitting (sobreentrenamiento), del cual me tomé la libertad de traducir y parafrasear las partes que me parecieron más interesantes:

Desventajas de los árboles de decisión:
- Overfitting (¡pero se puede controlar y usar para mejorar la calidad del modelo!)

Ventajas:
- Legibilidad del resultado: Simples sentencias IF THEN
- Algoritmo simple
- Robustez: El preprocesamiento y la limpieza de datos son un trabajo engorroso, ¡¡pero los árboles funcionan bien sin ellos!!
- Flexibilidad: El manejo de los parámetros permite construir árboles desde muy pequeños a muy grandes
- Overfitting: Si se lo controla apropiadamente
- Parametrización sencilla y poderosa
- Posibilidad de modelos grandes que dan resultados muy "detallados"
- Aprendizaje débil (weak learner), por lo que pueden ganar mucho con técnicas de ensamble como bagging.

Luego el artículo de zyxo habla del bagging, lo que me gustaría dejar para otra oportunidad. Salto al manejo de parámetros para controlar el overfitting:

- Olvídese de la profundidad máxima, establézcala lo más alta posible. Nunca debe ser un criterio de parada si se busca calidad (no así si se busca un modelo más simple, pequeño y legible con propósitos de documentación).
- Use los tamaños mínimos de nodos terminales y de apertura (min child/parent node size en SPSS/Clementine). Estableciendo estos valores muy altos se obtienen árboles pequeños con poco overfitting pero baja calidad. Con valores demasiado pequeños se obtienen árboles enormes con muchísimo overfitting. Es necesario experimentar un poco y evaluar la calidad contra datos de prueba.

Para encontrar los parámetros óptimos el artículo habla de los resultados de la evaluación del bagging, pero en caso de tener un sólo árbol el criterio general sería bajar progresivamente los valores de los tamaños mínimos mientras la evaluación en los datos de prueba dé cada vez mejor, hasta que dé peor (o empiece a dar resultados erráticos), y en ese punto volver un paso atrás y quedarse con los parámetros de dicho paso.

Agrego algunas otras consideraciones:

- Para un árbol de decisión la variable objetivo ideal es binaria: POSITIVO / NEGATIVO. Si la variable es categórica convendría hacer tantos modelos como categorías, tomando como positiva una categoría a la vez, y las demás como negativas. Luego se deberían ensamblar los distintos modelos en uno solo (con otro árbol u otro tipo de modelo). No es la herramienta más adecuada para predecir variables numéricas.
- Tiene manejo de los valores nulos (o missing). Al dividir un nodo por una de las variables, simplemente asigna los casos en que el valor de esa variable es nulo a una de las ramas de la división. Pero atención, esto provoca que se consideren todos los nulos de igual forma (como si tuvieran el mismo valor), algo que en algunos casos no es satisfactorio y requiere una preparación previa más elaborada.
- Soporta una buena cantidad de desbalanceo en la variable objetivo.
- Clasifica (da algún resultado para) cualquier caso que se evalúe, aún si no se le proporcionó ninguno similar durante el entrenamiento.
- Cuidado con las interacciones entre variables. El algoritmo considera de a una variable por vez, y va cortando el espacio de soluciones en "rectángulos", por lo que cualquier interacción entre variables que defina una región importante con forma no rectangular será pobremente representada. Hay técnicas para detectar esto y generar variables adicionales que reflejen estas interacciones para que el árbol las aproveche.
- No existe un único árbol que sea la mejor solución. Pequeñas variaciones en el dataset (como un corte al azar diferente para definir entrenamiento y prueba) pueden dar árboles completamente diferentes. 
- Otro parámetro a tener en cuenta es la selección de la variable inicial, la que divide el nodo raíz. A veces cambiándola manualmente se pueden obtener mejores resultados (o más significativos en el dominio del problema) que dejando que la seleccione automáticamente el algoritmo.
- Acepta variables de entrada de tipo categórico y/o numérico.
- No es afectado por los outliers.

martes, 14 de abril de 2009

Punto de corte en modelo de fuga

Si tomamos el modelo de fuga (churn o attrition) como un problema de ordenamiento, es claro que la parte más difícil es establecer el orden de los clientes de acuerdo a su propensión estimada a cancelar sus productos o servicios. Esto puede hacerse con un score calculado a partir de un árbol de decisión, un generador de reglas de decisión, una red neuronal, etc.

Ahora, una vez ordenados los clientes, ¿sobre cuántos se debe efectuar la acción de retención? Una sencilla respuesta es definirlo por el presupuesto que tiene destinado el departamento de Marketing. Si cada acción cuesta $10, y el presupuesto es de $40.000, simplemente se toman los primeros 4.000 clientes de la lista ordenada y se realiza la acción sobre ellos.

El problema con este enfoque es que no toma en cuenta la ganancia esperada de cada cliente de la lista, y puede quedarse corto (no llegando a efectuar la acción sobre clientes que tienen ganancia esperada positiva), o peor aún, pasarse del punto de corte óptimo, efectuando la acción sobre clientes que tienen ganancia esperada negativa. Veámoslo con un ejemplo:

Costo de acción: $10
Ganancia por acierto de predicción: $500
Saldo por acierto: $490
Clientes: 100.000
Clientes que se fugarían: 1.000 (1% del total)

Supongamos que un árbol de decisión nos genera una lista de 5 nodos que clasifican los clientes, para los cuales se estima la siguiente distribución esperada:


ClientesFuga%
Nodo 12005025,00%
Nodo 21.00010010,00%
Nodo 32.5002008,00%
Nodo 480.0006000,75%
Nodo 516.300500,31%
Total100.0001.0001,00%

La ganancia esperada para cada nodo se puede calcular como la ganancia de los aciertos, menos el costo de realizar la acción sobre el total de clientes del nodo. Para el nodo 1 esto sería $500 * 50 - $10 * 200 = $38.000. Dividiendo esto por el total de clientes se obtiene una ganancia esperada por cada cliente del nodo: $38.000/200 = $190. Completando la tabla anterior:

ClientesFuga% Ganancia
esperada
G.E. por cliente
Nodo 12005025,00%$38.000$190
Nodo 21.00010010,00%$70.000$70
Nodo 32.5002008,00%$135.000$54
Nodo 480.0006000,75%-$320.000-$4
Nodo 516.300500,31%-$123.000-$8
Total100.0001.0001,00%

Entonces, si se toman sólo los nodos de ganancia esperada positiva, se efectuaría la acción sobre 3.700 clientes, obteniéndose una ganancia de $243.000 (sumas de los valores de los 3 primeros nodos). Si se continúa efectuando la acción sobre 300 clientes más (para llegar a 4.000), al pertenecer al siguiente nodo estos tienen una ganacia esperada de -$4, dando un total de -$1.200, disminuyendo la ganancia total a $241.800. Convendría ahorrar los $3.000 que se gastarían en estos 300 clientes y sumarlos a la ganancia de los nodos positivos, dando un total general del proyecto de +$246.000.

lunes, 13 de abril de 2009

SPSS renombra sus productos

En la nueva versión de sus productos prevista para 2010, SPSS cambia sus nombres unificándolos bajo el prefijo PASW (Predictive Analytics Software):

SPSS Statistic -> PASW Statistics 17
Clementine -> PASW Modeler 13
Dimensions mrStudio -> PASW Data Collection Base
SPSS Predictive Enterprise Services Base Services -> PASW Collaboration Services
etc...

Todo más claro, aunque "Clementine" es un nombre mucho más lindo...

KDD Cup 2009

¡Todavía estamos a tiempo de participar! Al menos en el desafío "lento", cuya fecha límite es el 11 de mayo (el "rápido" terminó el 10 de abril).

Se trata de desarrollar un modelo (o varios) para predecir fuga (churn o attrition), afinidad (appetency, compra de nuevos productos o servicios) y venta cruzada (up-selling, compra de productos adicionales) en una base de datos de clientes de una empresa francesa de telefonía.

Hay un desafío rápido y uno lento, y a la vez un dataset grande (15.000 variables) y uno pequeño (230 variables).

El desafío rápido busca evaluar la capacidad de obtener buenas predicciones sobre el dataset grande en un tiempo limitado (5 días). El desafío lento da más tiempo y se puede trabajar sobre la base grande o sobre la pequeña (pensada para aquellos que no cuentan con equipo tan poderosos).

Yo ya me bajé el dataset pequeño, espero tener tiempo para desarrollar los modelos y participar. :)

Presentación

Este blog tiene por objetivo presentar (e idealmente discutir) ideas, softwares y noticias relacionadas con Data Mining (o Minería de Datos), Aprendizaje Automático (Machine Learning) y temas afines, desde la perspectiva de un estudiante argentino del tema.

Está dirigido a aquellos que estén estudiando el tema (pienso en las alumnos de las maestrías que se dictan en la UBA, la Universidad Austral, y la Universidad de Bologna), trabajen en el área, o simplemente tengan un interés autodidacta. En algunos artículos se asume un conocimiento mínimo de los softwares más utilizados.

Cada artículo está escrito en forma independiente, es decir, no da por sentado que se leyeron los anteriores, y de ser necesario incluye links a las referencias pertinentes.

El sistema de comentarios permite escribir como usuario registrado o como anónimo, y desde ya se agradece cualquier tipo de feedback. De todas maneras me reservo el derecho de eliminar sin previo aviso todo aquello que no esté relacionado con el tópico en cuestión (especialmente el spam).

El Autor

Mi nombre es Andrés Parra, tengo formación en Ingeniería en Computación, vivo en Buenos Aires, y estoy cursando la maestría de la UBA. No estoy trabajando en el área, aunque espero hacerlo pronto. Estos temas me apasionan como a quien gusta de resolver crucigramas y acertijos. Espero poder transmitir parte de esa inquietud. :)

Mi correo es parra.andres arroba gmail.com, para lo que guste mandar.