Realice clusters de K-means (o sus parientes cercanos) con solo una matriz de distancia, no datos de puntos por características


22

Quiero realizar la agrupación K-means en los objetos que tengo, pero los objetos no se describen como puntos en el espacio, es decir, por objects x featuresconjunto de datos. Sin embargo, puedo calcular la distancia entre dos objetos (se basa en una función de similitud). Entonces, dispongo de la matriz de distancia objects x objects.

He implementado K-means antes, pero eso fue con la entrada del conjunto de datos de puntos; y con la entrada de matriz de distancia no me queda claro cómo actualizar los clústeres para que sean los "centros" del clúster sin una representación de puntos. ¿Cómo se haría esto normalmente? ¿Hay versiones de K-means o métodos cercanos para eso?


¿Qué quiere decir que no se describen como puntos?
curioso

Respuestas:


24

Obviamente, k-means necesita poder calcular medios .

Sin embargo, existe una variación bien conocida de este, conocida como k-medoides o PAM (Particionamiento alrededor de los medoides), donde el medoide es el objeto existente más central para el grupo. K-medoides solo necesita las distancias por pares.


21

Está describiendo exactamente la configuración del problema de kernel -means; cuando no puede representar un punto de datos como un vector euclidiano, pero si aún puede calcular (o definir) el producto interno entre dos puntos de datos, puede kernelizar el algoritmo. La siguiente página web proporciona una breve descripción del algoritmo:k

Kernel significa páginak

Este truco del kernel es una idea muy popular y fundamental en estadísticas y aprendizaje automático.

Página Wiki sobre el truco del kernel

Si está interesado, el libro Aprendiendo con granos de Bernhard Schölkopf y Alexander J. Smola será una muy buena introducción.

Esta nota de Max Welling parece muy agradable; También, si está utilizando R se puede echar un vistazo a este paquete R .

MDS puede ser una forma de resolver su problema, pero no ataca directamente el problema que desea resolver; mientras que el núcleo k-means sí.


Quería incluir más enlaces pero no pude debido a la baja reputación. Esta nota de Max Welling nota parece muy agradable; Además, si está utilizando R, puede echar un vistazo a este paquete R
d_ijk_stra

(+1) Bienvenido al sitio. He agregado los enlaces en su comentario al cuerpo de la publicación, así como uno al texto de Schölkopf y Smola.
cardenal

9

@gung es absolutamente correcto, sugiriendo una escala multidimensional (MDS) como una herramienta preliminar para crear points X dimensions datos fuera de la matriz de distancia. Debo agregar solo algunos trazos. La agrupación de K-medias implica distancias euclidianas . MDS le dará coordenadas de puntos en dimensiones, garantizando así distancias euclidianas. Debe usar MDS métrico y solicitar un número de dimensiones lo más grande posible, porque su objetivo es minimizar el error de retracción de los datos, no mapearlos en 2D o 3D.

¿Qué sucede si no tiene un software MDS a mano pero tiene algunas funciones de matriz como la descomposición de valores propios o la descomposición de valores singulares? Entonces usted mismo podría hacer MDS métrico simple : Torgerson MDS, también conocido como análisis de coordenadas principales (PCoA). Es un análisis un poco "retorcido" de los componentes principales. No lo describiré aquí, aunque es bastante simple. Puede leer sobre esto en muchos lugares, por ejemplo, aquí .

Finalmente, es posible programar "K-means para la entrada de matriz de distancia" directamente , sin llamar o escribir funciones haciendo PCoA u otro MDS métrico. Sabemos que (a) la suma de las desviaciones al cuadrado del centroide es igual a la suma de las distancias euclidianas al cuadrado divididas en pares divididas por el número de puntos; y (b) sepa cómo calcular las distancias entre los centroides del grupo fuera de la matriz de distancia ; (c) y además sabemos cómo las sumas de cuadrados están interrelacionadas en K-medias. Todo junto hace que la escritura del algoritmo que desea sea una tarea sencilla y no compleja. Sin embargo, uno debe recordar que K-medias es solo para distancias euclidianas / espacio euclidiano. Use K-medoides u otros métodos para distancias no euclidianas.

Una pregunta similar .


7

Ciertamente no sé cómo se hace "normalmente", y para el registro, no sé mucho sobre el análisis de conglomerados. Sin embargo, ¿está familiarizado con el Escalado multidimensional ? ( Esto es otra referencia, la wiki , y que podría buscar CV bajo el etiqueta.) Escalamiento multidimensional toma en una matriz de distancias por parejas, que suena como su situación. Desde el MDS, puede obtener las ubicaciones de los objetos en el espacio dimensional más bajo necesario para representarlos adecuadamente. Supongo que podría usar esas ubicaciones para hacer un análisis de clúster posterior como k-means; alternativamente, una vez que tuvo la salida, es posible que ya no necesite la CA.

No sé si usa R, pero aquí está la vista de tareas para Psicometría, que incluye una sección sobre MDS en R. Espero que ayude.


4

k

En su caso, lo que básicamente necesita hacer es:

  1. D
  2. DijDji
  3. Dc
  4. Sc=12Dc
  5. ScScS~c
  6. Calcule la descomposición del vector propio de S~c=VΛV
  7. n1X=VΛ1/2

n


Los pasos descritos son nada menos que el análisis de coordenadas principales que menciono en mi respuesta.
ttnphns

Por favor, ejemplifique su paso 5. Restar los últimos valores propios (negativos) de los elementos de la matriz S no parece ayudar a hacer que S sea semidefinido positivo.
ttnphns

@ttnphns: Básicamente es PCA, sí, pero no requiere que las distancias sean métricas. La descripción del paso 5 fue desafortunada, gracias por verlo. ¿Ahora está claro?
blubb

Restar la suma de los valores propios negativos de todos los valores propios y luego restaurar la matriz S es equivalente a restar esa suma de los elementos diagonales de S. Esta sangría hace que S sea positivo (semi) definitivo, pero ...
ttnphns

... pero de esta manera es muy malo en el sentido de que los datos euclidianos resultantes X producen distancias euclidianas D_nuevas que están muy lejos de las diferencias originales D. Por lo tanto, no recomendaría su paso 5. Parece mucho mejor simplemente establecer negativo valores propios a 0 y saltar al paso 7. O, enfoque un poco más fino: establecer valores propios negativos a 0, reescalar valores propios positivos para que sumen ser originales (= traza (S)), y luego saltar al paso 7. Así es como aparece a mi.
ttnphns

2

Sus datos también se pueden ver como una red, y puede usar uno de los muchos algoritmos de agrupación en red disponibles. Para esto, probablemente deba aplicar un umbral en los pesos de los bordes y transformar las distancias en similitudes. Para empezar, no es la forma "estadística" de hacer las cosas, pero el análisis de conglomerados es un problema poco especificado, y como herramientas de exploración, los algoritmos de agrupación en red funcionan muy bien.


2

No sé por qué es tan poco común en la literatura, sin embargo, la solución sugerida por @gung y @ttnphns (primero proyectando sus distancias por pares en un espacio euclidiano usando el Análisis de coordenadas principales, por ejemplo a través de este paquete si usa R, y luego hacer K-significa de manera habitual) es simple y no requiere algoritmos especializados. Personalmente lo usé aquí incrustado en un marco de optimización y funcionó bastante bien.


1

Con respecto a la agrupación y MDS, sugeriría los siguientes recursos:

Estas referencias también cubren muy bien los temas de similitud y funciones de distancia (medidas de proximidad) para datos binarios y continuos.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.