Domanda

Devo eseguire un clustering k-means su una matrice davvero enorme (circa 300.000x100.000 valori che sono più di 100 Gb).Voglio sapere se posso usare il software R per eseguire questo o weka. Il mio computer è un multiprocessore con 8 Gb di RAM e centinaia di Gb di spazio libero.

Ho abbastanza spazio per i calcoli ma il caricamento di una tale matrice sembra essere un problema con R (non credo che l'uso del pacchetto bigmemory mi aiuterebbe e big matrix userebbe automaticamente tutta la mia RAM, quindi il mio file di scambio se non abbastanzaspazio).

Quindi la mia domanda è: quale software dovrei usare (eventualmente in associazione con altri pacchetti o impostazioni personalizzate).

Grazie per avermi aiutato.

Nota: io uso Linux.

È stato utile?

Soluzione

Deve essere K-significa? Un altro possibile approccio consiste nel trasformare prima i dati in una rete, quindi applicare il clustering del grafico. Sono l'autore di MCL , un algoritmo usato abbastanza spesso in bioinformatica. L'implementazione collegata a dovrebbe facilmente scalare fino a reti con milioni di nodi: il tuo esempio avrebbe 300.000 nodi, supponendo che tu abbia 100.000 attributi. Con questo approccio, i dati verranno eliminati naturalmente nella fase di trasformazione dei dati e quella fase diventerà molto probabilmente il collo di bottiglia. Come si calcola la distanza tra due vettori? Nelle applicazioni che ho trattato ho utilizzato la correlazione di Pearson o Spearman e MCL viene fornito con il software per eseguire in modo efficiente questo calcolo su dati su larga scala (può utilizzare più CPU e più macchine).

C'è ancora un problema con la dimensione dei dati, poiché la maggior parte degli algoritmi di clustering richiederà di eseguire almeno tutti i confronti a coppie almeno una volta. I tuoi dati sono davvero archiviati come una matrice gigante? Hai molti zeri nell'input? In alternativa, hai un modo per scartare elementi più piccoli? Hai accesso a più di una macchina per distribuire questi calcoli?

Altri suggerimenti

Mantengo il link (che può essere utile perl'utente specifico) ma sono d'accordo con il commento di Gavin! Per eseguire un clustering k-means su Big Data è possibile utilizzare la funzione rxKmeans implementata nella Revolution RImplementazione proprietaria Enterprise di R (so che questo può essere un problema);questa funzione sembra essere in grado di gestire quel tipo di dati.

Dal momento che non sappiamo nulla dei dati, né degli obiettivi dell'interrogante per questo, solo un paio di link generali:
I.Le videoconferenze di Guyon - anche molti giornali e libri.
selezione di funzioni su stats.stackexchange

Dai un'occhiata a Mahout, farà k mezzi su un grande set di dati:

http://mahout.apache.org/

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top