Supongamos un proyecto de Data Mining del área de marketing de una empresa en donde el objetivo es construir un modelo para predecir quién responderá a la oferta de un producto.
Existen distintas maneras de llevar adelante un proyecto de este tipo, una de ellas es realizar una campaña ofertando el producto a una muestra al azar de clientes con el objeto de recabar información que será usada en el proyecto. La idea es usar una muestra que sea lo más pequeña posible pero que contenga la suficiente información para hacer el modelo. Por ejemplo, si la empresa tuviera 100.000 clientes, se podría tomar una muestra al azar de 10.000 para enviarles el folleto. Una vez que pase un tiempo prudencial, se puede armar la tabla con todas las variables disponibles de los clientes de la muestra más una variable que indique si el cliente compró o no el producto. O sea, la variable a predecir será "Compra" cuyos dos únicos valores serán "SI" o "NO".
Depende el tipo de producto, podría ser que el porcentaje de gente que compre el producto sea muy bajo, por ejemplo, sólo el 1%.
Así que la variable "Compra" tendrá la distribución de valores:
Muchas herramientas para construir modelos tienen problemas con este tipo de distribución de la variable a predecir. Por ejemplo, si se entrena una red neuronal con un nodo como Salida (Output) se obtendrá un modelo cuya respuesta será la misma para todos los clientes: "NO". ¿Por qué? Porque los algoritmos de entrenamiento están diseñados para reducir el error. Si la respuesta es para todos los casos "NO", el error que se comete es del 1%, o dicho de otro modo, el modelo acertará el 99% de las veces!
A este tipo de modelo, el que siempre contesta lo mismo para cometer el mínimo error, se lo conoce como modelo naïve.
Lo que se necesita es un modelo que supere el modelo naïve.
Una vía para lograr que la herramienta de modelado no produzca un modelo naïve es balancear los datos, o lo que es lo mismo, modificar la distribución de la variable a predecir para que sea 50%/50%. Una manera de lograr esto es la siguiente:
Seleccionar todas las filas en donde la variable a predecir toma el valor "SI". En nuestro caso hipotético de la campaña de marketing nos quedaríamos con unas 100 filas (el 1% de 10.000). Luego se deben incluir otros 100 casos en los que el cliente no compró el producto ("NO"). Ahora tendremos una tabla de datos en los que la distribución de la variable a predecir es 50%/50%.
Pero estos datos tienen dos problemas: la distribución de la variable a predecir no es real (¡ya lo sabíamos!) y son insuficientes para realizar un buen modelo, al menos en nuestro caso en que sólo conseguimos 200 filas.
¿Cómo solucionamos la falta de datos? Existen dos maneras. Hay herramientas que generan nuevas filas artificiales en las que la variable de salida toma el valor menos representado (en nuestro caso "SI"). No tengo claro la validez de este método y si realmente ayuda. En mi caso particular, hace unos años utilicé esta práctica con redes neuronales y no obtuve ningún beneficio.
La otra solución es aumentar el tamaño de la muestra, pero esto incrementa los costos del proyecto (para tener una muestra representativa de la población, el costo podría aumentar hasta¡ 10 veces!)
¿Qué hacer si la herramienta de Data Mining es Powerhouse? Nada
Una de las grandes ventajas que tiene Powerhouse es que no es necesario (ni aconsejable) balancear los datos. Todas las pruebas realizadas por nosotros y por muchos usuarios de Powerhouse, indicaron que es mejor no balancear que hacerlo.
Suscribirse a:
Enviar comentarios (Atom)
No hay comentarios:
Publicar un comentario