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


23

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

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

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


Насколько я могу судить, R-пакетов для редких деревьев решений не существует. Я полагаю, что существует алгоритм для разреженных деревьев решений, который, если он реализован в R, может быть использован для построения случайных лесов.
Зак

2
Вот хороший кандидат: cs.cornell.edu/~nk/fest . Если вы можете экспортировать свои данные в формате libsvm, вы можете использовать эту программу командной строки. Хотелось бы увидеть порт R ...
Зак

Зак - ссылка кажется мертвой.
Benoit_Plante

2
@ cmoibenlepro ссылка на lowrank.net/nikos/fest
seanv507

Ссылка работала нормально для меня
Дэвид Маркс

Ответы:


13

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

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


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

7

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

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


4

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

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

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

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


-4

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

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

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


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

1
Части этого, которые являются правдой, не являются ответами на вопрос.
Sycorax сообщает, что восстановит Монику
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.