Pregunta

¿Alguien conoce un buen algoritmo para realizar el agrupamiento 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 (piense en el tipo de clientes, la cantidad de ingresos generados por este cliente, ubicación geográfica, etc.)

Tradicionalmente, los algoritmos como K-means o EM funcionan para atributos continuos, ¿qué sucede si tenemos una combinación de atributos continuos y discretos?

¿Fue útil?

Solución

Si no recuerdo mal, 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 la agrupación de atributos categóricos / discretos, uno de los primeros éxitos: ROCK: un algoritmo de agrupamiento robusto para atributos categóricos .

Otros consejos

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

El módulo cba en CRAN incluye una función para agrupar en predictores binarios basados ??en ROCK.

También podría considerar propagación de afinidad como una posible solución. Pero para superar el dilema continuo / discreto, debe definir una función que valore los estados discretos.

En realidad, presentaría pares de atributos discretos a los usuarios y les pediría que definieran su proximidad. Les presentaría una escala que se extiende desde [sinónimo ... muy extraño] o similar. Al hacer que muchas personas hagan esto, terminará con una función de proximidad ampliamente aceptada para los valores de atributos no lineales.

¿Qué hay de transformar cada uno de sus atributos categóricos en una serie de atributos indicadores binarios N-1 (donde N es el número de categorías)? No debe tener miedo a la alta dimensionalidad, ya que una representación escasa (como SequentialAccessSparseVector de mahout puede emplearse). Una vez que haga eso, puede usar un K-means clásico o cualquier algoritmo estándar de agrupación numérica únicamente.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top