Clustering efficiente in termini di spazio


9

La maggior parte degli algoritmi di clustering che ho visto iniziano con la creazione di distanze a testa tra tutti i punti, il che diventa problematico su set di dati più grandi. Ce n'è uno che non lo fa? O lo fa in una sorta di approccio parziale / approssimativo / sfalsato?

Quale algoritmo / implementazione del clustering occupa meno di O (n ^ 2) spazio?

C'è un elenco di algoritmi e i loro requisiti di tempo e spazio da qualche parte?


2
Forse lo spostamento del clustering di tipi di finestre (ad esempio SaTScan, satscan.org ) soddisferebbe le tue esigenze. Quel programma specifico è per dati spaziali / temporali, quindi non è pensato per dimensioni più elevate, ma forse ti darà alcune idee o un punto di partenza.
Andy W

Risposte:


5

K-Means e Mean-Shift utilizzano i descrittori di campione non elaborati (non è necessario pre-calcolare una matrice di affinità).

Altrimenti, per il clustering spettrale o il clustering di iterazione di potenza, è possibile utilizzare una rappresentazione di matrice sparsa (ad esempio Righe sparse compresse) della matrice di affinità k-vicini più vicini (per una certa metrica di distanza o affinità). Se k è piccolo (diciamo 5 o 10). Otterrai una rappresentazione molto efficiente in termini di spazio (2 * n_samples * k * 8 byte per valori in virgola mobile a precisione doppia).


2

O(nlogn)O(logn)

O(n2)

nn2O(n3)

O(n2)n×nKO(n2)O(n)O(nlogn)O(n)


risposta molto bene.
MonsterMMORPG

1

Buona domanda. Un metodo di paglia per dire 3 vicini più vicini è quello di campionare i vicini Nsample di ciascun punto dati, mantenendo il più vicino 3. Mentre banale, eseguendo questo per alcuni valori di Nsample ti darà un'idea del rapporto segnale / rumore, rumore vicino / di fondo , facilmente tracciabile per i tuoi dati. Un ulteriore trucco è quindi controllare i vicini dei vicini, per vedere se qualcuno di questi è più vicino dei vicini diretti. Inoltre, se i dati di input sono già mescolati, campionare in blocchi, altrimenti la cache si bloccherà.

(Aggiunto): vedi fastcluster in R e credo in SciPy v0.11.
Per il testo, vedi google-tutte-coppie-somiglianza-ricerca .

Ripeti, "Un'adeguata misura di dissomiglianza è molto più importante per ottenere il successo con il clustering rispetto alla scelta dell'algoritmo di clustering" - scegliere-clustering-method .

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.