2009-05-06 14 views
9

¿Alguien sabe un buen algoritmo para realizar clustering en atributos discretos y continuos? Estoy trabajando en un problema de identificación de un grupo de clientes similares y cada cliente tiene atributos discretos y continuos (tipo de clientes Think, cantidad de ingresos generados por este cliente, ubicación geográfica y etc.)Algoritmo de agrupamiento con atributos discretos y continuos?

Tradicionalmente, algoritmo K-means o EM funcionan para atributos continuos, ¿y si tenemos una mezcla de atributos continuos y discretos?

Respuesta

5

Si mal no recuerdo, entonces el algoritmo COBWEB podría funcionar con atributos discretos.

Y también puede hacer diferentes 'trucos' a los atributos discretos para crear métricas de distancia significativas.

Puede buscar en google para la agrupación de atributos categóricos/discretos, uno de los primeros hits: ROCK: A Robust Clustering Algorithm for Categorical Attributes.

0

También podría mirar affinity propagation como una posible solución. Pero para superar el dilema continuo/discreto, necesita definir una función que valore los estados discretos.

0

En realidad, presentaría pares de atributos discretos a los usuarios y les pediría que definan su proximidad. Usted los presentará con una escala que va desde [sinónimo ... muy extraño] o similar. Habiendo muchas personas haciendo esto, terminarán con una función de proximidad ampliamente aceptada para los valores de los atributos no lineales.

1

R es una gran herramienta para la agrupación en clústeres: el enfoque estándar sería calcular una matriz de diferencias en sus datos mixtos usando daisy, y luego agruparse con esa matriz usando agnes.

El cba module on CRAN incluye una función para agrupar en predictores binarios basados ​​en ROCK.

0

¿Qué tal si transformamos cada uno de sus atributos categóricos en una serie de atributos de indicador binario N-1 (donde N es el número de categorías)? No debe temer la alta dimensionalidad, ya que se puede emplear una representación dispersa (como mahout's SequentialAccessSparseVector). Una vez que lo haga, puede usar un K-means clásico o cualquier otro algoritmo de clúster numérico estándar.

Cuestiones relacionadas