Я работаю с некоторыми большими наборами данных, используя пакет gbm в R. И моя матрица предикторов, и мой вектор ответов довольно редки (то есть большинство записей равно нулю). Я надеялся построить деревья решений, используя алгоритм, который использует преимущества этой редкости, как это было сделано здесь ). В этой статье, как и в моей ситуации, большинство элементов имеют только несколько из множества возможных функций, поэтому они смогли избежать большого количества потраченных впустую вычислений, предполагая, что их элементам не хватает определенной функции, если в данных явно не указано иное. Я надеюсь, что смогу добиться такого же ускорения, используя этот вид алгоритма (а затем обернув его алгоритмом повышения, чтобы улучшить мою предсказательную точность).
Поскольку они, похоже, не публикуют свой код, мне было интересно, есть ли какие-либо пакеты или библиотеки с открытым исходным кодом (на любом языке), оптимизированные для этого случая. В идеале я хотел бы что-то, что могло бы взять разреженную матрицу непосредственно из Matrix
пакета R , но я возьму то, что смогу получить.
Я оглянулся вокруг, и кажется, что такого рода вещи должны быть там:
Химики, похоже, много сталкивались с этой проблемой (статья, которую я упомянул выше, касалась обучения поиску новых лекарственных соединений), но реализации, которые я мог найти, были либо проприетарными, либо узкоспециализированными для химического анализа. Вполне возможно, что один из них может быть переопределен.
Классификация документов также представляется областью, в которой полезно изучение из разреженных пространств признаков (большинство документов не содержат большинство слов). Например, в этой статье есть косвенная ссылка на разреженную реализацию C4.5 (алгоритм, подобный CART) , но нет кода.
Согласно списку рассылки , WEKA может принимать разреженные данные, но в отличие от метода, описанного в статье, которую я упомянул выше, WEKA не оптимизирована, чтобы фактически использовать ее с точки зрения предотвращения ненужных циклов ЦП.
Заранее спасибо!
glmnet
и e1071::svm
те, и другие поддерживают разреженные Matrix
объекты. GAMboost
и GLMboost
(из пакета GAMboost
) может также.