Ich arbeite mit einigen großen Datenmengen unter Verwendung des gbm-Pakets in R. Sowohl meine Prädiktormatrix als auch mein Antwortvektor sind ziemlich spärlich (dh die meisten Einträge sind Null). Ich hatte gehofft, Entscheidungsbäume mit einem Algorithmus zu erstellen, der diese Spärlichkeit ausnutzt, wie hier ). In diesem Artikel haben, wie in meiner Situation, die meisten Elemente nur einige der vielen möglichen Merkmale, so dass sie eine Menge verschwendeter Berechnungen vermeiden konnten, indem sie davon ausgegangen sind, dass ihren Elementen ein bestimmtes Merkmal fehlt, sofern in den Daten nicht ausdrücklich etwas anderes angegeben ist. Ich hoffe, dass ich mit dieser Art von Algorithmus eine ähnliche Beschleunigung erzielen kann (und dann einen Boosting-Algorithmus darum wickle, um meine Vorhersagegenauigkeit zu verbessern).
Da sie ihren Code nicht zu veröffentlichen schienen, fragte ich mich, ob es Open-Source-Pakete oder -Bibliotheken (in einer beliebigen Sprache) gibt, die für diesen Fall optimiert sind. Idealerweise hätte ich gerne etwas, das eine spärliche Matrix direkt aus Rs Matrix
Paket nehmen könnte, aber ich werde nehmen, was ich bekommen kann.
Ich habe mich umgesehen und es scheint, als sollte so etwas da draußen sein:
Chemiker scheinen häufig auf dieses Problem zu stoßen (in dem oben verlinkten Artikel ging es darum, neue Arzneimittelverbindungen zu finden), aber die Implementierungen, die ich finden konnte, waren entweder proprietär oder hochspezialisiert für die chemische Analyse. Es ist jedoch möglich, dass einer von ihnen neu bestimmt wird.
Die Klassifizierung von Dokumenten scheint auch ein Bereich zu sein, in dem das Lernen aus spärlichen Feature-Spaces nützlich ist (die meisten Dokumente enthalten nicht die meisten Wörter). Zum Beispiel gibt es in diesem Dokument einen schrägen Verweis auf eine spärliche Implementierung von C4.5 (einem CART-ähnlichen Algorithmus) , aber keinen Code.
Laut der Mailingliste kann WEKA spärliche Daten akzeptieren, aber im Gegensatz zu der Methode in dem oben verlinkten Artikel ist WEKA nicht optimiert, um tatsächlich davon zu profitieren, um verschwendete CPU-Zyklen zu vermeiden.
Danke im Voraus!
glmnet
und e1071::svm
beide unterstützen spärlich Matrix
Objekte. GAMboost
und GLMboost
(aus Paket GAMboost
) kann auch.