En este blog se exploran las posibilidades de analizar datos y crear modelos basados en la Teoría de la Información usando Powerhouse

sábado, 11 de febrero de 2012

Un Modelo para separar la Señal del Ruido

Qué bueno sería que los datos contuvieran toda la información necesaria para realizar predicciones, pero lamentablemente no es así. No solamente no contamos con toda la información, además esta información está mezclada con ruido.
La tarea de un modelo predictivo es separar la información útil o señal, del ruido. Veamos un ejemplo paso a paso.
Utilizaré 2 casos similares a fin de comparar sus resultados. Ambos pertenecen a campañas de marketing. El primero proviene de una competencia de Data Mining que organizó la Universidad de Chile en 2005 y que a juzgar por los resultados, no incluía datos reales. El segundo es un ejemplo real de una campaña ofreciendo una nueva tarjeta de crédito a clientes existentes de un banco.

Paso 1: análisis de la información

Una vez que los datos son preparados y las variables son seleccionadas, es posible realizar un análisis infométrico (para conocer más detalles de este tipo de análisis se pueden consultar otros artículos en este mismo blog)
El caso de la Universidad de Chile  muestra que los datos están bastante limpios y es probable que se pueda desarrollar un buen modelo

La información que se necesita para que el modelo sea perfecto es 0.15 bits (este bajo valor indica que existe un desbalance importante, lo cual es cierto ya que sólo aceptan la oferta alrededor de un 2%). Las variables seleccionadas aportan un total de 7.74 bits, pero gran parte de esta información es equívoca, lo que desde el punto de vista de la Teoría de la Información significa que existen muchas maneras de decir lo mismo. Al canal de información ingresan 0.11 bits de la entrada (7.74-7.63) más 0.04 bits de ruido.
La tarea del modelo es separar el 75% de la señal del 25% del ruido.
El caso real es un poco más complejo de modelar
La variable a predecir necesita 0.11 bits de información, indicando como en el caso anterior, que existe un desbalance muy pronunciado (en este caso, sólo el 1.4% de los clientes aceptan la nueva tarjeta). El ruido (54%) supera la señal (46%). Esto implica que es probable que el modelo que utilice estos datos no sea tan bueno como el anterior, ya que por más que haga un buen trabajo separando la señal del ruido, sólo existe un 46% de información.

Paso 2: Evaluación del modelo

Veamos ahora si el análisis infométrico anterior se condice con los resultados de los modelos. Existen varias métricas que pueden utilizarse para evaluar un modelo. En este caso, en donde la variable a predecir contiene 2 estados (Compra/No compra) lo más adecuado puede ser el estadístico KS, o las curvas Lift y ROC.
La siguiente tabla compara los modelos
El rendimiento de los modelos está de acuerdo al análisis llevado a cabo en el paso anterior. Es más, desde mi experiencia jamás tuve la suerte de trabajar con datos tan limpios como los de la Universidad de Chile, por lo que supongo que son datos creados artificialmente para la competencia.
Antes de continuar haré un breve repaso sobre la curva ROC. Quienes deseen más información al respecto pueden consultar excelentes artículos que existen en Internet.
Curva ROC
En medio de la segunda guerra mundial se necesitaba mucha práctica para que los operadores de Radar pudieran distinguir un objeto sólido en una maza de puntos verdes que aparecía en una pequeña pantalla de 7.5 cm de diámetro. A fin de medir el rendimiento de los operadores de Radar, los Británicos inventaron las curvas ROC, que viene del acrónimo Receiver Operator Characteristics (a veces es llamada, erróneamente, Receiver Operating Characteristic curve).
La curva ROC del modelo con datos real luce como sigue:
Si se trata de distinguir un avión, o se trata de distinguir si un cliente comprará o no el producto habrá 4 posibilidades:
Si se predice Positivo y en realidad es Positivo, tenemos un Verdadero Positivo (VP), si se predice Negativo y en realidad es Negativo, tenemos un Verdadero Negativo (VN). Caso contrario tenemos los Falsos Positivos (FP) y los Falsos Negativos (FN).
La curva ROC se concentra en la predicción de los Positivos (por ejemplo, en aquellos clientes que compran) y en cómo el modelo acierta o no. Cuanto mayor sea la diferencia entre los VP  y los FP, mayor será el poder de discriminación que tendrá el operador o el modelo.
El área comprendida entre la parte superior de la diagonal y la curva representa el rendimiento de operador o del modelo, ya que la separación de la curva de la diagonal indica la separación entre los VP y los FP.  A mayor área, mayor rendimiento. Un modelo perfecto tendrá un área del 100%, mientras que el área de un modelo inservible será del 0%.
Señal y Ruido
Ahora viene la parte interesante. Los datos representan algún proceso o sistema que genera una señal mezclada con ruido. Lo que deseamos es separar esta señal del ruido. Resulta que la Teoría de Detección de Señales (Signal Detection Theory) nos permite obtener la distribución de la señal y del ruido a través de la Curva ROC.
Los cálculos necesarios para dibujar estas distribuciones son demasiado complejos para describir en este artículo y tampoco vienen al caso. Lo importante que quiero recalcar es que es posible obtener  una gráfica que  muestra claramente la señal y el ruido además del trabajo del modelo para separarlos.
Señal/Ruido en datos de la Universidad de Chile
El modelo de los datos artificiales muestra una separación bastante buena. La curva roja representa el ruido y la azul la señal, que se crea en relación a la primera. En estos datos el ruido parece estar bastante acotado como lo muestra su baja dispersión. En cambio la señal, está un poco más dispersa. Las medias de la señal y el ruido están bastante alejadas, permitiendo que el modelo realice una buena separación.

Señal/Ruido en datos de tarjeta de crédito

Este caso tiene dos diferencias con respecto al anterior. Por un lado, ambas dispersiones son similares, pero lo más llamativo es que ambas distribuciones tienen sus medias muy cercanas, haciendo demasiado dificultoso la separación de la señal de ruido. Esto explica por qué el modelo sobre los datos de tarjeta de crédito tiene un rendimiento muy inferior al anterior.

Conclusión

Muchas veces nos encontramos con casos en que es muy difícil desarrollar un modelo predictivo que sea útil para el negocio y nos preguntamos si existirá algún algoritmo que sea capaz de lidiar con los datos.
Un análisis de la información, al que Dorian Pyle llama Data Survey(*), es inmensamente útil en estos casos, porque es capaz de mostrar si los datos realmente contienen información. Si no es el caso, entonces ningún algoritmo podrá ser útil para crear un modelo. Las medidas de información establecen límites teóricos que sirven para evaluar el rendimiento de los modelos.
Cuando intentamos modelar datos que no conocemos, el Data Survey construye un mapa que nos guiará por el buen camino.
Una vez construido el modelo, a partir de la Teoría de Detección de Señales y con algunas presunciones (por ejemplo que el ruido y la señal están distribuidas normalmente), es posible visualizar la forma de ambos, la señal y el ruido. Estos gráficos pasan a ser otras herramientas útiles para explicar el rendimiento de un modelo.
Tanto la señal como el ruido están presentes en las variables de entrada, llamadas también variables independientes. La tarea principal del modelo es descubrir la señal aún en presencia del ruido.
(*) Aquellos que deseen una explicación detallada del Data Survey pueden referirse al excelente tratamiento que hace Dorian Pyle en el capítulo 11 de su libro DataPreparation for Data Mining

martes, 17 de enero de 2012

¿Por qué segmentar en forma automática si puedo hacerlo manualmente?

Es una práctica bastante común segmentar una cartera de clientes utilizando métodos manuales. Pero una segmentación automática tiene varias ventajas y en este artículo trataré de comparar ambos métodos utilizando un ejemplo con datos reales.

El objetivo de una segmentación es encontrar grupos de clientes que se parezcan entre sí y que como grupo se distingan de otros segmentos.  La comparación entre clientes se realiza en base a las variables elegidas para identificarlos. Por ejemplo, una empresa que vende electrodomésticos procesó las ventas de 5 años de una muestra de 10.000 clientes y eligió las siguientes variables para crear los segmentos:

  1. Visitas anuales
  2. Productos comprados anualmente
  3. Venta anual
  4. Margen porcentual anual

Antes de realizar la segmentación se calcularon los promedios de cada variable en el total de la muestra
El primer intento de segmentación lo realizó utilizando el Margen, ya que uno de los objetivos del proyecto fue encontrar segmentos con distintos márgenes. Se utilizó el siguiente criterio (arbitrario):
Si el margen <= 5%, segmento 1.
Si es >5% y <= 15%, segmento 2,
Si es >15%, segmento 3
La siguiente tabla muestra los promedios de cada variable en su segmento
Los segmentos discriminan muy bien el margen, lo cual es lógico debido al método utilizado para agrupar los clientes. Pero el resto de las variables no muestra demasiadas diferencias. Esto es razonable. De hecho, dos segmentos distintos podrían tener algunas de sus variables con promedios similares. El problema de esta segmentación es que la única variable que distingue los segmentos es el margen, por lo que la utilidad de los mismos es casi nula.
El segundo intento se realizó utilizando las visitas y los productos comprados.
Combinando 3 intervalos de visitas y 2 intervalos de productos comprados, se obtuvieron 4 segmentos (combinando 3 intervalos con otros 2, deberíamos obtener 6 pares, pero como existe una correlación muy alta entre la cantidad de visitas y los productos comprados, se obtienen solamente 3 pares). La siguiente tabla muestra los promedios

Las visitas y los productos ahora están bien discriminados entre los segmentos. La venta, debido a que es función de las visitas y productos comprados, también está discriminada. Pero el margen es casi el mismo en todos los segmentos!

Una tercera alternativa sería incluir el margen en los criterios de separación, pero en este método manual existen varios criterios arbitrarios:
  1. Las variables elegidas para discriminar los segmentos
  2. Los intervalos de las variables
  3. La cantidad de segmentos a crear

¿Quién nos asegura que los criterios de separación coinciden con una segmentación natural? O sea, cómo sabemos por ejemplo, que un grupo de clientes similares visitan 5 y no 8 veces al año el local. En una segmentación manual, este valor (5, 8 o cualquier otro valor) es uno de los criterios de separación que debe elegirse.
¿Cómo sabemos que una variable, por ejemplo la edad, realmente discrimina el comportamiento de los clientes?

Una segmentación realizada con un algoritmo que sea capaz de resolver estas cuestiones utilizando todas las variables a la vez, podrá encontrar los segmentos naturales que muy probablemente resuelvan el problema de negocio original.

La siguiente tabla de promedios muestra los segmentos encontrados por Powerhouse



El segmento 4 tiene el mayor margen, pero como la venta es casi la cuarta parte de la venta del segmento 3, quizás este último sea el segmento más interesante.
El segmento 1 merece un análisis más profundo para averiguar las razones de por qué, siendo muy similar al 2, el margen es negativo.

En este ejemplo utilicé un modelo con pocas variables para mostrar las ventajas de utilizar métodos automáticos de segmentación. Si la cantidad de variables es mayor, el método manual es más complicado y con más razón se justifica utilizar métodos automáticos de búsqueda de segmentos naturales.

domingo, 2 de octubre de 2011

La información vs. el número de bins

La semana pasada, un alumno de la maestría de Data Mining de la Universidad de Buenos Aires, me preguntó qué tan estable eran las mediciones de información con respecto al número de bins elegidos. Esta es una respuesta detallada y con un ejemplo realizado en Powerhouse.

La cantidad de información absoluta, medida por su entropía en bits, depende del número de bins (o de la cantidad de categorías en variables categóricas). Por lo tanto este análisis utiliza las medidas de información expresadas en forma relativa.
Tanto el ruido como la información transmitida se calculan como un porcentaje de la información necesaria para reducir completamente la incertidumbre de la variable a predecir. Por lo tanto el ruido y la información transmitida vienen dadas por:

Ruido% = H(Y|X) / H(Y)
 Información transmitida% = T(X:Y)/H(Y)

La variable a predecir Y tiene una entropía dada por su distribución y representa su incertidumbre. Cuando un modelo codifica la información proveniente de un conjunto de variables X y la transmite, la incertidumbre de Y se reduce. Cuanto mayor sea esta reducción, más preciso será el modelo.
Lo que resta de incertidumbre luego de utilizar la información transmitida por el modelo, lleva el nombre de ruido.

La siguiente tabla muestra diferentes medidas de información sobre una misma tabla de datos y utilizando las mismas variables predictoras. Lo que cambia es el número de bins de X y de Y, que varía entre 5 y 200.


Se puede notar que la información transmitida relativa (dada por Tx%) es muy estable en todo el rango de bins. Lo mismo sucede con el Ruido, lo que no debería sorprender ya que es función de la transmisión (H(Y)-T(X:Y)=Ruido).
Otro punto interesante es el R2 del modelo, ya que se mantiene muy estable en todos los rangos, tanto sobre la muestra de desarrollo (TR) como la de prueba (TS)

Los datos usados en este ejemplo fueron obtenidos de
 http://astrostatistics.psu.edu/datasets/SDSS_quasar.html

Se utilizó el 70% de los datos para la muestra de desarrollo y el 30% restante para la de pruebas. La variable z (redshift) fue elegida para predecir. El método de binning fue el de Menor Pérdida de Información (LIL).
Las variables seleccionadas para realizar el modelo fueron r_mag, z_mag y M_i.

miércoles, 21 de septiembre de 2011

La información como marco de referencia (Parte IV)

En el artículo anterior analizamos un modelo de scoring desde una perspectiva infométrica. El modelo canaliza y codifica la información de entrada en una forma que define los mensajes o estados de la salida. Parte de la información de entrada se pierde por equivocación y parte se transmite como ruido. Pero ¿cómo seleccionamos las variables que transmitan la mayor información con el menor ruido posible?

Esta es otra de las ventajas que nos ofrece la capacidad de medir información. Antes de analizar un algoritmo para seleccionar variables me gustaría hacer un comentario respecto de la información. Cuando decimos que una variable transmite información acerca de otra variable, haciendo que se reduzca su incertidumbre, estamos asumiendo implícitamente que existe una relación entre ambas variables. Lo que no estamos asumiendo, y esto es muy importante, es el tipo de relación.

Dicho de otro modo, la relación entre variables puede ser lineal o no. La información mutua entre variables no asume un tipo particular de relación, por lo tanto puede aplicarse a datos cuyas variables se relacionen en forma no lineal. Para más detalles sobre este tema se puede consultar el siguiente artículo: http://powerhousedm.blogspot.com/2008/10/correlacin-e-informacin-mutua.html

Ahora estamos en condiciones de describir el algoritmo de selección de variables. Supongamos que contamos con unas 100 variables que podrían servir para predecir otra variable:

Paso 1: recorremos las 100 variables en busca de aquella que transmita la mayor información posible acerca de la variable a predecir. Esta será la primera variable seleccionada.

Paso 2: recorremos las variables restantes y calculamos la información transmitida por las variables seleccionadas anteriormente más la que estamos evaluando.  El grupo de variables con mayor cantidad de información define la variable a seleccionar.

Paso 3: continuamos con el paso 2 hasta que la información ganada por la nueva variable seleccionada no justifique la pérdida de representatividad.

Este último paso merece una mayor explicación. A medida que se agregan variables, la  información transmitida aumenta pero se necesita una mayor cantidad de casos para cubrir todas las posibilidades. Cuando la cantidad de casos es fija, agregar variables simplemente reduce las posibilidades de que los datos representen la población. Es esta la razón por la cual los modelos que resultan confiables, suelen estar basados en unas pocas variables. Para más detalles se puede consultar el artículo http://powerhousedm.blogspot.com/2007/11/cuntos-datos-necesito-para-obtener-un.html

El algoritmo descripto aquí trabaja muy bien en la práctica ya que tiene las siguientes características:

1.        Aumenta las probabilidades de seleccionar una variable que interactúe con una o más variables seleccionadas previamente. Esto se debe a que dos o más variables que interactúan  agregan más información que tomadas por separado.

2.       Minimiza la posibilidad de seleccionar variables colineales. Esto se debe a que si dos variables están fuertemente relacionadas, una vez que se seleccionó una de ellas, la otra aportará muy poca información nueva.

3.       La cantidad de variables seleccionadas depende exclusivamente de los datos (cantidad y calidad) y se calcula automáticamente en cada ciclo.

Aquellos que deseen probar el algoritmo pueden descargar Powerhouse y seguir paso a paso los tutoriales: http://www.dataxplore.com.ar/descargas.php


viernes, 16 de septiembre de 2011

La información como marco de referencia (Parte III)

Las variables independientes contienen información. En el ejemplo que estamos analizando llevan en conjunto, 12.16 bits de información (no es necesario conocer cómo calcular este valor pero para aquellos que les interese pueden consultar http://powerhousedm.blogspot.com/2011/09/la-informacion-como-marco-de-referencia.html)
Pero no toda esta información es útil para predecir la variable deseada. De hecho vimos en el artículo anterior que la información útil, la que se transmite, es 0.24 bits.  Entonces, ¿qué sucede con los 11.92 bits restantes? (12.16-0.24=11.92) ¿Dónde fue a parar esta información?
La respuesta tiene que ver con los diferentes patrones de comportamiento que se asocian a un mismo estado o mensaje de salida. Dicho de otro modo, hay varias maneras de decir lo mismo. Esto se denomina técnicamente Equivocación.
Un esquema general de lo visto hasta el momento aclarará este tema
El modelo recibe a través de las variables independientes,  12.16 bits de información.  Parte de esta información se considera Equivocación y parte se Transmite. Ya que se transmiten 0.24 bits, el resto 11.92 bits  se considera Equivocación y nos indica que existen muchos patrones distintos que se asocian con un mismo mensaje de salida.
Siempre se cumple la siguiente ecuación:

Información de Entrada = Información Transmitida + Equivocación

En el ejemplo

12.16 bits = 0.24 bits + 11.92 bits

La información que se necesitaría para predecir sin errores si un cliente se fugará o no, es de 0.39 bits (en los ejemplos anteriores tomamos 0.40). Al canal de transmisión ingresan 0.24 bits provenientes de la entrada más 0.15 bits de Ruido. 

Siempre se cumple la siguiente ecuación:
Información Requerida = Información Transmitida + Ruido
En el ejemplo

0.39 bits = 0.24 bits + 0.15 bits

Para lograr un buen modelo es necesario que las variables seleccionadas contengan la mayor información útil y el menor ruido posible. En el ejemplo, las variables independientes, también llamadas variables de entrada, transmiten 0.24 bits o 61% de la información necesaria para predecir la variable de salida (¿se fuga o no?).  La incertidumbre restante, 0.15 bits o 39% es lo que denominamos Ruido.

En el siguiente artículo veremos que este nuevo enfoque nos permite diseñar un método para seleccionar las variables con mayor información y menor ruido posible.

jueves, 15 de septiembre de 2011

La información como marco de referencia (Parte II)

En el artículo anterior (http://powerhousedm.blogspot.com/2011/09/la-informacion-como-marco-de-referencia.html) vimos que las variables independientes de un modelo transmiten información que ayuda a reducir la incertidumbre de la variable a predecir.

En el ejemplo anterior, la incertidumbre de lo que hará el cliente es de 0.40 bits pero conociendo su comportamiento (a través de las variables independientes) la reducimos a 0.16 bits. O sea, gracias al modelo tenemos más certeza de lo que hará el cliente. Pero no podemos estar 100% seguros. Todavía hay 0.16 bits de incertidumbre.
¿Por qué no es posible reducir a 0 bits? El culpable es el ruido. Supongamos que identificamos un patrón de comportamiento que se repite 100 veces en los datos. Este patrón no es otra cosa que una determinada combinación de valores de las variables independientes.

Si este patrón siempre estuviera asociado al mismo resultado final (se Fuga SI o No), entonces el ruido sería 0. Pero generalmente esto no sucede. De las veces que aparece el mismo patrón, algunas veces está asociado con Fuga=Si y otras con Fuga=No. Cuanto más similar sea esta distribución con la distribución de la variable a predecir, más ruido contendrán los datos, al menos en este patrón.
El modelo no podrá hacer mucho si los datos contienen demasiado ruido.  Es más, estos 0.16 bits establecen un límite teórico a lo que cualquier herramienta de modelado podrá obtener de estos datos. En este ejemplo los datos contienen un 40% de ruido (0.16/0.40).

En el siguiente artículo analizaremos la información desde el punto de vista de las variables independientes

miércoles, 14 de septiembre de 2011

La información como marco de referencia (Parte I)

La compañía ACME tiene un serio problema: cada mes pierde alrededor de un 8% de sus clientes. Si bien es cierto que también adquiere nuevos clientes, el resultado neto es una pérdida del 3%. A este paso en 9 meses habrá perdido un 25% de sus clientes.

Para mejorar la situación, decide identificar los clientes con altas probabilidades de fuga y tratar de retenerlos.
Veamos cómo se ve esta situación desde el punto de vista de la información


La compañía tiene sus Clientes que se comportan de determinada manera. Este patrón de comportamiento es representado como Mensajes que serán codificados por el Modelo para transmitir uno de dos mensajes: el cliente se va o se queda.
Los mensajes de entrada están formados por las variables que capturan el comportamiento de los clientes. El modelo fue armado para identificar patrones y asociarlos con una de dos respuestas posibles.

Antes de armar el modelo, existe una incertidumbre acerca de si los clientes permanecerán o se irán a la competencia, que puede expresarse en bits. En este ejemplo la incertidumbre es aproximadamente 0.40 bits (los detalles de cómo se mide esta información no son necesarios para el propósito de este artículo, pero pueden consultarse en http://powerhousedm.blogspot.com/2010/05/como-medir-la-informacion-que-lleva-un.html)
Las variables que capturan su comportamiento envían información a través del modelo, con el propósito de reducir la incertidumbre. En este ejemplo, las variables aportan 0.24 bits de información. Entonces gracias al modelo la incertidumbre sobre lo que hará el cliente (permanece o se va), se reduce de 0.40 bits a 0.16 bits (0.40 – 0.24). Si en vez de valores absolutos queremos expresar la reducción de incertidumbre en valores relativos, diríamos que el conjunto de variables con los que se desarrolló el modelo aportan el 60% (0.24 bits) de la información necesaria para predecir si el cliente se fugará o no con un 100% de exactitud (0.40 bits).

También podríamos decir que la incertidumbre de la variable a predecir se reduce a un 40%, una vez que se conocen las variables independientes.
En el siguiente artículo veremos cómo se interpretan estos 0.16 bits de incertidumbre restante.

miércoles, 7 de septiembre de 2011

Powerhouse para descargar

A partir de esta semana se encuentra una licencia de demostración de Powerhouse para bajar libremente en http://www.dataxplore.com.ar/descargas.php

Una vez completados los datos, se recibirá un mail con un link para acceder al instalador. También están disponibles 3 tutoriales y los datos para seguir paso a paso el desarrollo de tres modelos, predicción, scoring y clustering.

sábado, 19 de marzo de 2011

La entropía como medida de la información - Parte II

En este artículo contestaré las preguntas planteadas en el anterior.


Cualquier set de datos utilizado en Data Mining puede representarse en un espacio de estados, que no es más que un espacio ordinario pero con tantas dimensiones como variables disponibles. Por ejemplo, supongamos que los datos contienen solamente dos variables. Entonces, cada fila puede representarse como un punto en un espacio dado por las dos variables.

En el gráfico anterior el espacio de estados es de dos dimensiones y se ha representado un sólo estado por medio de un punto dado por las coordenadas 5030 y 130.

La representación de todo el set de datos podría ser algo similar al siguiente gráfico


Si en vez de tener dos variables tuviéramos 3, el gráfico sería en 3 dimensiones, por ejemplo:
Para más de 3 variables es imposible dibujarlo, pero la idea es la misma. Cada fila representa un estado por medio de la combinación de los valores de todas sus variables.

Luego de esta pequeña introducción al espacio de estados, podemos analizar cómo serían las tablas T1 y T2.

En el caso de T1, en donde supuestamente no existe ninguna relación entre las variables, los estados llenarán todo el espacio disponible, por lo tanto podría ser algo similar al siguiente gráfico


En cambio, en el caso de la tabla T2, que se supone que existe algún tipo de relación entre las variables, los estados ya no se dispersan como en el caso de T1 sino que están obligados a mantenerse dentro de alguna forma específica.
El proceso que origina estos datos es el responsable de darle la forma a la nube de puntos.

Ahora podemos responder las preguntas:

¿Qué tabla está más ordenada? T1 tiene desparramado los puntos por todo su espacio, mientras que t2 los tiene confinados en un volumen más pequeño, por lo tanto estarán más ordenados en T2 que en T1. O sea, la relación entre variables genera un orden interno.

Cuánto mayor orden, menor entropía, por lo tanto T1 tendrá mayor entropía que T2

La entropía máxima es la que tiene sus estados dispersos por todo el volumen, o sea cuando las variables no tienen relación entre sí.

En el caso extremo, tendremos una relación perfecta entre las variables y los estados estarán confinados en un volumen muy pequeño. Podemos imaginar el gráfico de la tabla T2 en donde los puntos caen en una línea recta.

La última pregunta es acerca de la información que llevan estas variables. Asumiendo que cada variable lleve algo de información sobre una cuarta variable, ¿qué es preferible? ¿Mayor o menor entropía de las variables independientes?

Acabamos de ver que una menor entropía implica que existe cierta relación entre las variables. Esto significa que parte de la información que trae cada variable es compartida por el resto de las variables (o al menos por una de ellas).

En cambio, si las variables tienen mayor entropía, no existirá relación entre ellas. Por lo tanto toda la información que aporte cada una de las variables será usada plenamente para predecir la cuarta variable.

Los dos últimos párrafos sugieren que un buen data set debería contener variables que estén relacionadas con la variable a predecir, pero no entre sí. De esto se deduce que la entropía de las variables independientes debería ser la mayor posible.


viernes, 25 de febrero de 2011

La entropía como medida de la información

En el artículo anterior mostré cómo es posible medir la información que un grupo de variables lleva sobre otra y en el artículo sobre Información, incertidumbre y sorpresa expliqué cómo medir la información de una variable.


En este artículo mostraré cómo la entropía también es útil cuando medimos la información de un conjunto de variables.

Supongamos que tenemos dos tablas con 3 variables numéricas con similar distribución cada una (podemos asumir una distribución uniforme o normal).

Supongamos que la primer tabla, que llamaré T1, tiene las variables sin ningún tipo de relación entre ellas, mientras que la tabla T2 contiene algún tipo de relación entre las variables.

Voy a dejar algunas preguntas para que las responda el que lo desee y en breve publicaré las respuestas.

¿Qué tabla contiene más “orden”? ¿La T1 o la T2?

¿Cuál de las dos tablas tendrán una entropía mayor? ¿por qué?

¿Cómo debería ser el tipo de relación para que la entropía sea mínima o máxima?

Asumiendo que cada una de las tres variables lleva algo de información sobre una cuarta variable, ¿qué tabla es preferible para armar un modelo de predicción?

Quedo a la espera de respuestas y/o comentarios.

Gracias

miércoles, 12 de mayo de 2010

¿Cómo medir la información que lleva un grupo de variables?


Varias veces me preguntaron cómo es posible aplicar la Teoría de la Información de Shannon cuando existe más de una variable en juego. La respuesta es muy simple si hacemos una distinción entre variables y estados.

Para medir la información que genera una fuente Shannon propone utilizar la entropía definida como:

en donde pi representa la probabilidad de ocurrencia del estado i. La entropía se mide en bits.

Por ejemplo, si una fuente de información es capaz de generar 3 estados distintos con probabilidades 0.3, 0.5 y 0.2, entonces la entropía será:

H = 1.486 bits

El ejemplo anterior podría referirse a una variable que contenga 3 valores distintos, cuya distribución sea 0.3, 0.5 y 0.2. En este caso diríamos que esta variable contiene 1.486 bits de información.

La duda aparece cuando consideramos más de una variable. ¿Cómo podemos aplicar la misma ecuación?

La clave está en considerar los estados a los que se refiere el cálculo de la entropía no como valores de una variable, sino como puntos en un espacio n-dimensional. Cada variable representa una dimensión del espacio.

Cuando queremos analizar una tabla con datos que representan distintos casos (cada fila es un caso y cada columna es una variable que toma diferentes valores según los atributos del caso), podemos representarlos mediante un espacio cuya dimensión está dada por la cantidad de variables. Cada caso es un punto en el espacio. Casos similares estarán situados en una región próxima del espacio. Si los casos se refieren a clientes y las variables representan comportamientos, entonces el espacio representará los distintos comportamientos de los clientes mediante los puntos, o estados.

La información que contiene este espacio dependerá de cómo se sitúan estos puntos y puede medirse mediante la entropía, utilizando cada punto como un estado.

martes, 21 de abril de 2009

Selección de variables

Seleccionar las mejores variables puede llegar a ser uno de los principales problemas en un proyecto de Data Mining.

Una opción es elegir aquellas variables que desde el punto de vista del negocio parecen importantes. Claro que para esto se debe conocer muy bien el negocio y se puede correr el riesgo de elegir variables altamente correlacionadas. Además es muy posible que el grupo de variables seleccionadas diste mucho de ser el óptimo (por ejemplo, podrían quedar afuera ciertas variables que aportan buena información).

Otra alternativa es la fuerza bruta, pero sólo en casos con muy pocas variables disponibles. Cuando la cantidad de variables comienza a ser importante, este enfoque queda descartado debido a la enorme cantidad de pruebas que hay que realizar. Por ejemplo, suponiendo que hay 20 variables disponibles y se deben elegir 6, la cantidad de combinaciones posibles es mayor a 38.000. Si en vez de 20 tenemos 100, las diferentes combinaciones superan los 1.000 millones.

Un método que ha demostrado ser muy eficiente es el que se basa en la Teoría de la Información. Sin entrar en demasiados detalles, los pasos a seguir son los siguientes:
  1. Seleccionar del total de las variables, aquella que transmite mayor cantidad de información.
  2. Seleccionar del resto de variables disponibles, aquella que transmita la mayor cantidad de información nueva
  3. Continuar en el paso 2 hasta que la ganancia de información ya no justifique la pérdida de representatividad de población (ver artículo ¿Cuántos datos necesito para obtener un buen modelo?)

Este procedimiento toma muy poco tiempo y crea un conjunto de variables que cumple con las siguientes características:

  1. Contiene la mayor cantidad de información dado los datos disponibles
  2. Contiene la mejor relación señal/ruido
  3. Las variables seleccionadas no son colineales
  4. Tiene en cuenta las interacciones entre variables
  5. Usualmente aparecen seleccionadas variables que son consideradas como muy importantes desde el punto de vista del negocio

Aquellos interesados en conocer más acerca de la Teoría de la Información pueden leer el artículo Powerhouse: Data Mining usando Teoría de la Información

jueves, 2 de octubre de 2008

Correlación e Información Mutua

El coeficiente de correlación entre dos variables está basado en la covarianza (y normalizado mediante las varianzas de cada variable) y asume, entre otras cosas, que la relación entre las variables es lineal. Esto significa que el coeficiente de correlación (o de determinación r2) no es suficiente para saber si dos variables están correlacionadas. El siguiente es un ejemplo tomado del libro “The Visual Display of Quantitative Information” de Edward Tufte y basado en 4 pares de variables ideadas por Francis Anscombe.

Las 4 variables Y tienen la misma media y desviación estándar. Además el coeficiente de correlación entre X e Y es el mismo en los 4 casos (0.816) y comparten la misma recta de regresión y = 0.5 x + 3

Las cuatro relaciones con distintas entre si, pero sus correlaciones son las mismas. Esto nos enseña la importancia de usar gráficos de dispersión para visualizar la relación entre dos variables, más que confiar en su correlación.

¿Pero qué sucede si analizamos estas relaciones usando medidas de información?

La primera diferencia que encontramos es que las entropías de las variables Y son distintas, excepto las dos últimas. La diferencia más importante es que la información transmitida entre cada par de valores es diferente en los 4 casos, como puede verse en la siguiente tabla



En los tres primeros casos, la información transmitida nos indica que es posible realizar un buen modelo, mientras que en el último caso, un valor de sólo 18% nos dice que ningún modelo será capaz de hacer un buen trabajo para representar esta relación (lo cual es obvio mirando el gráfico de dispersión).

La información transmitida no asume ningún tipo de relación, como lo hace el coeficiente de correlación. Esta es una gran ventaja, porque muchos data sets contienen relaciones no-lineales que son descartadas al utilizar correlaciones lineales.

En casos que involucran sólo dos variables, una manera de confirmar si la relación es lineal es usar los gráficos de dispersión, pero cuando aparecen más variables independientes, graficar la relación no sirve. Una solución es utilizar medidas de información mutua como la información transmitida.

viernes, 25 de abril de 2008

Ya no es necesario torturar los datos

Existe un concepto muy arraigado y que se basa en las viejas tecnologías de análisis de datos: para obtener un buen modelo hay que hacer una enorme cantidad de pruebas.

¿Cuál es la mejor transformación para cada variable? ¿Cuál es el mejor valor para reemplazar los nulos? ¿Cuáles son las variables más adecuadas para realizar el modelo? ¿Cuántas variables se deben incluir? ¿Qué tipo de modelo es el mejor? Éstas son algunas de las tantas preguntas que se deben contestar para crear un modelo, con lo que no es de extrañar que muchos piensen que no sólo tienen que hacer muchos intentos sino que además deben saber de estadística y necesitan tener mucha experiencia.

Afortunadamente la teoría de la información responde a cada una de estas preguntas. La clave está en medir la información que contiene cada variable disponible. Hay sólo una transformación de la variable que maximiza la información y reduce el ruido. Existe sólo un grupo de variables que lleva la mayor información posible con el menor ruido posible.

Una vez realizada la mejor transformación y elegidas las mejores variables, toda la información disponible está expuesta de tal manera que con una simple regresión se obtiene un modelo excelente y muy fácil de interpretar.

En resumen, con la teoría de la información ya no es necesario ensayar diferentes transformaciones de variables, distintas combinaciones de variables y algoritmos para ver cuál es el que mejores resultados genera.

Hay un solo camino para hacer las cosas: el óptimo.

¿Utopía? No, realidad.

Powerhouse es la prueba.

viernes, 28 de marzo de 2008

Modelos de predicción usando modelos de segmentos

En el artículo anterior comenté que los modelos de clusters o segmentos pueden usarse para varios propósitos. Hoy mostraré cómo es posible usar un modelo de segmentos para predecir.

Powerhouse permite generar modelos de clusters con distintas cantidades de segmentos. Cuando se usa el modelo para explicar los datos, se prefieren pocos segmentos, pero si el modelo se usa para predecir, es preferible que la cantidad de segmentos o clusters sea grande.

Un modelo de clusters es normalmente un modelo no supervisado. Dicho de otro modo, no existe una variable output que sirve como guía en la creación del modelo. La utilidad de un modelo no supervisado está relacionada con la manera en que se distribuyen los valores de las variables en cada uno de los clusters.

Si los valores de la variable output (variable a predecir) se distribuyen con diferentes rangos en cada cluster, es posible usar el promedio de los valores de cada cluster como valor predicho. Por ejemplo, supongamos que un modelo contiene 10 clusters. Supongamos también que la variable a predecir es del tipo SI/NO. Si asignamos 1 para SI y 0 para NO, podemos calcular el promedio por cada cluster y cada valor representará la probabilidad de que la variable tome valor SI. La siguiente tabla muestra lo que podrían ser estos valores

Con esta tabla podemos armar el modelo de predicción de la siguiente manera: cuando tenemos un caso nuevo, representado por las mismas variables con las que se armó el modelo de cluster, sólo hay que calcular el cluster al que corresponde. Luego, la predicción, que en este ejemplo será la probabilidad de ser "SI", será la probabilidad asignada al cluster en la tabla de arriba.

Como ejemplo práctico usé datos acerca de los clientes de un banco para armar un modelo de riesgo crediticio. Luego construí un modelo de cluster, que en Powerhouse se llama OPTICL. Modifiqué la cantidad de clusters llevándolo al máximo. Esto resultó en un modelo con 64 clusters. Luego calculé la probabilidad de encontrar valores SI de la variable output usando los datos de entrenamiento.

Es importante aclarar que Powerhouse no usa la variable output para construir un modelo de cluster (si lo hiciera ya no sería un modelo no supervisado).

Finalmente apliqué el modelo en los datos de prueba (esto genera un número de cluster para cada caso) y reemplacé los números de cluster de cada caso por la probabilidad calculada anteriormente.

¿El resultado? Un modelo con un KS de 51% (es un excelente valor). Para comparar, realicé un modelo de predicción utilizando el Scorecard de Powerhouse sobre los mismos datos y encontré que el rendimiento fue levemente superior con un KS de 55% sobre los datos de prueba.

Conclusiones:

Los modelos de predicción no tienen que ser necesariamente supervisados. En este artículo vimos cómo es posible realizar un modelo no supervisado con una muy buena respuesta.

jueves, 27 de marzo de 2008

Segmentaciones con Powerhouse

Los modelos de clustering tienen varios usos, uno de los cuales es la segmentación de clientes.

Se pueden segmentar los clientes en base a diferentes criterios y utilizando distintas variables. Powerhouse tiene la capacidad de encontrar los segmentos naturales que puedan existir en los datos en forma completamente automática. Sólo es necesario indicarle cuáles serán las variables con las que deberá trabajar y elegir algunos de sus modelos.

Como ejemplo de segmentación elegí los datos provenientes de una línea de POS (cajas registradoras). Uno de los módulos de Powerhouse es capaz de leer cada ticket y en base a una serie de parámetros generar automáticamente los datos en el formato usado en cualquier proyecto de Data Mining. En este artículo mostraré unos pocos ejemplos de la información encontrada en la comparación de los clusters o segmentos.

La representación gráfica de los segmentos que muestra Powerhouse es la siguiente:


Los puntos negros representan los clientes. Cuando dos clientes son similares, o sea, los valores que toman todas las variables que los identifican son parecidos, aparecen juntos. Cuanto más se parezcan más juntos estarán. En cambio si dos clientes son muy distintos, ya no serán vecinos sino que estarán situados en zonas separadas.

Cuando la densidad de puntos es alta (o lo que es lo mismo, cuando en una zona se agrupen gran cantidad de clientes similares), el color de la zona es rojo. Cuando una zona tiene muy baja densidad, el color es azul. Los colores intermedios indican zonas con densidades intermedias.

Powerhouse busca las zonas de más baja densidad para delimitar los distintos segmentos. En el gráfico de arriba estos límites están representados por líneas blancas.

Basado en estos datos Powerhouse identificó 3 segmentos (este es el número de segmentos que mejor se ajusta, pero el usuario tiene la posibilidad de elegir un número distinto de segmentos).

Ahora es momento de encontrar qué características tiene cada segmento. O sea, en qué se parecen y en qué se distinguen los segmentos encontrados.

Una manera de hacerlo (y no es la única ofrecida por Powerhouse), es mediante la comparación de clusters que se genera automáticamente con un clic.

La ventana de Estadísticas de los Clusters nos permite ver cómo se distribuyen los valores de cada una de las variables entre los distintos segmentos. En este caso vemos que el monto promedio gastado en cada ticket es distinto en cada segmento. La columna que dice Todos indica cuál es el promedio, el valor mínimo y el máximo de esta variable considerando todos los clientes, en este caso 114,81$. El resto de las columnas indica también los valores promedios, mínimo y máximo pero para cada segmento. Abajo aparecen un pequeño gráfico de la distribución de estas variables.

Es posible hacer análisis similares para otras variables y encontrar el perfil de los clientes de cada segmento para luego tomar algún tipo de acción.

En este proyecto se encontraron muchas diferencias interesantes, por ejemplo una de ellas es que el segmento que deja el márgen bruto más alto también es el que compra pocos productos de indumentaria pero el que más gasta en frutas y verduras.

miércoles, 9 de enero de 2008

¿Cómo medir el rendimiento de un modelo? (Parte II)

En el artículo anterior vimos cómo nos puede ayudar una matriz de confusión en la tarea de evaluar un modelo de score. En el análisis que vimos como ejemplo, asumimos que las equivocaciones y los aciertos tenían el mismo peso tanto para los clientes Activos como los No Activos, pero esto no tiene que ser necesariamente así.

En ciertos casos conviene ponderar los aciertos y errores según la categoría que se está prediciendo. Por ejemplo, equivocarse cuando se predice que un cliente no se irá a la competencia cuando realmente se va, podría tener más graves consecuencias que equivocarse en el caso contrario: se predice que se irá a la competencia pero se quedará. Para tratar estos casos de aciertos y errores ponderados simplemente se puede asignar un costo al error cometido. Por ejemplo, supongamos el siguiente caso:

1. Predecir erróneamente que el cliente se queda (se predice Activo pero el cliente es No Activo), tiene un costo de 5 unidades.
2. Predecir erróneamente que el cliente se va (se predice No Activo pero el cliente es Activo), tiene un costo de 1 unidad.

Considerando la matriz de confusión del artículo anterior




El costo total de esta prueba sería:

Costo total = 1.884 * 5 + 1.651 * 1 = 11.071

Curva Lift

Otra manera de evaluar un modelo es mediante una curva lift.

Para entender este gráfico comencemos con la curva roja que representa un modelo perfecto, o sea, aquel con un 100% de aciertos.

Supongamos que tenemos un modelo perfecto que predice un score 100 para todos los clientes que son No Activos y un score 0 para todos los Activos. Aplicamos el modelo a los datos de prueba y luego ordenamos por el score, de mayor a menor. Tendremos una tabla similar a la siguiente:

La curva perfecta (curva roja) representa el porcentaje de clientes No Activos que van apareciendo a medida que recorremos la tabla ordenada por el score del modelo Perfecto. Vemos que aproximadamente el 8% de los primeros clientes que aparecen (el porcentaje de clientes o casos aparece en el eje horizontal), son todos los clientes No Activos que encontraremos en esta tabla, o sea el 100% (representado con un 1 en el eje vertical). Esto es lógico, ya que el modelo perfecto es capaz de separar perfectamente las dos clases a predecir.

La curva perfecta continúa horizontalmente ya que no hay más clientes No Activos.

La curva del modelo naïve (color azul) se construye con una tabla similar a la anterior pero en donde el score es un número al azar. Una vez ordenada la tabla por este valor aleatorio, se necesitará recorrer toda la tabla para que aparezca el 100% de los clientes No Activos. O sea, esta curva es una línea recta que comienza en 0 y termina 1 (el 100% de los clientes No Activos). En cualquier punto el porcentaje de clientes No Activos será exactamente el mismo que el porcentaje de clientes en ese punto. Por ejemplo, tomando el 40% de clientes habremos seleccionado el 40% de los clientes No Activos.

Si todavía no queda claro qué representa la curva del modelo naïve se puede pensar un ejemplo concreto. Supongamos que tenemos 1.000 clientes y 100 de ellos son No Activos. Si no sabemos nada acerca de cada cliente, ¿cuántos clientes tendremos que tomar para estar seguros que seleccionamos los 100 No Activos? La respuesta es 1.000, o sea el 100% de los clientes. Y si seleccionamos un 40% de los clientes al azar, ¿cuántos clientes No Activos encontraremos? La respuesta es 40, o sea un 40% de los No Activos.

La curva del modelo se encontrará entre estas dos curvas extremas (la curva del modelo perfecto y la curva del modelo naïve). En el gráfico de arriba es la curva verde y nos indica el porcentaje de clientes No Activos que tendremos para cada grupo de clientes seleccionados en base al score del modelo. Por ejemplo, tomando un 20% de clientes (20% en el eje horizontal) obtendremos un 55% (0.55 en el eje vertical) de los clientes No Activos.

Cuanto más se parezcan la curva del modelo con la curva perfecta, mejor será el modelo.

Otra manera de ver esta información es mediante una tabla que muestre los valores de la curva en puntos específicos, por ejemplo en cada decil (cada 10%).


El decil 1, o sea el primer 10% de los clientes ordenados por el score del modelo, contiene el 40% de los clientes No Activos. El Lift que tiene el modelo en este punto se calcula como el cociente entre el porcentaje de clientes No Activos encontrados por el modelo y el que encontraría el modelo naïve, o sea 40%/10% = 4 (el valor de lift mostrado es 3,95 porque los porcentajes mostrados están redondeados).

Todos los ejemplos de estos dos artículos se basaron en un modelo de fuga de clientes o attrition, pero debe tenerse en cuenta que un modelo de score es simplemente un modelo de predicción que a cada predicción le asigna un score. Normalmente cada score tiene asociada una probabilidad de la clase a predecir. Por ejemplo, un score 76 podría significar una probabilidad del 58% de que el cliente se vaya a la competencia, de comprar un determinado producto, de aceptar una determinada oferta, de que el cliente no pague, etc.

lunes, 24 de diciembre de 2007

¿Cómo medir el rendimiento de un modelo? (Parte I)

Una vez que se construye un modelo de predicción se debe medir su rendimiento tanto sobre los datos con los que fue construido como sobre datos nunca vistos. Un buen modelo debería tener rendimientos similares con ambos datos. Si la diferencia es muy grande y a favor de los datos de entrenamiento, es probable que el modelo haya copiado parte del ruido. Para conocer más acerca de estos temas se puede consultar los artículos “¿Qué es el ruido” y “Datos de prueba contaminados”.

En este artículo trataré sobre cómo medir el rendimiento de un modelo de score, en particular para variables dependientes de dos estados, o categorías, por ejemplo, un modelo de score para estimar la probabilidad de fuga de clientes (attrition).

En un modelo de attrition que realicé el año pasado los resultados sobre los datos de prueba se resumen con la siguiente tabla:





Esta tabla, llamada matriz de confusión, es una de las herramientas que se pueden usar para medir el rendimiento de un modelo que predice dos posibles resultados. En este caso los estados en que se encuentran los clientes son:

1. Activos, son aquellos que siguen operando con la empresa
2. No Activos, son los que dejaron de operar con la empresa

Los datos que se usaron para probar el modelo contenían 36.292 clientes en total, de los cuales había 33.417 clientes Activos y 2.875 clientes No Activos, tal como se puede ver en la matriz de confusión. O sea, en esta tabla, las filas representan la variable dependiente o como figura a la izquierda, la Categoría Actual.

La distribución de los estados de la variable dependiente es:

Porcentaje de Activos = 33.417 / 36.292 = 92,08%
Porcentaje de No Activos = 2.875 / 36.292 = 7,92%

Una vez que se aplicó el modelo sobre estos datos, se obtuvieron las predicciones correspondientes. Se predijeron 33.650 clientes como Activos y 2.642 como No Activos.

Con esta tabla podríamos calcular cuántos aciertos tuvo el modelo. Para esto sólo hay que sumar los casos en los que el modelo acertó. O sea, se predijo No Activo y el cliente es No Activo, y se predijo Activo y el cliente es Activo.



O sea el modelo acertó

Aciertos: 991 + 31.766 = 32.757 veces

El porcentaje de aciertos se calcula como la cantidad de aciertos dividido la cantidad total de casos

Porcentaje de aciertos = 32.757 / 36.292 = 90,26%

La pregunta es, ¿es útil esta medición? Antes de contestar esta pregunta vamos a calcular cuánto sería el porcentaje de aciertos de un modelo que sólo responda al azar pero respetando la distribución de la variable dependiente. O sea, un modelo que responda Activo el 92,08% de las veces y No Activo el 7,92% restante de las veces.

Haciendo un poco de cálculos encontramos que este modelo tendría un porcentaje de aciertos de

Aciertos = 7,92% * 2.875 + 92,08% * 33.417 = 30.998

% Aciertos = 30.998 / 36.292 = 85.41%

En principio parece que el primer modelo (el que tiene un acierto de 90.26%) no es mucho mejor que un modelo al azar. Es más, hay casos en que el porcentaje de aciertos de un modelo al azar supera al de un modelo hecho con alguna herramienta de Data Mining. Pero entonces ¿de qué sirve trabajar tanto en un modelo si hacer predicciones al azar podría tener un mayor porcentaje de aciertos?

Una de las diferencias está en las predicciones de la clase o categoría menos representada. O sea, en nuestro ejemplo, en las predicciones de los clientes No Activos. Si comparamos los aciertos de ambos modelos, veremos una gran diferencia:

%Aciertos = Aciertos de No Activos / Total de No Activos predichos

%Aciertos modelo DM = 991 / 2.642 = 37.41%

En el caso de predicciones al azar, se predijeron 7,92% del total de casos, o sea 2.875 = 7,92% * 36.292

%Aciertos modelo al azar = 227 / 2.875 = 7.92%

Ahora se puede apreciar el valor de un modelo realizado con técnicas de Data Mining, ya que es capaz de predecir mucho mejor los clientes No Activos.

En el siguiente artículo seguiré con este tema.

Durante este año que viene me gustaría recibir algunos comentarios acerca de los artículos o los temas tratados. Al no tener feedback no tengo claro si los temas son interesantes o de la profundidad esperada.

Les deseo a todos los lectores del blog que tengan unas Felices Fiestas y un excelente 2008.

Hasta pronto,

Marcelo

jueves, 13 de diciembre de 2007

¿Qué es Data Mining?

El libro “Data Mining Techniques” de M. Berry y G. Linoff comienza con un pequeño ejemplo de cómo el dueño de un local en donde uno de los autores compra vino, conoce sus gustos y es capaz de hacerle buenas recomendaciones.

En este artículo expandiré este ejemplo porque creo que es una buena analogía de lo que busca encontrar cualquier proyecto de Minería de Datos o Data Mining.

Imaginemos un pequeño local de ventas de vinos y especialidades tales como quesos, paté y embutidos, atendido por su dueño, Pedro, desde hace 5 años.

Cada vez que recibe un cliente, Pedro lo conoce lo suficientemente bien como hacerle varias recomendaciones. A Carlos le ofrece un buen Cabernet Sauvignon de una nueva bodega que acaba de recibir y un Provolone Piccante italiano. En cambio a Raúl, que prefiere los vinos blancos, le ofrece un Chardonnay acompañado de un Parmesano, porque otros clientes les han comentado lo bien que se lleva este vino con este queso.

Resumiendo, basado en su experiencia de atender a sus clientes por 5 años, Pedro es capaz de conocer las preferencias de sus clientes tan bien que podría clasificarlos en distintos segmentos. También es capaz de sugerir recomendaciones (predecir que producto llevar) a cada cliente y ofrecer nuevos productos en base a lo que otros han combinado con buenos resultados (cross selling)

Conocer a los clientes lo mejor posible ha sido la estrategia de Pedro para dejar a sus clientes conformes y a la vez incrementar sus ventas. Esto establece una situación ganar-ganar. Ganan los clientes visitando un negocio en donde reciben lo que ellos quieren y gana Pedro manteniendo a sus clientes e incrementando sus ventas. Pero esto es posible porque la cantidad de clientes de Pedro es lo suficientemente pequeña como para conocerlos personalmente.

Muchas empresas que cuentan con miles de clientes no tienen esta posibilidad, aunque no tienen por qué renunciar al uso de una estrategia similar. La diferencia está en el tipo de herramienta usada para conocer las preferencias e inferir recomendaciones. En el caso de Pedro, su herramienta es su cerebro, en el caso de una gran empresa su herramienta deberá ser una computadora.

Pedro guarda la relación de sus clientes con su negocio en su memoria y usa su capacidad de razonar en base a su lógica inductiva y deductiva, para hacer sus recomendaciones.

Una empresa con miles de clientes deberá almacenar su relación con los mismos en una base de datos y deberá usar programas que tengan capacidades inductivas (para encontrar reglas o patrones de comportamiento) y deductivas (para usar estas reglas a fin de hacer recomendaciones).

Esta tecnología que utiliza datos almacenados en sus bases y programas que buscan patrones de comportamientos lleva el nombre de Minería de Datos o Data Mining.

Hay personas a las que cuesta seguir en su línea de razonamiento e incluso en ciertas ocasiones no quedan claras las razones de por qué se toman ciertas decisiones. Hay personas que son capaces de sacar conclusiones rápidamente y otras que les cuesta más. Con los programas de Data Mining pasa lo mismo. Hay programas complicados de usar y otros que son muy simples. Hay algoritmos que dejan claras las razones de sus recomendaciones y otros que son como cajas negras, hay programas que llegan a un resultado en pocos segundos y otros que tardan horas.

Todas las herramientas de Data Mining tienen sus pros y sus contras, pero lo importante es no perder de vista el objetivo principal, así como la tarea principal de Pedro no es analizar a sus clientes, sino venderles lo máximo posible, Data Mining no se trata de analizar datos, se trata de optimizar los negocios, ya sea vendiendo más, ya sea gastando menos.

Una herramienta de Data Mining ideal debería pasar desapercibida. Uno debería gastar el menor tiempo posible preparando datos, y concentrarse en los resultados. Ver el problema desde un punto de vista de negocios y no desde la perspectiva estadística.

La siguiente demostración intenta mostrar que hacer Data Mining no tiene por qué ser complicado.... si se cuenta con la herramienta adecuada.

Demostración online de Data Mining con Powerhouse

jueves, 29 de noviembre de 2007

Más sobre preparación de datos

El último propósito de un proyecto de Data Mining o Minería de Datos es obtener el conocimiento necesario acerca de alguna situación a fin de controlarla o al menos predecir qué sucederá frente a determinadas condiciones. Esto es muy similar a lo que hacemos cada vez que nos enfrentamos a situaciones de la vida diaria. No sólo obtenemos la mayor información posible por medio de nuestra experiencia, sino que la vamos almacenando en nuestra memoria y tratamos de encontrar cómo se relacionan diferentes hechos u objetos. Una vez que conocemos lo suficiente estamos en posición de predecir qué sucederá, y si además somos capaces de modificar las condiciones actuales, podremos actuar para obtener lo que deseamos.

Cuando elaboramos un proyecto de Data Mining, los datos que usamos están en la memoria de una computadora y el motor analítico es un programa o algoritmo capaz de encontrar esas relaciones. Una vez encontradas las mismas, nos permitirán entender los datos que asumimos fueron generados por algún mecanismo y provenientes de algún sistema o situación de interés, por ejemplo la interacción de los clientes con una empresa.

Si la situación de interés fuera simple, quizás no haría falta recurrir a una computadora, pero si se torna compleja o demasiado grande para manejarla en nuestro cerebro, necesitamos alguna herramienta que nos asista, y qué mejor que una computadora. El único requisito es contar con datos que contengan la información necesaria para nuestro propósito.

En Data Mining los datos generalmente están en forma de tabla, en donde cada fila representa el objeto de interés, por ejemplo, un cliente, un producto o un paciente, y cada columna contiene información acerca de algún atributo del objeto. Por ejemplo en el caso de un paciente podría ser la edad, el peso, la presión arterial, etc. Muchas veces los datos vienen en forma transaccional y se necesita un trabajo de ensamblado previo a fin de obtener la tabla mencionada.

Tanto algoritmos de Data Mining como seres humanos recurrimos a un método común para hacer la cantidad de datos manejable: usamos modelos.

Un buen modelo debería capturar las partes más importantes de la situación y dejar de lado los detalles que no hacen al comportamiento. Si lo logra, entonces parte del trabajo ya está hecho. Sólo resta interpretar este modelo (entender las relaciones explícitas en el modelo) y ponerlo a trabajar, ya sea para predecir o para controlar.
Así como existen distintas clases de modelos, también existen diferentes tipos de herramientas para crearlos. Cuando los datos están preparados, es posible utilizar modelos más simples y aún obtener excelentes resultados.

Preparación de variables

Además de decidir qué hacer con los nulos, con los outliers y con datos no balanceados, la preparación de datos implica modificar la distribución de variables numéricas, transformarlas en categóricas y transformar variables categóricas en numéricas si es necesario.

Tratamiento de nulos

El tratamiento de los nulos está tratado en otro artículo, "¿Qué hacer con los Nulos'"

Qué hacer con los outliers

Un outlier es un valor muy alejado de la mayoría de los valores que toma una variable. ¿Es un error? Quizás si, quizás no. Si es posible asegurar que se trata de un error, podría corregirse o en el último de los casos ser tratado como un nulo. Caso contrario habrá que hacer algo con estos valores para que no creen problemas con la herramienta de modelado.

Un método que podría funcionar es acercar los outliers al resto de los valores lo suficiente como para que no traigan problemas en la etapa de modelado, pero no tanto como para que dejen de ser casos extremos. Existe una función que puede mapear una serie de valores en forma lineal en su parte central y logarítmica en sus extremos. Esta es la función logística


En donde Vi es el valor a transformar y Vn es el transformado. Los dos gráficos siguientes muestran el efecto de usar la función logística sobre una serie de valores que contienen dos outliers. Los valores originales están en el gráfico de la izquierda y los transformados a la derecha.

En el gráfico de la derecha se puede notar que los outliers, tanto el valor máximo como el mínimo, se acercaron al resto de los datos.

Balanceo de datos

Más frecuentemente de lo que uno quisiera, la variable a predecir tiene una distribución lo suficientemente desequilibrada como para causarle problemas a la gran mayoría de los algoritmos que generan un modelo de predicción. El caso típico es el siguiente:
Una empresa desea llevar a cabo una campaña de marketing uno a uno acerca de un nuevo producto, pero como cuenta con un presupuesto fijo desea enviar el folleto solamente a aquellos clientes que mayor probabilidad de comprar el producto tengan. Para este fin selecciona una muestra de un pequeño porcentaje de clientes y les envía el folleto. De esta manera obtendrá una base de datos con información sobre sus clientes más una variable con una indicación sobre si el cliente compró o no el producto. Esta será la variable a predecir.

Una vez armado el modelo que estime la probabilidad de compra (podría ser un modelo de score), sólo necesitará aplicarlo sobre el resto de los clientes (aquellos que no fueron contactados en la primer campaña usando la muestra de clientes) y luego seleccionar aquellos con mayor probabilidad.

El problema que aparece en este proyecto es que es normal que los clientes pertenecientes a la muestra que responden afirmativamente durante la campaña sean muy pocos (quizás menos de un 5% o 10%). Entonces la variable a predecir contendrá, por ejemplo, 95% de respuestas negativas y 5% de positivas.

Esta clase de distribución tan desequilibrada hace que muchas herramientas generen un modelo cuya respuesta será siempre No Compra para todos los clientes. La razón es que prediciendo la clase más frecuente (No Compra), el modelo obtiene un alto grado de aciertos. En este caso, obtiene ¡un 95% de aciertos!

¿Qué hacer entonces para solucionar este tema? La práctica común es balancear los datos. Esto significa que se toman todos los clientes que respondieron afirmativamente y luego una cantidad igual y al azar de clientes que respondieron negativamente. De esta manera se obtiene una muestra con una distribución de un 50% de Compra y un 50% de No Compra. Cuando la cantidad de clientes con respuesta positiva es demasiado pequeña, se acostumbra a probar con varias distribuciones para ver cuál es la adecuada (por ejemplo, 40%/60% y 30%/70%).


Si el software usado es Powerhouse, no hace falta balancear los datos. Los artículos ¿Es necesario balancear los datos? y Un ejemplo con datos no balanceados dan más detalles y ejemplos sobre este tema.

Transformación de variables numéricas

Existen dos tipos de transformaciones que pueden aplicarse a las variables numéricas: cambiar su distribución y convertir a categórica.

Cambio de la distribución

Hay veces en que la distribución de los valores de una variable está lejos de ser normal, por ejemplo tiene una larga cola como es el caso de una variable que contenga el ingreso o sueldo de las personas. La mayoría de las personas tienen un sueldo que podría ir desde digamos 500$ hasta 5.000$. Pero existen personas cuyos ingresos son mayores, llegando incluso a valores muy altos, como por ejemplo 50.000$. Si se desea un modelo que pueda predecir la probabilidad de que un cliente compre un determinado artículo, esta variable podría ser útil. Pero su poder de discriminación se verá afectado por su distribución. La diferencia entre dos clientes con ingresos de 1.000$ y 2.000$ parece ser lo suficientemente importante como para que afecte la probabilidad de comprar un producto, pero la herramienta de modelado sólo verá una diferencia del 2% (aproximadamente 1000/50.000) en estos dos valores.

Si en vez de usar la variable tal como está, se aplica la función logaritmo a cada valor, la diferencia entre estos dos valores transformados pasa a ser 15%, mas de 7 veces que el caso anterior. Cualquier herramienta que trate con esta variable transformada tendrá más posibilidades de encontrar una relación con el hecho de que un cliente haya comprado o no un artículo. La función logaritmo expande los valores bajos de una variable y comprime los altos, dejando más al descubierto la relación que podría existir con otra variable. En el gráfico de la izquierda se muestra una relación con variables sin transformar y en el de la derecha la misma relación pero con las variables transformadas.


Hay que considerar que no siempre es posible aplicar un logaritmo ya que la función sólo está definida para valores mayores que cero, y tampoco es siempre la mejor transformación, pero siempre es posible encontrar otras funciones similares (la función logística por ejemplo), o modificar la distribución de la variable con métodos numéricos.

Transformación en categóricas

Otro tipo de transformación posible es convertir la variable numérica en categórica. Se debe determinar cuáles serán los puntos de corte para que a cada rango resultante se le asigne una categoría. Existen dos métodos para encontrar los puntos de corte: supervisado y no supervisado.

Uno de los mejores métodos no supervisados es aquel que asigna a cada categoría una misma cantidad de valores. Para lograrlo se ordena la variable de menor a mayor y luego se encuentran los puntos de corte de acuerdo a la cantidad de categorías que se desean. Por ejemplo, si la variable tiene 1000 valores y se desean 10 categorías, el primer punto de corte se lo ubica en la posición 100 (1000/10) de la variable ordenada. El segundo en la 200, el tercero en la 300, y así sucesivamente.

Por ejemplo, la tabla siguiente asigna 8 categorías a una variable que va desde -10 hasta 100

Estos rangos agrupan la misma cantidad de valores en cada categoría.

Los métodos supervisados necesitan de la variable dependiente para encontrar sus puntos de corte. Uno de los más conocidos es el llamado LIL por sus siglas en inglés Least Information Loss ("Menor Pérdida de Información") y se basa en Teoría de la Información.

Cada vez que se transforma una variable numérica en categórica, se pierde información, ya que valores que antes eran distinguibles por ser diferentes, ahora serán los mismos (por ejemplo, con la tabla anterior los números 13.5, 17 y 28 pasan a ser exactamente iguales, ya que a los tres se les asigna la categoría Cat4). El método LIL trata de encontrar cuáles son los puntos de corte para que la información perdida sea mínima posible. Powerhouse tiene disponible varios métodos de binning y se usa por default el método LIL.

Transformación de variables categóricas

Los datos que integran cada fila de una tabla tienen una estructura. Los valores de cada variable están más o menos relacionados y es esta relación la que debe preservarse cada vez que se aplica algún tipo de transformación en las variables. Cuando es necesario asignar un valor numérico a variables del tipo categórico, es una práctica común hacerlo en forma arbitraria pero sin advertir que se está corriendo el riesgo de destruir la estructura interna de los datos.

La altura y el peso son ejemplos de variables que mantienen una relación entre si. Supongamos que el peso viene dado en kilogramos como una variable numérica y la altura como una variable categórica tal como se muestra en la siguiente tabla

Una manera de asignar valores numéricos a la variable altura sin tratar de preservar la relación entre estas dos variables es por orden alfabético:



El gráfico de la izquierda muestra cómo queda la relación entre estas dos variables usando la asignación numérica arbitraria dada en la tabla de arriba y el gráfico de la derecha muestra la misma relación pero usando un método de asignación numérica que no destruya la estructura.



La relación entre estas dos variables es más simple en el gráfico de la derecha (que podría considerarse lineal) que en el de la izquierda (que es definitivamente no lineal). En este caso, para obtener la tabla de asignaciones numéricas que preservaran la relación simplemente se obtuvo el promedio de pesos para cada categoría de la variable altura y luego se normalizó de 0 a 1. El resultado es el siguiente


Conclusiones

Estos son algunos de los métodos recomendados para transformar datos. Esta es una tarea que puede llevar mucho tiempo, de hecho se estima que podría consumir el 70% del tiempo total de un proyecto de Data Mining, pero las ventajas son enormes.

Una vez que los datos han sido preparados las relaciones que contienen quedan mejor expuestas, facilitando de esta manera el trabajo que tiene que hacer la herramienta que vaya a crear el modelo.

Esto a su vez tiene una consecuencia muy importante: como las relaciones quedaron al descubierto, el riesgo de sobre-entrenamiento se minimiza. Además, herramientas tan simples como una regresión lineal podrían generar un modelo excelente.

Powerhouse utiliza parte de esta metodología para preparar los datos automáticamente y evitar tener que hacerlo manualmente.