Qual è il modo più efficiente di addestrare i dati usando meno memoria?


10

Questi sono i miei dati di allenamento: 200.000 esempi x 10.000 funzioni. Quindi la mia matrice di dati di allenamento è - 200.000 x 10.000.

Sono riuscito a salvarlo in un file flat senza problemi di memoria salvando ogni set di dati uno per uno (un esempio dopo l'altro) mentre generi le funzionalità per ciascun esempio.

Ma ora che uso Milk , SVM light o qualsiasi altro algoritmo di Machine Learning, tutto prova a caricare tutti i dati di allenamento in memoria invece di allenarli uno per uno. Tuttavia ho solo 8 GB di RAM, quindi non posso procedere in questo modo.

Sai comunque che potrei addestrare l'algoritmo un set di dati per un set di dati? Cioè, in modo che in qualsiasi istante ho solo un set di dati caricato in memoria, durante l'allenamento.


1
Cosa intendi con "salva ogni set di dati uno per uno?" Intendi "ogni riga dei dati?" Se si dispone di più set di dati, che si salvano uno per uno, perché non caricarli uno per uno e adattare l'algoritmo a ciascuno?
Zach,

1
"Un set di dati per un set di dati" significa riga per riga? Vale a dire un set di dati = 10000 funzionalità? In tal caso, gli algoritmi online potrebbero essere qualcosa che stai cercando, vedi: en.wikipedia.org/wiki/Online_algorithm e en.wikipedia.org/wiki/Online_machine_learning . Esiste una versione online per molti algoritmi di inclinazione della macchina, ad esempio SVM e foreste casuali.
Herra Huu,

Grazie .. Zach e Herra. Ho modificato la domanda per definire uno per uno più chiaramente. E sì, stavo pensando all'apprendimento online ma non ho mai pensato agli algoritmi online, fammi leggere su questo e provarlo.
madCode

Risposte:


4

Credo che il termine per questo tipo di apprendimento sia un apprendimento fuori dal comune . Un suggerimento è vowpal wabbit , che ha una comoda libreria R , oltre a librerie per molte altre lingue.


Sto riscontrando problemi di dipendenze con boost durante l'installazione. hai idea del perché ottengo questo? bit.ly/L939DO
madCode

@madCode Non ho mai usato vowpal wabbit, quindi non posso aiutarti a installarlo. Ho sentito che la loro mailing list è eccellente e sono sicuro che puoi trovare aiuto lì per configurarlo.
Zach,

Hey..Zach. Ha funzionato bene. L'ho installato e mi danno persino delle previsioni. grazie :-)
madCode

1

Secondo di cuore il suggerimento di Zach. vowpal wabbit è un'opzione eccellente e rimarrai sorpreso dalla sua velocità. Un set di dati da 200k per 10k non è considerato grande dalle norme di Vowpal Wabbit.

vowpal_wabbit (disponibile in formato sorgente tramite https://github.com/JohnLangford/vowpal_wabbit , una versione precedente è disponibile come pacchetto standard nell'universo Ubuntu) è un veloce studente lineare + bilineare online, con input molto flessibili. È possibile combinare funzioni binarie e con valori numerici. Non è necessario numerare le funzionalità poiché i nomi delle variabili funzioneranno "così come sono". Ha un sacco di opzioni, algoritmi, riduzioni, funzioni di perdita e flessibilità all-in-tutto. Puoi iscriverti alla mailing list (trovarla tramite github) e porre qualsiasi domanda. La comunità è molto ben informata e solidale.


1

Ho risposto a una domanda simile qui . Il punto è che la maggior parte degli algoritmi di machine learning / data mining sono discenti batch, ovvero caricano tutti i dati in memoria. Pertanto, sono necessari diversi strumenti per set di dati molto grandi. Vedi anche gli strumenti di quelle domande.

L'apprendimento online è un modo per ridurre l'impronta di memoria degli algoritmi.

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.