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?

domingo, 27 de enero de 2008

Fases de un proyecto de Minería de datos



Dentro de un proyecto de Data Mining podemos diferenciar las siguientes fases:
  1. Identificación y definición del objetivo de negocio a resolver. Muy importante. La minería de datos no es un fin en si mismo, sin objetivos de negocio no hay proyecto.
  2. Identificación de las fuentes de datos para soportar la resolución de los objetivos y análisis preliminar de la calidad de los datos. Si no tenemos unos datos con la calidad requerida y el formato necesario, nuestro proyecto será un fracaso. Creo que muchas veces se subestima este punto...
  3. Preparación y acondicionamiento de los datos. Una fase crucial, que ocupa un tanto por ciento importante del tiempo del proyecto. Con preparación y acondicionamiento estamos hablando de las estructuras que alimentaran la construcción del modelo. Por ejemplo, si queremos hacer una segmentación de clientes, para ello necesito preparar los datos en formato tabla de clientes, donde cada registro es un cliente con los atributos de modelización en columnas.
  4. Modelización de datos. Aplicando las técnicas de minería de datos, obtenemos el mejor modelo predictivo posible para nuestros objetivos.
  5. Análisis de resultados. Una vez obtenido el modelo, se debe proceder a su validación comprobando que las conclusiones que arroja son válidas y suficientemente satisfactorias. En el caso de haber obtenido varios modelos mediante el uso de distintas técnicas, se deben comparar los modelos en busca de aquel que se ajuste mejor al problema. Si ninguno de los modelos alcanza los resultados esperados, debe alterarse alguno de los pasos anteriores para generar nuevos modelos.
  6. Conclusiones. ¿Se han cumplido las expectativas y los objetivos?
  7. Puesta en producción. No nos podemos quedar con unos simples informes de consultoría o una serie de recomendaciones. Si cogemos los modelos generados y los ponemos en producción de forma efectiva estaremos aprovechando el principal beneficio del Data Mining.

domingo, 20 de enero de 2008

Técnicas de Minería de datos


  • Clustering. Consiste en definir grupos lo más parecido posible y a su vez lo más distinto posible a otros grupos (o clusters). Ejemplo: clientes más rentables, clientes menos rentables.

  • Segmentación. Consiste en la división de la totalidad de los datos, segun determinados criterios. Ejemplo: Dividir los clientes en función de su antiguedad.

  • Clasificación. Consiste en definir una serie de clases, donde poder agrupar los diferentes clientes. Ejemplo: definida unas variables de entrada se produce una determinada salida que clasifica al cliente en un grupo o en otro. Por ejemplo, si la edad esta entre 20 y 40, esta casado y tiene cuenta de ahorro, entonces contrata hipoteca en un 78% de posibilidades.

  • Predicción. Consiste en intentar conocer resultados futuros a partir de modelizar los datos actuales. Ejemplo: Creamos un modelo de variables para saber si el cliente compra o no compra. Aplicamos el modelo a un futuro cliente, y ya podemos predecir si comprará o no.

No se trata de escoger una técnica o otra... mi mucho menos. Cada cosa para lo que está concebida. La minería de datos es, prácticamente, el único proceso analítico que genera nueva información en la capa de acceso. Toda esta información debe ser reintroducida en el entorno para su posterior análisis.

jueves, 17 de enero de 2008

Minería de datos


Muy interesante este apartado del temario... que creo dará para unos cuantos posts. De entrada me quedo con una definición:
Se denomina Minería de datos al conjunto de metodologías, técnicas de modelización matemática y mecanismos de visualización, cuyo objetivo es la extracción de tendencias, patrones y comportamientos subyacentes en grandes volúmenes de datos, y no detectables mediante técnicas de consulta convencionales, con el fin de soportar la toma de decisiones de negocio

Me quedaría con la frase de que un gran numero de analistas y responsables de DWH piensan que hacen minería de datos simplemente porque sus sistemas son muy grandes en cuanto a datos y soportan consultas muy pesadas.