2016-12-26 3 views
2

У меня есть набор данных, который растет на ежедневной основе, меня беспокоит тот факт, что в скором времени он достигнет размера, который память может не уместиться. Я использую в своем приложении случайные классификаторы леса и регрессоры. Я слышал о частичной подгонке, но я не знаю, можно ли сделать случайный лес таким образом. Как я могу гарантировать, что приложение не сломается и продолжает работать хорошо, даже если набор данных превышает размер памяти. Также был бы сценарий любым другим, если бы вместо svm использовался случайный лес.Огромные наборы данных в машинном обучении sklearn

+0

Какой объем данных у вас задет? Определяете ли вы количество заданий в sklearn? Имейте в виду, что существуют разные методы оптимизации. Вы всегда можете использовать метод, который не требует наличия полного набора тренировок, загружаемого в память, а скорее использовать партии. Возьмите стохастический градиентный спуск. –

+0

Ya, данные со временем станут слишком большими, могут быть в терабайтах. Также я хочу знать, будет ли случайный лес все еще эффективным. –

+0

Взгляните на http://scikit-learn.org/stable/modules/scaling_strategies.html –

ответ

-1

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

H2O имеет чистую и понятную функцию прямого соединения инструмента (R или Python) с процессором вашей машины. Таким образом, мы можем перенаправить больше памяти, вычислить мощность инструмента для ускорения вычислений. Это позволит проводить вычисления со скоростью 100%. Он также может быть связан с кластерами на облачных платформах для выполнения вычислений.

Он обеспечивает алгоритм в регрессии, RandomForest, DeepLearning.

Посетите сайт для получения дополнительной информации: - http://www.h2o.ai/

+0

Есть ли способ, которым я мог бы придерживаться самой платформы, а не протягивать внешние платформы. –

+0

Как H2O решает проблему нехватки физическая память? BTW - H2O - это программное обеспечение с открытым исходным кодом, а не любая платформа (например, AWS). –

+1

Еще одна вещь: использовав H2O, я не понимаю этого предложения: «H2O имеет чистую и понятную функцию прямого подключения инструмента (R или Python) к процессору вашего компьютера. Таким образом, мы получаем возможность перенаправить больше памяти, обработки чтобы инструмент для ускорения вычислений ». Вы заставляете это звучать так, будто оно переводится непосредственно в код сборки, но это, конечно, не так.H2O основана на JVM, поэтому на самом деле она довольно косвенная и поставляется с штрафом за перевод упомянутого кода R/Python в байт-код. –

1

В общем, вы должны искать методы, которые предлагают дополнительных или онлайн обучения. В таком случае вам не обязательно представлять алгоритму полный набор данных сразу, а скорее, когда новые данные становятся доступными. Это важно, если данные растут ежедневно, а ваши вычислительные ресурсы ограничены. Stochastic gradient descent - довольно популярный метод оптимизации, который соответствует вашим требованиям.

Вы можете использовать вариацию случайного леса под названием Mondarian Forest. Процитировать из аннотации связанного документа: Леса Мондриана достигают конкурентной прогностической эффективности, сопоставимой с существующими онлайн-случайными лесами, и периодически переучивают периодические случайные леса, но при этом более чем на порядок быстрее, тем самым представляя лучшее вычисление против компромисса с точностью. Код можно найти по адресу GitHub.

Не зная ваших данных и характера вашей проблемы, вы не можете предложить вам конкретные указания относительно того, что будет лучше, чем случайный лес. Если вы хотите придерживаться изучения scikit, проверьте статью Strategies to scale computationally: bigger data.

Смежные вопросы