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.