Esegui il clustering di K-medie (o dei suoi parenti stretti) con solo una matrice di distanza, non dati punto per caratteristica


22

Voglio eseguire il clustering dei mezzi K sugli oggetti che ho, ma gli oggetti non sono descritti come punti nello spazio, cioè per objects x featuresset di dati. Tuttavia, sono in grado di calcolare la distanza tra due oggetti qualsiasi (si basa su una funzione di somiglianza). Quindi, dispongo della matrice della distanza objects x objects.

Ho implementato K-medie prima, ma era con input di set di dati punti; e con l'input della matrice di distanza non mi è chiaro come aggiornare i cluster in modo che siano i "centri" del cluster senza una rappresentazione puntuale. Come si farebbe normalmente? Ci sono versioni di K-medie o metodi vicini ad esso, per questo?


Cosa vuoi dire che non sono descritti come punti?
curioso

Risposte:


24

Ovviamente, k-means deve essere in grado di calcolare i mezzi .

Tuttavia, esiste una sua ben nota variazione nota come k-medoidi o PAM (Partitioning Around Medoids), in cui il medoide è l' oggetto esistente più centrale nel cluster. I medoidi K necessitano solo delle distanze a coppie.


21

Descrivi esattamente l'impostazione del problema del kernel -means; quando non è possibile rappresentare un punto dati come vettore euclideo, ma se è ancora possibile calcolare (o definire) il prodotto interno tra due punti dati, è possibile eseguire il kernel dell'algoritmo. La seguente pagina Web fornisce una breve descrizione dell'algoritmo:K

Kernel -means pageK

Questo trucco del kernel è un'idea molto popolare e fondamentale in Statistica e machine learning.

Pagina Wiki sul trucco del kernel

Se sei interessato, il libro Imparare con i kernel di Bernhard Schölkopf e Alexander J. Smola sarà una bella introduzione.

Questa nota di Max Welling sembra molto bella; Inoltre, se si utilizza R si può dare un'occhiata a questo pacchetto R .

MDS potrebbe essere un modo per risolvere il tuo problema, ma non attacca direttamente il problema che vuoi risolvere; mentre il kernel k-mean fa.


Volevo includere più collegamenti ma non potevo a causa della scarsa reputazione. Questa nota da Max Welling nota sembra molto bello; inoltre, se stai usando R puoi dare un'occhiata a questo pacchetto R
d_ijk_stra

(+1) Benvenuti nel sito. Ho aggiunto i collegamenti nel tuo commento al corpo del post e uno al testo di Schölkopf e Smola.
cardinale

9

@gung è assolutamente corretto suggerendo che il ridimensionamento multidimensionale (MDS) come strumento preliminare per creare points X dimensions dati fuori dalla matrice di distanza. Devo aggiungere solo alcuni tratti. K-means raggruppamento implica distanze euclidee . MDS ti fornirà le coordinate dei punti nelle dimensioni garantendo così distanze euclidee. È necessario utilizzare MDS metrico e richiedere il numero di dimensioni il più ampio possibile, poiché l'obiettivo è ridurre al minimo l'errore di riconduzione dei dati, non mapparli in 2D o 3D.

Cosa succede se non si dispone del software MDS a portata di mano ma si hanno alcune funzioni di matrice come la decomposizione degli autovalori o la decomposizione a valore singolare? Quindi potresti fare un semplice MDS metrico da solo - Torgerson MDS, noto anche come analisi delle coordinate principali (PCoA). Si tratta di un po '"contorto" analisi dei componenti principali. Non lo descriverò qui, anche se è abbastanza semplice. Puoi leggerlo in molti luoghi, ad esempio qui .

Infine, è possibile programmare direttamente "K- medie per l'ingresso della matrice di distanza" , senza chiamare o scrivere funzioni facendo PCoA o un altro MDS metrico. Sappiamo che (a) la somma delle deviazioni quadrate dal centroide è uguale alla somma delle distanze euclidee quadrate a coppie divise per il numero di punti; e (b) sapere come calcolare le distanze tra i centroidi del cluster dalla matrice della distanza ; (c) e sappiamo inoltre come le somme dei quadrati sono correlate in K-medie. Tutto insieme rende la scrittura dell'algoritmo desiderato un'impresa semplice e non complessa. Si dovrebbe ricordare però che i mezzi K sono solo per le distanze euclidee / lo spazio euclideo. Usa i medoidi K o altri metodi per le distanze non euclidee.

Una domanda simile .


7

Certamente non so come sia fatto "normalmente" e, per la cronaca, non so molto sull'analisi dei cluster. Tuttavia, hai familiarità con il ridimensionamento multidimensionale ? ( Ecco un altro riferimento, il wiki , e potresti cercare CV sotto il tag di .) Il ridimensionamento multidimensionale comprende una matrice di distanze a coppie, che suona come la tua situazione. Dall'MDS, è possibile ottenere le posizioni degli oggetti nello spazio di dimensione più bassa necessario per rappresentarli adeguatamente. Immagino che potresti usare quelle posizioni per fare una successiva analisi del cluster come k-mean; in alternativa, una volta ottenuto l'output, potrebbe non essere più necessaria la CA.

Non so se usi R, ma ecco la vista delle attività per la psicometria, che include una sezione sull'MDS in R. Spero che sia d'aiuto.


4

Cluster ottimale che preserva l'incorporamento di dati di prossimità non metrici dovrebbe adattarsi al caso. Il documento mostra come è possibile ottenere una rappresentazione vettoriale metrica dei propri oggetti, data solo una matrice di funzione di dissimilarità a coppie in modo tale che le assegnazioni dei cluster vengano conservate per una serie di algoritmi di clustering, inclusi i -means.K

Nel tuo caso, ciò che devi sostanzialmente fare è:

  1. Avere la tua matrice di dissomiglianza con auto-dissomiglianza zero.D
  2. Nel caso in cui non sia già simmetrico, simmetrizzare facendo la media di e . D j iDiojDjio
  3. centrarlo (cioè sottrarre media riga e colonna) per ottenereDc
  4. CalcolaSc=-12Dc
  5. Effettuare uno spostamento spettrale: Sottrarre il 's autovalore più piccolo da ' s spettro per garantire diventa positiva semidefinita. Fare questo per ottenere .S c ˜ S cScScS~c
  6. Calcola la decomposizione dell'autovettore di .S~c=VΛV
  7. Ripristina una rappresentazione vettoriale in uno spazio metrico tridimensionale dei tuoi dati: .X = V Λ 1 / 2n-1X=VΛ1/2

Ciò presuppone che non sia troppo grande. In tal caso, inoltre, PCA ti darà una rappresentazione più significativa dei dati. (L'articolo descrive anche come farlo).n


I passaggi descritti non sono altro che l'analisi delle coordinate principali che menziono nella mia risposta.
ttnphns,

Per favore, esemplifica il tuo passaggio 5. Sottrarre gli ultimi autovalori (negativi) dagli elementi della matrice S sembra non aiutare a rendere il semidefinito S positivo.
ttnphns,

@ttnphns: fondamentalmente è PCA, sì, ma non richiede che le distanze siano metriche. La descrizione del passaggio 5 è stata sfortunata, grazie per averla individuata. Adesso è chiaro?
Blubb,

Sottrarre la somma di autovalori negativi da tutti gli autovalori e quindi la matrice S di restauro equivale a sottrarre quella somma dagli elementi diagonali di S. Questo endoed rende S positivo (semi) definito, ma ...
ttnphns

... ma in questo modo è molto brutto nel senso che i dati euclidei risultanti X producono distanze euclidee D_new che sono molto lontane dalle differenze originali D. Quindi, non consiglierei il tuo passaggio 5. Sembra molto meglio semplicemente impostare negativo autovalori su 0 e saltare al passaggio 7. Oppure, approccio leggermente più accurato: impostare autovalori negativi su 0, riscalare gli autovalori positivi in ​​modo che siano sommati (= trace (S)), quindi saltare al passaggio 7. Ecco come appare per me.
ttnphns,

2

I tuoi dati possono anche essere visualizzati come una rete e puoi utilizzare uno dei tanti algoritmi di clustering di rete disponibili. Per questo probabilmente dovresti applicare una soglia sui pesi dei bordi e trasformare le distanze in somiglianze. Non è il modo "statistico" di fare le cose, ma l'analisi dei cluster è un problema non specificato all'inizio, e poiché gli strumenti di esplorazione gli algoritmi di clustering della rete funzionano molto bene.


2

Non so perché sia ​​così raro in letteratura, tuttavia la soluzione suggerita da @gung e @ttnphns (prima proiettando le distanze a coppie in uno spazio euclideo usando l'analisi delle coordinate principali, ad esempio attraverso questo pacchetto se si utilizza R, e quindi fare K-significa come al solito) è semplice e non richiede algoritmi specializzati. L'ho usato personalmente qui incorporato in un framework di ottimizzazione e ha funzionato abbastanza bene.


1

Per quanto riguarda il clustering e MDS, suggerirei le seguenti risorse:

Questi riferimenti coprono anche gli argomenti di somiglianza e funzioni di distanza (misure di prossimità) per dati binari e continui.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.