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.