Существует ли реализация Random Forest, которая хорошо работает с очень разреженными данными?

23

Существует ли реализация случайного леса R, которая хорошо работает с очень разреженными данными? У меня есть тысячи или миллионы логических входных переменных, но только сотни или около того будут ИСТИНА для любого данного примера.

Я относительно новичок в R и заметил, что существует пакет Matrix для работы с разреженными данными, но стандартный пакет randomForest, похоже, не распознает этот тип данных. Если это имеет значение, входные данные будут созданы за пределами R и импортированы.

Любой совет? Я также могу изучить использование Weka, Mahout или других пакетов.

Eryn
источник
Насколько я могу судить, R-пакетов для редких деревьев решений не существует. Я полагаю, что существует алгоритм для разреженных деревьев решений, который, если он реализован в R, может быть использован для построения случайных лесов.
Зак
2
Вот хороший кандидат: cs.cornell.edu/~nk/fest . Если вы можете экспортировать свои данные в формате libsvm, вы можете использовать эту программу командной строки. Хотелось бы увидеть порт R ...
Зак
Зак - ссылка кажется мертвой.
Benoit_Plante
2
@ cmoibenlepro ссылка на lowrank.net/nikos/fest
seanv507
Ссылка работала нормально для меня
Дэвид Маркс

Ответы:

13

Нет, для разреженных данных в R. нет реализации RF. Частично, потому что RF не очень хорошо подходит для этого типа проблем - пакетирование и субоптимальный выбор разбиений могут привести к потере большей части понимания модели в областях, где нет нуля.

Попробуйте какой-нибудь метод ядра или лучше подумайте о преобразовании ваших данных в более пышное представление с некоторыми дескрипторами (или используйте некоторый метод уменьшения размерности).

user88
источник
Ответ Hack-R указывает на пакет xgboost, который прекрасно умеет создавать случайные леса с разреженными матрицами.
Эдгар
7

На самом деле, да, есть .

Это xgboostсделано для повышения градиента eXtreme. В настоящее время этот пакет предпочтителен для запуска моделей с разреженными матрицами в R для многих людей, и, как объясняет ссылка выше, вы можете использовать его для Random Forest, настроив параметры !

Hack-R,
источник
4

Пакет R "Рейнджер" должен сделать.

https://cran.r-project.org/web/packages/ranger/ranger.pdf

Быстрое внедрение Случайных Лесов, особенно подходящих для данных большого размера.

По сравнению с randomForest этот пакет, вероятно, является самой быстрой реализацией RF, которую я видел. Он обрабатывает категориальные переменные по-своему.

оборота amitos
источник
-4

Существует блог под названием Quick-R, который должен помочь вам с основами R.

R работает с пакетами. Каждый пакет может сделать что-то свое. Есть такие пакеты, называемые randomForests, которые должны быть именно тем, о чем вы просите.

Имейте в виду, что редкие данные будут вызывать проблемы независимо от того, какой метод вы применяете. Насколько мне известно, это очень открытая проблема, и интеллектуальный анализ данных в целом является скорее искусством, чем наукой. Случайные леса в целом очень хороши, но они не всегда являются лучшим методом. Вы можете попробовать нейронную сеть с большим количеством слоев, которые могут помочь.

Винсент
источник
4
Нет, randomForest печально известен плохими данными, отсюда и весь вопрос. Параметр classwt не реализован должным образом в randomForest. Ручная передискретизация является одним из подходов, но она приводит к ошибке OOB. Кстати, пакет не называется randomForests.
smci
1
Части этого, которые являются правдой, не являются ответами на вопрос.
Sycorax сообщает, что восстановит Монику