Sto lavorando con alcuni grandi set di dati usando il pacchetto gbm in R. Sia la mia matrice predittore che il mio vettore di risposta sono piuttosto scarsi (cioè la maggior parte delle voci sono zero). Speravo di costruire alberi decisionali usando un algoritmo che sfrutti questa scarsità, come è stato fatto qui ). In quel documento, come nella mia situazione, la maggior parte degli articoli ha solo alcune delle molte funzionalità possibili, quindi sono stati in grado di evitare molti calcoli sprecati supponendo che ai loro articoli mancasse una determinata funzionalità a meno che i dati non dicessero esplicitamente diversamente. La mia speranza è che potrei ottenere una velocità simile usando questo tipo di algoritmo (e quindi avvolgendolo attorno ad un algoritmo di potenziamento per migliorare la mia precisione predittiva).
Dato che non sembravano pubblicare il loro codice, mi chiedevo se ci fossero pacchetti o librerie open-source (in qualsiasi lingua) ottimizzati per questo caso. Idealmente, vorrei qualcosa che potesse prendere una matrice sparsa direttamente dal Matrix
pacchetto di R , ma prenderò quello che posso ottenere.
Mi sono guardato intorno e sembra che questo genere di cose dovrebbe essere là fuori:
I chimici sembrano imbattersi molto in questo problema (il documento che ho collegato sopra riguardava l'apprendimento di trovare nuovi composti farmacologici), ma le implementazioni che ho potuto trovare erano di proprietà o altamente specializzate per l'analisi chimica. È possibile però che uno di essi possa essere riutilizzato.
Anche la classificazione dei documenti sembra essere un'area in cui è utile l'apprendimento da spazi di funzioni sparse (la maggior parte dei documenti non contiene la maggior parte delle parole). Ad esempio, c'è un riferimento obliquo a un'implementazione sparsa di C4.5 (un algoritmo simile a CART) in questo documento , ma nessun codice.
Secondo la mailing list , WEKA può accettare dati scarsi, ma a differenza del metodo nel documento che ho linkato sopra, WEKA non è ottimizzata per trarne vantaggio in termini di sprecare cicli di CPU.
Grazie in anticipo!
glmnet
ed e1071::svm
entrambi supportano Matrix
oggetti sparsi . GAMboost
e GLMboost
(dal pacchetto GAMboost
) può anche.