Mostrando entradas con la etiqueta Data Mining. Mostrar todas las entradas
Mostrando entradas con la etiqueta Data Mining. Mostrar todas las entradas

viernes, 2 de septiembre de 2011

Clustering...segmentar?

El proceso de segmentar implica varias cosas, una de ellas (la principal creo yo) es saber que queremos segmentar.
Imaginar cual sería el resultado final de la segmentación sería una práctica, lamentablemente no es común.
Dejando de lado a la imaginación, quisiera mencionar dentro de las técnicas de Data Mining particularmente a las técnicas de clustering, las cuales nos pueden dar una mano al momento de segmentar un set de datos.
Quiero abarcar este tema, pero sepan que la segmentación no depende solo de estas técnicas, depende del tipo de segmentación que queramos hacer (tema aparte).
Dentro de las técnicas de clustering los algoritmos más usados podrían ser:
 - K-means
 - Kohonen
 - Redes Bayesianas
 - Y otros más.
He llegado a usar las 2 primeras, la tercera opción aún no ha sido explorada personalmente, leí un poco a cerca de segmentación con estos algoritmos, más de ahí no pasé.
K-means es un algoritmo que busca similitudes y diferencias entre los individuos pertenecientes a un dataset (con individuos no solo me refiero a personas), la búsqueda la realiza de acuerdo a la distancia que hay entre uno y otro (generalmente se usa la distancia euclidiana). El objetivo de este algoritmo es encontrar los individuos mas parecidos entre si (de cierto modo los podemos llamar cercanos, pero no se confundan con el algoritmo del vecino más cercano, que no viene al caso) y a la vez separarlos de aquellos diferentes a los mismos.
Como como como? (aquí se me pita la sonrisa en la cara porque no se como ponerlo en palabras sencillas)
Es decir el algoritmo a agrupa individuos que se parecen mucho y los separa de los otros grupos que a su vez se parecen mucho entre si pero son distintos de los otros grupos.
Graficamente....
KOHONEN (SOM) también busca el mismo objetivo, pero toma un camino diferente, su técnica es la de redes neuronales no supervisadas (no voy a tocar este tema hasta tenerlo más claro).
En si podríamos llamar al clustering como el arte de saber donde poner que...
Que recomendaciones pueden surgir a partir de este tema:
  • Es conveniente usar variables continuas, las variables discretas o nominales no son muy útiles al momento de hacer cálculos, además estos algoritmos cuando están configurados para trabajar con estas variables suelen crear n-1 variables dummies cuyo valor es 0 o 1, valor que permite calcular una distancia mentirosa que podría afectar al modelo (igualmente todo es relativo siempre hay una ocasión donde recomendar lo in-recomendable).
  • Si tenemos de antemano una clasificación manual, esta nos puede servir como parámetro inicial, resulta más fácil encontrar similitudes y diferencias entre personas del mismo rango de edad...por ejemplo.
  • Usar variables de comportamiento (transaccionales) para realizar la clasificación y variables demográficas para explicar el resultado.
  • Verificar que el dataset no tenga demasiados valores perdidos, eso introduce un toque de irrealidad al modelo, en su defecto podemos reemplazar los valores perdidos con algo significativo, pero cuidado con esto no siempre es una buena idea, muchas veces será preferible descartar las variables.
Imaginemos que en nuestro dataset tenemos sets de variables correspondientes a 2 productos para cada individuo, el 95% de los individuos tiene el producto 1 (por ende valores en el set de variables correspondiente a este) y solamente el 11% tiene el producto 2 (es decir no tendríamos valores en el 89% de los individuos en el set de variables del producto 2). Algo así como el gráfico que viene a continuación:
 Valores perdidos
Los espacios en blanco son variables sin valores, como en cualquier técnica de Data Mining, si una variable tiene un porcentaje de valores perdidos superior a un rango definido se la elimina, pero en este caso sería un set de variables (podrían ser cientos), quizás queremos algo representativo de estas variables.

jueves, 14 de abril de 2011

Usos de las Redes Bayesianas

No quería dejar pasar, en la entrada anterior recibí un comentario que complementa mis ideas, el cual lo uso como fuente de esta entrada.

Las redes Bayesianas se pueden usar para:
  • Aprendizaje no supervisado, descubrir la relación directa entre todas las variables
  • Aprendizaje supervizado, scoring usando una variable target
  • Aprendizaje semi-supervisado, aprendizaje no supervisado con una variable como semilla
  • Clustering
  • Clustering de variables
  • Modelos probabilísticos de ecuaciones estructurales
Quiero agradecer a Lionel Jouffe, quien complementó mi entrada anterior con esta información.

miércoles, 16 de marzo de 2011

Redes Bayesianas



El post de esta tarde va acompañado de una pequeña descripción sobre Redes Bayesianas (también conocidas como redes de creencia).

En sí ¿Qué es una red Bayesiana?
Es un modelo que se genera a partir de las probabilidades, particularmente me interesa conocer como funcionan para aplicarlo en algún proyecto de Minería de Datos, por ahora he podido rescatar lo siguiente:

Las Redes Bayesianas son grafos acíclicos dirigidos, cuyos nodos son variables aleatorias y los arcos representan la dependencia que existe entre ellos, los cálculos básicos se realizan sobre cada uno de sus nodos, dada la evidencia que ha sido observaba hasta el momento.



Las redes bayesianas demandan mucho esfuerzo computacional, dependiendo de la red, el algoritmo usado y el cuidado tomado en la implementación; redes pequeñas pueden tomar mucho tiempo y redes de miles de nodos se pueden resolver en un tiempo aceptable.

Pero, ¿Qué es un grafo?

Un grafo, se representa como un conjunto de nodos unidos por aristas, estos nos permiten estudiar las relaciones que existen entre variables que interactúan entre sí.

Llevando a tierra estos datos encontrados, se me viene a la mente que son modelos fácilmente interpretables, por su naturaleza gráfica, internamente la matemática que usan se reduce a cálculo probabilístico, y los resultados de estos modelos serán por ende una probabilidad.

¿En que casos usar una red bayesiana?
Ese es un tema que implicaría grandes discusiones, resumamos la situación a que es un modelo de clasificación, por ende sirve también como un modelo predictivo.

Una observación que se me viene a la mente es que debe trabajar mejor con variables discretas que con variables contínuas, ¿la razón? su naturaleza probabiliística.

Imagino a las redes bayesianas como una infraestructura adecuada en los problemas que implican redes sociales.

Espero encontrarme en mi camino de la minería de datos con una situación para aplicar el tema, quien sabe pueda profundizar y exponer datos más interesantes.

jueves, 17 de septiembre de 2009

Los primeros pasos, recolectando información

Mi primer objetivo es armar un DataWarehouse con logs de ldap y otros más que me puedan ser de utilidad, es decir aquellos logs donde pueda encontrar algo que hizo que ldap falle.
Pero centrémonos en el problema.
Hoy tengo un archivo de prueba el cual contiene cerca de 4'000.000 de líneas con actividad de ldap y quiero subirlo en una base de datos en un formato que sea útil, o humanamente leíble (cat logs > /dev/humano) y además que no ocupe tanto espacio, todos por el momento voy a tratar cada problema por separado.
Mi primer intento fallido fue al realizar un script (bash) para separar los campos y luego subirloa a la base de datos o al menos testear como va esto.
Por que intento fallido.....
Dejé corriendo el script y al volver un día después no había procesado ni el 3% del archivo, cuestión por la cual había que modificar la idea.
Continué con un par de intentos modificando el script pero no fue lo que necesitaba.
Hoy me encuentro aprendiendo python (por recomendaciones) y voy en mi nuevo test con pocos datos, al parecer el tiempo puede bajar en relación a mi prueba anterior exponencialmente, pero aún no la concluyo.
Proximamente publicaré el script para comentarios y/o/u sugerencias, al momento hice una prueba inicial con tiempos alentadores

Análisis de logs

Me había planteado realizar un análisis de logs, y he comenzado con armar un dataset que me sirva para detectar alguna anomalía.
Les cuento el back-stage de esto:
Tengo servidores ldap que interactuan con samba, eventualmente estos también lo hacen con otras aplicaciones (que son la minoría).
El log donde ldap (openLdap en mi caso) guarda sus actividades es syslog, en ocasiones me he encontrado con que este llega a tener 7'000.000 (aprox) diarias de líneas, identificar algo raro de entre lleva su tiempo, entonces he decidido usar Data Mining para identificar anomalías.

lunes, 20 de abril de 2009

Data Mining en tiempos de crisis

Bueno al igual que el resto del mundo a mis oídos también han llegado noticias de la crisis mundial, he escuchado a muchos y he puesto atención a pocos, y de igual manera que muchos yo también tengo que decir que las crisis son creadoras de oportunidades, oportunidades que no existirían de no ser por nuestros gurus modernos.
En si hoy escribo acá para dar mi punto de vista de por que Data Mining puede ser una oportunidad en esta crisis.
Grandes empresas (multinacionales sobre todo) han recortado muchos gastos para poder sobrevivir a la crisis y muchas consultoras están a la espera de que estas se recuperen para tener a quien brindar sus servicios, por otro lado empresas pequeñas las cuales por su localismo y pequeño tamaño no han visto aun la diferencia de una crisis en pleno, esto nos pone sobre el tapete 2 escenarios muy marcados.
En el caso de las grandes empresas utilizar Data Mining para optimizar sus procesos y reducir gastos puede ser significativo, lo que les llevaría a un mejor desempeño pero posiblemente no sea lo suficiente, grandes proyectos de les pueden ahorra unos cuantos millones de dolares mas puede llegar a ser un porcentaje muy bajo para sus expectativas, en este escenario todo dependerá de quien tenga que tomar la decisión de invertir o no en un proyecto de este tipo.
En el segundo caso, se nos presenta el reto de crecer junto a empresas con recursos limitados, los cuales pueden significar un reto al momento de tomar decisiones, si un reto, el reto de hacer las cosas justas con lo justo, que quiero decir, supongamos que una empresa necesita hacer una campaña de marketing pero su presupuesto es de x monedas (x es pequeño), las opciones son pocas por lo general y si quien encabeza el departamento que tomara una decisión no tiene visión puede ser que termine por invertir el recortado presupuesto en una campana no adecuada, pero el Data Mining podría ayudar en este caso a puntualizar y elegir de una manera optima a donde apuntar, nos puede ayudar a seleccionar los clientes mejor rankeados en un análisis que nos diga quien esta interesado en nuestro producto, o nos puede ayudar a elegir que campaña seria la mejor aceptada, y si a todo esto le ponemos los costos que implica cada cosa podemos tener resultados muy exitosos con presupuestos bajos.
Que métodos de Data Minig a utilizar? los que resulten mejores acorde al análisis, en ese punto sigo investigando.

domingo, 23 de noviembre de 2008

Data Mining

Hoy me pregunto que vendrá mañana, así como muchos lo habrán hecho ayer...
Ahora que el Data Mining es algo que comienza a sonar fuerte en el mundo de los negocios, pese a la existencia de estudios y algoritmos pensados desde los años 50 o algo así.
Como siempre la tecnología llega con delay a Latinoamérica y acá comenzamos a ver la existencia de estas opciones, las empresas aún no la conocen y pocas han oído de su existencia, podrá convertirse en moda?
Cuántos libros en español (buenos) podemos encontrar acerca del tema? Si bien el idioma no es una barrera, nos da una idea de la fuerza que toman las cosas.
Me he propuesto estudiar el tema (Data Mining - Minería de Datos) y como todo comienzo viene acompañado de muchas interrogantes, he conseguido material para informarme, y ahora comienzo a cuestionar lo leído, creo que no podemos abarcar el tema de una manera muy general, hay muchos modelos y técnicas como para dominarlas todas, hay un montón de conocimiento nuevo no se si el tiempo alcance para ser un experto en "Data Mining" como un todo, podríamos dedicarnos a un solo tema y profundizar, pero hasta dónde?
Saber manejar un software solamente, saber la lógica con la que un modelo trabaja, saber en detalle todo lo que un modelo hace, o desarrollar un nuevo modelo? Qué punto es suficiente, qué es lo que queremos hacer, como lo debemos hacer? Es algo muy general.
Qué influye en que modelo a utilizar, qué influye en dedicarse a usar Árboles de Decisión, Redes Neuronales, Algoritmos Genéticos, Redes Bayesianas, Regresiones, SVM?
Al momento comienzo a plantearme estas preguntas, y me propongo a investigar los temas, veamos cómo va todo....