Задача машинного обучения: какой инструмент использовать? - PullRequest
6 голосов
/ 24 декабря 2011

В настоящее время я экспериментирую с задачей ML, которая включает в себя тренировку классификационной модели под наблюдением.На сегодняшний день у меня есть ~ 5 миллионов обучающих примеров и ~ 5 миллионов примеров для перекрестной проверки.Каждый пример имеет на данный момент 46 функций, однако я бы хотел создать еще 10 в ближайшем будущем, поэтому любое решение должно оставить некоторые возможности для улучшения.

Моя проблема заключается в следующем: какой инструмент мне использовать?использовать для решения этой проблемы?Я хотел бы использовать случайные леса или SVM, однако я боюсь, что последний может быть слишком медленным в моем случае.Я рассмотрел Mahout, но отвернулся, так как, похоже, требуется определенное количество настроек в сочетании с работой со скриптами командной строки.Я бы предпочел написать код непосредственно для некоторой (хорошо документированной!) Библиотеки или определить мою модель с графическим интерфейсом.

Я должен также указать, что я ищу что-то, что будет работать в Windows (без таких вещей, как cygwin), и что решения, которые хорошо работают с .NET, высоко ценятся.

Вы можете себе представить, что когда придет время, код будет запущен на Cluster Compute Eight ExtraБольшой экземпляр на Amazon EC 2 , поэтому приветствуется все, что широко использует оперативную память и многоядерные процессоры.

Последнее, но непо крайней мере, я укажу, что мой набор данных является плотным (в нем нет пропущенных значений / все столбцы имеют значение для каждого вектора)

Ответы [ 2 ]

3 голосов
/ 09 января 2012

Я обычно запускаю аналогичные наборы данных количества строк / объектов в R на EC2 (тип экземпляра 16 ядер / 60 Гб, на который вы ссылаетесь, особенно полезен в случае, если вы используете метод, который может использовать преимущества нескольких процессоров, таких как как пакет caret.) Как вы уже упоминали, не все методы обучения (такие как SVM) будут хорошо работать с таким набором данных.

Возможно, вы захотите использовать 10% выборку или около того для быстрого прототипирования / измерения производительности, прежде чем переходить на работу с полным набором данных.

Если вы хотите чрезвычайно высокую производительность, то Vowpal Wabbit лучше подходит (но он поддерживает только обобщенные линейные обучающиеся, поэтому нет gbm или Random Forest.) Кроме того, VW не очень подходит для Windows.

2 голосов
/ 26 декабря 2011

Я бы порекомендовал посмотреть на стохастический градиентный спуск для такого масштаба проблемы.Хороший инструмент для просмотра - VowpalWabbit .При таком размере вы, вероятно, можете проводить свои эксперименты на рабочем столе с разумными характеристиками.Единственный недостаток для вас, я думаю, это то, что он не ориентирован на Windows, но хотя я не проверял, он должен работать на Cygwin.

РЕДАКТИРОВАТЬ: Был большой интересразработчики, чтобы VowpalWabbit работал на Windows.По состоянию на март 2013 года VowpalWabbit (версия 7.2) работает на Windows из коробки.Есть несколько расширенных / дополнительных функций, которые еще не реализованы в Windows, одна из них запускает VowpalWabbit в качестве демона, но, похоже, это будет обработано в ближайшем будущем.

...