En este blog se exploran las posibilidades de analizar datos y crear modelos basados en la Teoría de la Información usando 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.

lunes, 26 de noviembre de 2007

Cómo ensamblar datos transaccionales

La semana pasada recibí una consulta de un analista de una empresa de telefonía celular que está llevando adelante un proyecto para predecir las líneas que deberían participar en una campaña de marketing.

Éste, como muchos proyectos, utiliza una base histórica transaccional que debe ser ensamblada en un formato apropiado para que cualquier herramienta de Data Mining pueda trabajar con ella. La consulta fue acerca de cómo ensamblar los datos.

Es muy difícil dar una respuesta simple y completa, ya que depende de cada caso en particular, pero existen varias sugerencias que podrían ayudar:

1. Definir cuál será el objeto de estudio

Es imprescindible que tengamos en claro cuál será el objeto a focalizar. Por ejemplo, supongamos que estamos analizando datos provenientes de una línea de POS (Point Of Sale) de supermercados. ¿Qué deseamos analizar? ¿Productos? ¿Tickets? ¿Clientes?

La tabla final deberá contener una fila por cada objeto. Por ejemplo, si el objeto es el cliente entonces cada fila se referirá a un cliente y no existirán dos filas que se refieran al mismo cliente.

2. Definir la variable a predecir

Tener claro el objeto de estudio no implica que se conozca la variable a predecir (OP). De hecho, en algunos casos, definir la OP es un tema crucial para el éxito del proyecto. Por ejemplo, si el proyecto es acerca de clientes (el objeto de estudio es el cliente) y se desea obtener un modelo de score para predecir la probabilidad de cesación de pagos, primero habrá que definir qué significa cesación de pagos. ¿Un cliente que no paga sus cuotas por un período de 2 meses debe considerarse moroso? ¿O deben pasar 3 meses?

En el caso de predecir riesgo de fuga de clientes (attrition) es similar. ¿Cuántos meses de inactividad debo tomar para considerar que perdí el cliente? ¿Qué significa inactividad?

3. Fijar tiempo histórico, presente y futuro

Cuando se trabaja con datos transaccionales existe una línea de tiempo que hay que considerar. Cuando se arma un modelo, uno conoce el pasado, el presente y el futuro. Cuando el modelo se pone en producción, sólo se conocerá el pasado y el presente.

Definimos el tiempo presente como cualquier punto en la línea de tiempo, aunque dependiendo de dónde lo ubicamos, existirá o no el tiempo pasado o futuro.

El tiempo pasado es el período que está antes (temporalmente) que el presente. Normalmente un modelo tiene en cuenta sólo unos meses de tiempo pasado. Por ejemplo, se podría definir como tiempo pasado los 12 meses anteriores al tiempo presente.

En muchos casos es útil definir varios presentes (y por lo tanto, varios tiempos pasados). Un ejemplo aclarará este tema.

Supongamos que deseamos armar un modelo de riesgo crediticio y la base de datos contiene información acerca de cada transacción que realizó cada cliente durante los últimos 24 meses. El siguiente gráfico representa algunos clientes durante estos 24 meses de historia. Como asumimos que la base de datos histórica es nueva (recién armada), ponemos la marca HOY a las transacciones más recientes, y por supuesto no tenemos datos del futuro.

Las flechas azules indican clientes que nunca entraron en mora. Las rojas indican clientes morosos. Existirán clientes que comenzaron su crédito hace 24 meses y aún continúan sin ser morosos (flechas azules que van desde el comienzo hasta HOY). Otros clientes que tomaron sus créditos hace menos de 24 meses y aún continúan sin ser morosos (azules que no empiezan desde el comienzo pero llegan hasta HOY). Finalmente clientes que alguna vez se convirtieron en morosos. Empiezan en cualquier momento (como los azules), pero normalmente no llegan hasta HOY porque dejaron de pagar sus cuotas en la fecha a la que llega la flecha roja. O sea, la flecha roja indica el último mes en que el cliente pagó su cuota.

Para el caso de los clientes morosos el tiempo presente será el punto en que es declarado moroso, o sea donde llega la flecha roja. Como cada cliente moroso deja de pagar en cualquier momento dentro de los 24 meses de historia, entonces tendremos distintos tiempos presentes para estos clientes.

Con respecto a los clientes que nunca entraron en mora, si bien por simplicidad se podría tomar siempre los datos desde la última fecha (HOY), es conveniente que se tomen puntos al azar en toda la historia para obtener mayor representatividad.

La primera flecha roja no parece contener tiempo pasado suficiente, así que este cliente podría dejarse de lado.

Las flechas azules, representando clientes vigentes, tienen sus tiempos presentes tomados al azar.

4. Agregar variables acerca de atributos del objeto de estudio

Este tipo de variables se refieren a diferentes atributos que el objeto de estudio tenía en el tiempo histórico. En el caso de clientes se podrían tomar variables demográficas, ratios (por ejemplo, valor de la cuota con respecto al sueldo), etc.. En caso de productos las variables podrían ser diferentes características, clase de producto, precios relativos, etc.

5. Agregar variables de comportamiento

Estas variables deben ser calculadas para el tiempo pasado. Normalmente se usan promedios, tendencias, variabilidad, máximos, mínimos, etc. Muchas veces es conveniente calcular distintas variables considerando diferentes períodos. Por ejemplo, si el tiempo histórico es de 12 meses, se podrían generar variables promedio de 3, 6 y 12 meses.

Finalmente, existen dos puntos importantes a considerar:

  1. Verificar que la variable OP (la variable dependiente) se refiera al tiempo futuro y no se solape con el pasado.
  2. Verificar que las variables IP (variables independientes) no utilicen información que no estará disponible cuando el modelo se ponga en producción

La tabla final contendrá tantas filas como objetos de análisis existen y tantas columnas como variables del objeto. Ya que normalmente la cantidad de variables que contendrá la tabla es muy grande (normalmente más de 100), habrá que seleccionar aquellas con mayor información acerca de la OP antes de hacer el modelo.

En caso de usar Powerhouse, la selección de variables puede dar una pista importante si se violaron alguno de los dos puntos anteriores. ¿Cómo darse cuenta? Simple, si aparece una primera variable con enorme cantidad de información acerca de la OP (por ejemplo, un 70%) es probable que esta variable esté usando información que no estará disponible cuando el modelo esté en producción o que el período usado para calcular la OP se solape con el pasado.

miércoles, 14 de noviembre de 2007

¿Cuántos datos necesito para obtener un buen modelo?

Esta es una pregunta que cualquier que haya trabajado en Data Mining se ha hecho alguna vez y la respuesta es las misma en todos los casos: depende de la naturaleza de los datos.

A fin de entender por qué la cantidad de datos necesaria para obtener un buen modelo depende de los datos analizaremos detalladamente qué representa un modelo de predicción, aunque la misma idea es válida para un modelo de explicación (clustering).

Supongamos que queremos analizar diferentes características de automóviles. La industria automotriz puede ser considerada como un sistema que va generando distintas marcas y modelos. Una vez que elegimos qué atributos comparar, podremos ir armando una tabla de datos con una fila por vehículo y una variable por atributo.

Una manera de analizar estos datos es a través de lo que se llama un espacio de estados. Comencemos con un ejemplo simple. Supongamos que sólo decidimos medir dos atributos: la cilindrada y la potencia. Si dibujamos un espacio de dos dimensiones (un plano) y a cada dimensión le asignamos una variable, obtenemos el espacio de estados. La combinación de cada par de valores representada por un punto en el plano es el estado para ese automóvil

La distribución de los puntos en el plano adquiere una determinada forma dada por el tipo de relación entre las variables. Podríamos suponer que la verdadera distribución es una línea en el plano que puede ser inferida en base a los puntos. O sea, estamos asumiendo que la forma en que se distribuyen los puntos debería ser una línea pero la representación que obtenemos es algo difusa. Si en vez de usar sólo dos variables hubiéramos usado tres, el espacio de estado tendría 3 dimensiones y la forma de la distribución podría ser un cuerpo con volumen o un plano, probablemente curvado, en un espacio de 3D. Si usáramos más de 3 variables, ya no podríamos visualizar el espacio pero la idea sigue siendo la misma: la nube de puntos (estados) representaría en forma difusa un cuerpo hiperdimensional. A este cuerpo se lo llama manifold.

Un modelo de predicción sobre estos datos debe contener un mapa que relacione cada zona del manifold con un valor de la variable dependiente. La forma que adquiere el mapa depende del tipo de herramienta usada, puede ser una función (lineal o no), un conjunto de reglas, un gráfico, etc, pero lo importante es que el modelo es un mapa, pero hay que recordar que el mapa no es el territorio. Dicho de otra forma, el mapa podría no ser perfecto, y generalmente no lo es por varias razones.

La nube de puntos nos da una idea del verdadero manifold, pero normalmente es imposible conocerlo. Sólo podemos inferir cómo debería serlo basándonos en los puntos. Cuánto más cantidad de puntos tengamos a disposición, más fiel será nuestra representación del manifold.

Si no tenemos suficientes puntos, el manifold tendrá muchas zonas vacías cuya forma deberá ser inferida corriendo el riesgo de cometer errores. El manifold podría tener cualquier forma, desde muy simple hasta muy complejo. Cuánto más complejo sea, más necesidad de puntos tendremos para representar lo mejor posible su verdadera forma.

El párrafo anterior sugiere que la cantidad de filas, o lo que es lo mismo, la cantidad de puntos del manifold, necesarias para tener una buena representación depende de la cantidad de variables y de la complejidad de las relaciones entre estas variables. ¿Por qué?

Supongamos un manifold simple formado por dos variables. ¿Cuántos puntos serán necesarios para tener una idea más o menos clara del mismo? ¿Son suficientes 100? ¿o se necesitan 1000? Supongamos que intuitivamente creemos que con 100 puntos alcanza (el manifold del gráfico antrior está formado por 400 puntos). Si agregamos una nueva variable, el espacio pasa a ser de 3D y el manifold pasará de ser una línea a ser un plano. Aún continuando con la suposición de que el manifold es simple, serán necesarios más puntos para obtener una buena definición de un plano (curvado) que de una línea (curvada). Esta es la razón de por qué para realizar un buen modelo generalmente se necesitan más casos (filas) cuando la cantidad de variables se incrementa. De hecho, para obtener una buena representación del manifold con 20 o 30 variables podrían ser necesarias tantos casos que no sería posible obtenerlos.

Por otro lado, cuánto más compleja sea la relación entre las variables, más complejo será el manifold y por lo tanto mayor cantidad de puntos, o casos se necesitarán para crear un buen modelo.

Estimación de la cantidad de datos necesarios

Una manera de estimar los datos necesarios para tener una buena representación del manifold es ir construyendo un gráfico de la distribución de los datos. Supongamos que empezamos construyendo la distribución con muy pocos datos. Luego agregamos varios datos más y volvemos a crear otro gráfico con la distribución. Es probable que ambas distribuciones no sean muy parecidas, pero a medida que se agreguen más valores, la forma de la distribución irá convergiendo a la distribución de la población.

Supongamos que tenemos una distribución construida con n casos. Luego agregamos m casos más y volvemos a construir la distribución. Si ambas distribuciones no cambian demasiado, podremos asumir que la muestra de n casos ha capturado la distribución de la población.

Los siguientes gráficos muestran cómo va variando la distribución a medida que se agregan datos. El primer gráfico está construido con 20 casos, el segundo con 40 y el tercero con 100. En cada caso se acompaña la distribución de la población para comparar cómo la distribución de la muestra se va acercando a la de la población a medida que crece su tamaño.

Distribución con 20 casos

Distribución con 40 casos

Distribución con 100 casos

Las distribuciones anteriores fueron construidas en base a una sola variable. Cuando existen más de una variable, se puede usar el mismo procedimiento, teniendo en cuenta que ahora la distribución ya no será en un plano sino en un espacio de 3 o más dimensiones. Por ejemplo, el siguiente gráfico muestra la distribución conjunta de dos variables

Tomando muestras al azar cada vez mayores se puede encontrar el tamaño mínimo tal que tomando una muestra más grande, la forma de la distribución no se modifique significativamente.

Este tamaño mínimo, es la cantidad de datos que se necesitará para crear un buen modelo sobre esos datos con esas variables.

Powerhouse va calculando la probabilidad de contar con una muestra que tenga una distribición representativa de la población a medida que agrega variables en una selección de las mejores variables. El proceso de selección para automáticamente cuando la cantidad de información que aporta una nueva variable no justifica la pérdida de representatividad de la muestra.

Este método ha demostrado ser muy confiable y permite generar modelos con rendimientos muy similares entre los datos de entrenamiento y los de prueba, aumentando así la probabilidad de que el modelo funcione correctamente cuando se ponga en producción.

viernes, 9 de noviembre de 2007

Información, incertidumbre y sorpresa

Usamos la palabra información muy frecuentemente, sobre todo cuando nos referimos a Data Mining. Decimos que una base de datos contiene información y que con algoritmos apropiados es posible obtenerla. Pero, ¿qué es la información?

Definir información en un sentido amplio puede llegar a ser una tarea muy complicada, así que sólo me referiré al concepto de información desde el punto de vista de la Teoría de la Información.

La información está relacionada con el grado de incertidumbre acerca de un mensaje que recibiremos. A mayor incertidumbre, mayor información contendrá la fuente de mensajes. El lanzamiento de una moneda contiene dos posibles mensajes, cara y cruz. En cambio el lanzamiento de un dado tiene 6 posibles resultados, con lo que existirán 6 posibles mensajes para indicar el resultado. El lanzamiento de un dado contiene mayor información que el de una moneda.

El grado de incertidumbre, o lo que es lo mismo, la información, se mide por medio de la entropía y su unidad es el bit. Una fuente con dos posibles mensajes tiene 1 bit de información. Si la cantidad de mensajes se duplica, la cantidad de bits se duplica. O sea una fuente con 4 mensajes posibles tendrá 2 bits. En general y siempre suponiendo que todos los mensajes tienen igual probabilidad de aparecer, la cantidad de bits viene dada por:

Cantidad de información en bits = log2(número de posibles mensajes)

Así la cantidad de información que contiene el lanzamiento de un dado está dada por H, la entropía de una fuente de información con 6 mensajes posibles:

H = log2(6) = 2.58 bits

Un mensaje contiene información porque reduce la incertidumbre. Antes de tirar el dado existe una incertidumbre de 2.58 bits. Una vez recibido el mensaje (el mensaje es el número que salió), la incertidumbre se reduce a 0 bits, así que el mensaje contiene 2.58 bits de información.

Cuando la probabilidad de recibir cada mensaje no es la misma para todos, el cálculo de la cantidad de información que contiene una fuente debe tener en cuenta la probabilidad de cada mensaje.

Supongamos que la fuente de información está compuesta por dos dados y los mensajes que envía es la suma de los mismos. Existen 11 posibles mensajes dados por la suma 1+1, 1+2, ..., 6+6

El mensaje más frecuente es la suma 7 y los menos frecuentes son la suma 2 y 12. La entropía total del sistema es 3.27 bits.

La columna log2(1/p) contiene la cantidad de información que lleva cada mensaje. Vemos que los mensajes menos frecuentes son los que mayor cantidad de información llevan. Sacar un 1 en cada dado lleva 5.17 bits de información, así como también sacar dos 6. Por otro lado, un mensaje cuya suma sea 7 lleva 2.58 bits de información.

Dicho de otro modo, a mayor sorpresa, mayor información llevará el mensaje.

Resumiendo, la información está relacionada con el grado de incertidumbre que tenga una fuente de información. Además, cada mensaje que envíe esta fuente llevará una cantidad de información relacionada con el grado de sorpresa que cause. A mayor sorpresa, mayor información.

miércoles, 7 de noviembre de 2007

¿Tuvo éxito la última campaña de marketing? Regresión a la media

Una empresa decidió mejorar la rentabilidad de un segmento de clientes con el peor rendimiento mediante una campaña de marketing realizada exclusivamente sobre estos clientes. Para evaluar el éxito de la campaña se midió la rentabilidad de este grupo de clientes en un período y luego volvió a medirla en otro posterior. La diferencia fue notable. Este grupo tuvo un incremento en su rentabilidad lo suficientemente alto como para que la campaña haya sido considerada como un éxito total.

La pregunta es ¿realmente la campaña fue un éxito?

Existe un fenómeno llamado regresión a la media que hay que considerar antes de decidir si la campaña tuvo el supuesto éxito.

La regresión a la media se puede definir como la tendencia de los valores extremos a acercarse a los promedios a medida que pasa el tiempo. La razón está en el azar. Cuando se mide alguna propiedad, parte de los casos serán extremos debidos al azar. Si estos casos son seleccionados y luego de un cierto período se vuelve a medir la misma propiedad sobre estos mismos casos, es probable que muchos de ellos ya no sean extremos.

La distribución de la rentabilidad de los clientes en un determinado período está dada, en parte por lo que podríamos llamar la verdadera distribución que tiene que ver con las tendencias generales de compra de los clientes a largo plazo, y en parte por el azar. Un cliente podría históricamente comprar 5 productos al año, pero sólo por azar no haber comprado nada durante el período de medición, con lo que la rentabilidad sería 0 o negativa (si es que mantener el cliente implica un costo, como usualmente sucede). Durante el siguiente período, la probabilidad de que los clientes seleccionados previamente compren algún producto es mayor que cero, con lo que la rentabilidad será necesariamente mayor. Y todo esto sucede naturalmente sin que se haya llevado a cabo ningún tipo de acción sobre estos clientes.

El haber seleccionado los clientes con menor rentabilidad y luego volver a medirla sobre los mismos clientes es lo que produce este efecto. Esto no quiere decir que para la siguiente medición se deba seleccionar nuevamente el grupo de clientes con menor rentabilidad, ya que lo que se desea es hacer un seguimiento a los clientes seleccionados sólo una vez. Lo que se debe hacer es tener en cuenta el efecto de regresión a la media para descontarlo de las mediciones realizadas en el siguiente período luego de haber realizado la campaña.

Una manera de medir este efecto es mediante la correlación lineal entre las mediciones de dos períodos anteriores. Si la correlación es r, entonces se debe esperar un corrimiento hacia la media dado por

Regresión a la media en % = 100 * (1 – r)

Por ejemplo, si la rentabilidad promedio de todos los clientes es de 100$, la rentabilidad de los clientes seleccionados es de 30$ y la correlación entre dos períodos anteriores es de 0.96, entonces se debería esperar una regresión a la media de

Regresión a la media = 100 * (1 – 0.96) = 4%

La distancia entre la rentabilidad promedio de todos los clientes y la rentabilidad promedio de los clientes seleccionados es de 100$ - 30$ = 70$

Así que sólo por el efecto de regresión a la media se espera que los clientes mejoren un 4% de esta diferencia, 4% de 70$ igual a 2.8$, o sea, se esperaría medir una rentabilidad promedio de 30$ + 2.8$ = 32.8$ durante el siguiente período.

Si luego de la campaña de marketing se hubiera medido un incremento del 9% en la rentabilidad de los clientes, se podría asumir que la misma no tuvo efecto sobre los clientes, ya que esta diferencia se puede explicar completamente mediante la regresión a la media.

Para más detalles de este fenómeno se puede consultar el libro de Dorian Pyle, “Business Modeling and Data Mining”

jueves, 1 de noviembre de 2007

Un ejemplo con datos No Balanceados

En un artículo anterior comenté que en Powerhouse no es necesario balancear los datos. De hecho podría llegar a ser contraproducente. En este artículo mostraré un ejemplo que con muchas herramientas de Data Mining necesitaría un ajuste en los datos a fin de balancear la variable a predecir.

Los datos son acerca de una campaña de marketing para la venta de tarjetas de crédito. Existen >11.000 casos, 39 variables independientes y una variable dependiente que es un flag indicando si el cliente contactado con la oferta de la tarjeta, la aceptó o no.

La particularidad de estos datos es que la variable dependiente tiene muy pocas respuestas positivas, alrededor de 1.5%, como puede verse en el gráfico o en la tabla. Esta clase de distribución en datos de campañas de marketing no es inusual y complica la creación de un modelo de predicción en más de una forma.


Si la herramienta de modelado necesita trabajar con datos balanceados (por ejemplo una red neuronal) hay que seleccionar parte de los datos para lograr una distribución más equitativa con la consecuente disminución de la cantidad de datos disponibles para realizar el modelo. Otra alternativa es generar nuevos datos artificiales con una distribución similar a los casos poco representados, aunque este último método no es recomendado.

Powerhouse puede trabajar con los datos tal como están. Al cargar la tabla con los datos, se dejó de lado un 40% de casos para verificar el modelo.

El primer paso es crear una selección de variables

Se seleccionaron 4 variables que llevan la mayor información libre de ruido y con una buena probabilidad de ser una muestra representativa de la población. Estas variables llevan el 75.07% de la información necesaria para predecir la variable independiente.

El siguiente paso es construir un modelo OPFIT ya que es el que normalmente obtiene los mejores resultados. La siguiente ventana muestra el desempeño del modelo

El KS es 40.7 sobre los datos de entrenamiento (trainining set) y 36.6 sobre los de prueba (test set). Considerando que los datos de prueba no se usan en ningún momento para crear el modelo, este sería el valor aproximado de KS que debería esperarse cuando el modelo se ponga en producción.

El valor del R2 no parece ser muy bueno, pero esto es debido a que este parámetro de medición no es adecuado para este tipo de problemas.

La curva de Lift muestra que sobre los datos de prueba, con un 20% de los clientes se pueden conseguir alrededor de un 50% de clientes que aceptaron la oferta. Para tener datos más precisos se puede consultar la tabla de Lift que muestra que efectivamente el valor es 50% o un lift de 2.5

Ya que la variable a predecir está tan desequilabrada (1.45%/98.55% en este caso), vamos a probar de cargar un 75% de los datos para realizar el modelo (Training set) y el 25% restante para prueba y compararemos las variables seleccionadas y el rendimiento de los modelos.

La ganancia de información es algo menor pero mejora la confianza de tener una muestra representativa, lo que podría mejorar el desempeño del modelo en los datos de prueba (y por consiguiente con datos nuevos). Las variables seleccionadas son las mismas. El modelo tiene un KS de 41.5 y 38 sobre los datos de entrenamiento y prueba. Se puede notar que la brecha entre ambas tablas disminuyó (antes era un poco más de 4 puntos y ahora es de 3.5). La tabla de Lift muestra un desempeño algo superior al anterior

Con Powerhouse existe la posibilidad de realizar un nuevo modelo usando todos los datos disponibles ya que casi no existe riesgo de sobre-entrenamiento, sobre todo una vez que se comprobó que el modelo funciona bien con datos de prueba.

Es más, en este ejercicio pudimos ver que aumentando la cantidad de datos para el entrenamiento, el desempeño del modelo sobre los datos de pruebas fue más cercano al desempeño sobre los datos de entrenamiento.