Soluzioni per l'identificazione continua di cluster online?


11

Lascia che ti mostri un esempio di un'ipotetica applicazione di clustering online:

inserisci qui la descrizione dell'immagine

Al momento n punti 1,2,3,4 sono assegnati al gruppo blu A e punti b, 5,6,7 sono assegnati al gruppo rosso B.

Al tempo n + 1 viene introdotto un nuovo punto a che viene assegnato al cluster blu A ma che determina anche l'assegnazione del punto b al cluster blu A.

Alla fine i punti 1,2,3,4, a, b appartengono ad A e i punti 5,6,7 a B. Per me questo sembra ragionevole.

Ciò che sembra semplice a prima vista è in realtà un po 'complicato: mantenere gli identificatori attraverso le fasi temporali. Vorrei provare a chiarire questo punto con un esempio più borderline:

inserisci qui la descrizione dell'immagine

Il punto verde causerà la fusione di due punti blu e due rossi in un unico cluster che ho arbitrariamente deciso di colorare in blu - questo è già il mio pensiero euristico umano al lavoro!

Un computer per prendere questa decisione dovrà usare le regole. Ad esempio, quando i punti vengono uniti in un cluster, l'identità del cluster viene determinata dalla maggioranza. In questo caso dovremmo affrontare un pareggio: sia il blu che il rosso potrebbero essere scelte valide per il nuovo cluster (qui di colore blu).

Immagina un quinto punto rosso vicino a quello verde. Quindi la maggioranza sarebbe rossa (3 rosse contro 2 blu), quindi il rosso sarebbe una buona scelta per il nuovo cluster - ma questo contraddirebbe la scelta ancora più chiara del rosso per il cluster più a destra in quanto quelli sono stati rossi e probabilmente dovrebbero rimanere così .

Trovo sospetto pensare a questo. Alla fine, credo che non ci siano regole perfette per questo - piuttosto euristica che ottimizza alcuni criteri di stabilità.

Questo alla fine porta alle mie domande:

  1. Questo "problema" ha un nome a cui può essere fatto riferimento?
  2. Esistono soluzioni "standard" a questo e ...
  3. ... c'è forse anche un pacchetto R per quello?

Eredità ragionevole delle identità del cluster nel clustering ripetitivo



Il problema che stai cercando di mantenere l'identità dei cluster il più possibile ad ogni passaggio? In modo che a N + 1 puoi dire come è cambiato un cluster perché c'è qualche relazione tra i cluster di N e quelli di N + 1? E la parte difficile è cosa succede se i cluster si dividono e si fondono?
Spacedman

@Spacedman: BINGO :) joyofdata.de/blog/…
Raffael

Vi invito a dare un'occhiata a questo e questo
farhawa,

Risposte:


1

Dilemma di stabilità-plasticità, tassi di apprendimento e algoritmi di dimenticanza:

Innanzitutto, lasciatemi dire che questa è davvero una grande domanda ed è il tipo di cose che stimolano il pensiero che migliora davvero la comprensione degli algoritmi ML.

  1. Questo "problema" ha un nome a cui può essere fatto riferimento?

Questo è generalmente indicato come "stabilità". La cosa divertente è che la stabilità è in realtà un concetto utile nel clustering regolare, cioè non online. La "stabilità" dell'algoritmo viene spesso scelta come criterio di selezione per stabilire se sia stato selezionato il numero corretto di cluster. Più precisamente, il problema di stabilità del cluster online che è stato descritto viene definito come stability-plasticity dilemma.

  1. Esistono soluzioni "standard" a questo e ...

Innanzitutto, la risposta generale è che molti algoritmi di clustering online sono sorprendentemente stabili quando sono stati ben addestrati con un'ampia coorte di dati iniziali. Tuttavia, è ancora un problema se si vuole davvero inchiodare le identità dei punti dei cluster consentendo allo stesso tempo all'algoritmo di reagire ai nuovi dati. La delicatezza del tuo punto è brevemente affrontata in Introduzione all'apprendimento automatico di Ethem Alpaydin. A pagina 319 deriva l'algoritmo k-medie online attraverso l'applicazione della discesa gradiente stocastica, ma menziona che stability-plasticity dilemmasorge quando si sceglie un valore per il tasso di apprendimento. Un piccolo tasso di apprendimento determina stabilità, ma il sistema perde adattabilità laddove un tasso di apprendimento più grande ottiene adattabilità, ma perde stabilità nel cluster.

Credo che il miglior percorso da seguire sia scegliere un'implementazione del clustering online che consenta di controllare l'algoritmo di discesa gradiente stocastico e quindi scegliere il tasso di apprendimento in modo da massimizzare la stabilità e l'adattabilità nel miglior modo possibile utilizzando una solida procedura di convalida incrociata.

Un altro metodo che ho visto impiegato è una sorta di algoritmo di dimenticanza, ad esempio dimenticare punti più vecchi mentre il flusso di dati matura. Ciò consente un sistema abbastanza stabile su scale temporali veloci e consente l'evoluzione su scale temporali più lente. Adaptive Resonance Theoryè stato creato per cercare di risolvere il stability-plasticity dilemma. Potresti trovare questo articolo interessante.

Non sono abbastanza esperto in R per suggerire un algoritmo, ma ti suggerisco di cercare un mini-batch k-meansalgoritmo che ti permetta di controllare il tasso di apprendimento nel suo algoritmo di discesa gradiente stocastico.

Spero che questo possa essere d'aiuto!

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.