2011-12-24 12 views
6

Attualmente sto sperimentando un'attività ML che prevede l'addestramento supervisionato di un modello di classificazione. Ad oggi, ho esempi di training ~ 5M e esempi ~ 5M per la convalida incrociata. Ogni esempio ha, al momento, 46 ​​funzionalità, tuttavia potrei volerne generare altre 10 nel prossimo futuro, quindi qualsiasi soluzione dovrebbe lasciare margini di miglioramento.Attività di apprendimento automatico: quale strumento utilizzare?

Il mio problema è il seguente: quale strumento devo utilizzare per affrontare questo problema? Mi piacerebbe usare foreste casuali o SVM, tuttavia temo che quest'ultimo potrebbe essere troppo lento nel mio caso. Ho preso in considerazione Mahout, ma ho voltato le spalle in quanto sembra richiedere una certa quantità di configurazione unita a problemi con gli script da riga di comando. Preferirei codice direttamente contro una libreria (ben documentata!) O definire il mio modello con una GUI.

Devo anche specificare che sto cercando qualcosa che gira su Windows (senza cose come cygwin), e che le soluzioni che giocano bene con .NET sono molto apprezzate.

Si può immaginare che, quando il tempo sarà, vieni, il codice verrà eseguito su un Cluster Compute Eight Extra Large Instance su Amazon EC2, quindi tutto ciò che fa largo uso di RAM e CPU multi-core è il benvenuto.

Ultimo ma non meno importante, deve specificare che il mio insieme di dati è denso (in quanto non v'è alcun valore mancante/tutte le colonne hanno un valore per ogni vettore)

+1

Ci sono una miriade di strumenti disponibili (per cominciare, consultare l'elenco dei software su KDnuggets: http://www.kdnuggets.com/software/index.html). Anche se la descrizione del problema ne elimina alcuni, c'è ancora un numero che potrebbe essere sufficiente. Non sono sicuro di cosa intenda esattamente "giocare bene con .NET", ma qualsiasi strumento utile dovrebbe fornire un rapporto o un codice sorgente del modello che possa essere facilmente tradotto in codice .NET. – Predictor

+0

Grazie per il collegamento, lo verificherò non appena ho scritto questo. Per quanto riguarda il fatto di giocare bene con .NET, significa che qualcosa che ha un'interfaccia programmabile per iniziare il lavoro o anche una libreria .NET (o un wrapper utilizzabile) è preferibile a qualcosa che non lo è. – em70

risposta

2

mi raccomando guardando stocastico gradiente di discesa per questa scala un problema. Un buon strumento da osservare è VowpalWabbit. A quella dimensione probabilmente puoi eseguire i tuoi esperimenti su un desktop con specifiche ragionevoli. L'unico lato negativo per te, penso sia che non è centrato su Windows, ma anche se non l'ho controllato dovrebbe funzionare su cygwin.

MODIFICA: C'è stato un grande interesse da parte degli sviluppatori per far funzionare VowpalWabbit su Windows. A partire da marzo 2013 VowpalWabbit (versione 7.2) viene eseguito su Windows immediatamente. Ci sono un paio di funzionalità avanzate/opzionali che non sono ancora state implementate su Windows, una di queste sta eseguendo VowpalWabbit come demone, ma sembra che verrà gestita nel futuro a breve termine.

+1

Perché questo particolare strumento? Ci sono dozzine di candidati: cosa rende questo uno sopra le altre? – Predictor

+1

@Predictor, è quello che ho usato, quello con cui ho esperienza e quello con cui ho ottenuto buoni risultati. Inoltre, personalmente, sono il primo a citare lo strumento tecnico di cui ha bisogno (discesa con gradiente stocastico). Inoltre, il primo a dire che può gestire quella scala sul suo laptop e non richiede un cluster EC2. – carlosdc

+0

Vedo che questa risposta è ~ 1.5 anni. vowpal wabbit è stato portato su Windows, e la versione 7.x non dovrebbe essere costruita bene su Windows. – arielf

3

Eseguo regolarmente dataset di conteggio di righe/feature simili in R su EC2 (il tipo di istanza di 16 core/60 Gb a cui si fa riferimento è particolarmente utile nel caso in cui si stia utilizzando un metodo che può usufruire di più cpu come pacchetto caret). Come già accennato, non tutti i metodi di apprendimento (come SVM) funzioneranno bene su questo set di dati.

Si consiglia di prendere in considerazione l'utilizzo di un campione del 10% circa per la prototipazione rapida/benchmark delle prestazioni prima di passare all'esecuzione sull'intero set di dati.

Se si desidera prestazioni estremamente elevate quindi Vowpal Wabbit è una misura migliore (ma supporta solo i discenti lineari generalizzati in modo che nessun gbm o Random Forest.) Inoltre, VW non è molto finestre-friendly.

Problemi correlati