martes, 19 de febrero de 2008

Data Mining en tiempo real


Realmente creo, que una de las mayores aplicaciones de la minería de datos en tiempo real es el mundo online. Hay que ofrecer al cliente, en décimas de segundo, un anuncio, una promoción, etc.. en base a lo que esta consultando o comprando. Dos ejemplos muy famosos:

  • La publicidad contextual de Google. En una página que quieres que tenga este tipo de publicidad, solamente tienes que insertar una llamada a un código de google, pasando muy pocos parámetros, entre ellos tu ID de usuario del servicio.... y en cuestión de 1 o 2 segundos realiza consultas que incluyen:
    • Análisis del idioma de la página, para realizar la publicidad en el mismo idioma.
    • Recorre el texto de toda la página en busca de palabras clave, que son las que los anunciantes han comprado para salir. Aquí hace análisis de cuantas veces ha salido el anunciante, si para la próxima vez saldrá otro, si ha llegado al cupo etc...
    • Diferentes parámetros que el cliente de la página ha indicado, como por ejemplo, que los anuncios nunca pueden ser de este anunciante o de este otro, o que la temática no puede ser una determinada.
  • Las ventas cruzadas de Amazon. Amazon siempre ha sido un referente en Internet a la hora de vender productos. Desde hace mucho tiempo, contextualiza la experiencia del usuario con diferentes técnicas:
    • Venta cruzada. Siempre cuando estas viendo la ficha de un libro te recomienda otro haciendo un pack de precio, con el histórico de libros que otros usuarios se han llevado juntos en el pasado.
    • Oferta personalizada. Si tu has estado viendo un libro de una determinada temática o en el pasado has adquirido un tipo de libro, todos los anuncios que te ofrece la página están personalizados para tus gustos, siendo así inmensamente más efectivos.

En el mundo off-line, ahora mismo recuerdo por ejemplo, los vales descuento o promociones de los supermercados Caprabo. Cuando realizas una compra, pasas tu tarjeta cliente (hace muchos años que la tienen), y en ese mismo momento, una pequeña impresora que tienen, imprime los descuentos y promociones basándose en tu historial de compras y en la propia compra realizada en ese momento.

Analizando un poco lo dicho, veamos que implica todo ello:

  • Implicaciones tecnológicas. A la vista está, que hace falta mayor logística para dar cabida al DM en tiempo real. Si el Caprabo ya no podía imprimir con anterioridad los cupones, si no que tuvo que poner impresoras en todas las cajas de cada supermercado. De igual forma tanto google como Amazon, tienen unas súper-máquinas, que indexan contenido en cuestión de décimas de segundo. Está claro que este sistema requiere una estructura mucho más compleja y cara.
  • Rendimiento: Inmediatez para todo. Necesitamos que el sistema analice lo que pasa en ese momento (página web, compra) y nos diga que es lo que más interesa promocionar a la empresa.
  • Impacto con otras aplicaciones: El hecho de realizar DM en tiempo real, hace que posteriormente haya que realizar un análisis de la efectividad del mismo, para poder ir ajustando algunos parámetros, por tanto todas estas aplicaciones requieren un buen trabajo de análisis posterior para que tengan efectividad y se puede hacer un análisis del retorno de la inversión.
  • Requerimientos: De entrada necesitamos un historial de clientes y transacciones con unos identificadores (usuarios web, tarjetas cliente). A partir de ahí realizar un primer análisis de minería de datos y ver que variables nos interesan para estos casos. Quizás tengamos que variar nuestros sistemas para recoger nuevas variables o hacerlo de diferente manera. Es evidente que todo esto requiere el apoyo de una gran BD rapidísima, con acceso directo desde todos los puntos de cliente. Como hemos visto, el sistema también requiere dinamizar la salida de la información. Si antes podíamos dar vales y promociones “estáticas”, ahora hemos de buscar alternativas, como el hecho de poner impresoras o paginas que se construyen en ese mismo instante.

sábado, 16 de febrero de 2008

Conectar Weka con MySQL



A mi me costo un poco.. y conectando los puntos hacia atrás, como diría Steve Jobs, me parece fácil... pero por si alguien le interesa, no esta de más explicarlo.
De entrada necesitamos tener instalado Weka y MySQL. Si no tenéis la base de datos, os recomiendo un software gratuito que te instala PHP, Apache y MySQL funcionando perfectamente en windows, se llama WAMP.
Ahora vamos a la página de MySQL y bajamos el driver jdbc connector. Nos viene un zip con un archivo jar dentro que es el que ponemos en el mismo directorio que el programa Weka. Allí encontraremos un fichero que se llama Runweka.ini que habrá que editar. Se encuentra en ese fichero una linea (para el final) haciendo referencia al classpath (ruta con las clases necesarias de un programa java) y allí copiamos el nombre de nuestro jar como sigue:

cp=%CLASSPATH%;mysql-connector-java-5.1.5-bin.jar


Después ya podemos arrancar Weka y seleccionar "Open DB...". Tenemos varios parámetros aquí. La URL de Base de Datos hemos de poner la dirección de acceso a nuestro MySQL. También nos pide usuario y password y que consulta queremos hacer. La consulta es un SELECT cualquiera. Adjunto imagen de como me quedo a mi, teniendo en MySQL una base de datos llamada banco, con un usuario banco y dentro de esa DB una tabla que se llamaba "clientes".



A partir de ahí, el único problema que tuve fue con los tipos de datos. No utilicéis tipo INT para los numéricos, sino DECIMAL. Por lo demás, como una seda.

lunes, 11 de febrero de 2008

Herramienta de Data Mining: WEKA


He realizado la actividad final del módulo en base a una herramienta open source de la suite de Business Intelligence de Pentaho, Weka.

Al principio parece una herramienta "simplona"... una foto de un dulce pajarillo y cuatro botones, parece que no pueden dar mucho de si... pero nada más lejos de la realidad.

Weka se denomina a si mismo un conjunto de librerías para tareas de minería de datos. Las librerías pueden ser llamadas desde la interficie de weka o desde tus propias clases Java. Weka contiene herramientas para diferentes tareas básicas:
  • Preprocess: Multitud de herramientas para el preprocesamiento de los datos (como por ejemplo discretización de variables).
  • Classify: Algoritmos de clasificación, distribuidos por paquetes, como por ejemplo ID3 o C4.5
  • Cluster: Diferentes algoritmos de segmentación como el simple k-means.
  • Associate: Algoritmos para encontrar relaciones de asociación entre variables (Apriori entre otros).
  • Select atributtes: Aquí, una vez cargados los datos, Weka es capaz de buscar por nosotros las mejores variables del modelo.
  • Visualize: Herramienta de visualización de datos en los ejes cartesianos, con muchas posibilidades.
Al principio tuve varios problemas de conexión con la Base de datos... después de utilización... pero poco a poco he podido comprender parte de su potencial y me ha parecido una herramienta magnífica. Iré explicando!!

jueves, 7 de febrero de 2008

Actividad final del módulo


Estamos al final del módulo de Data mining y se nos ha planteado una actividad final que me está pareciendo muy interesante... y a la vez me esta dando mucho trabajo!!

Os dejo el enunciado... y dentro de unos días hablaremos de mi solución planteada.

El escenario es, que somos unos analistas CRM de una entidad financiera, donde la tasa de abandono ronda el 18%. El banco quiere abordar el problema desde dos puntos de vista:

  1. Conocer cual es el perfil de los clientes que abandonan la entidad y como ese perfil evoluciona a lo largo del tiempo, desde que entran en la entidad como clientes, hasta que abandonan.
  1. Predecir a corto plazo la propensión de abandono de los clientes, con el fin de poder realizar acciones comerciales y de retención sobre los más propensos.
Tenemos mucho que aprender todavía... no?