Подтвердить что ты не робот

Крупномасштабное машинное обучение

Мне нужно запустить различные методы машинного обучения в большом наборе данных (10-100 миллиардов записей) Проблемы в основном связаны с извлечением текста/извлечением информации и включают различные методы ядра, но не ограничиваются ими (мы используем некоторые байесовские методы, загрузку, повышение градиента, деревья регрессии - много разных проблем и способы их решения).

Какая была бы лучшая реализация? Я имею опыт работы в ML, но не имею большого опыта, как это сделать для огромных наборов данных Существуют ли расширяемые и настраиваемые библиотеки Machine Learning, использующие инфраструктуру MapReduce Сильное предпочтение С++, но Java и python в порядке Amazon Azure или собственный центр обработки данных (мы можем себе это позволить)?

4b9b3361

Ответ 1

Если пространство состояний классификации, которое вы пытаетесь изучить, чрезвычайно велико, я бы ожидал значительного избыточности в наборе данных, ориентированного на текст, с 10-100 миллиардами записей или учебных образцов. В качестве приблизительного предположения я бы сомневался, что для изучения надежных классификаторов, которые будут хорошо выдерживаться при проверке перекрестной проверки, потребуется гораздо больше, чем 1-2% выборочного выборочного подмножества.

Быстрый поиск литературы привел к следующим соответствующим статьям. В бумаге Цанга утверждается O (n) сложность времени для n учебных образцов, и есть программное обеспечение, связанное с ней, доступное как LibCVM toolkit. В статье Вулфа описывается распределенный подход EM на основе MapReduce.

Наконец, на конференции NIPS 2009 был проведен семинар по крупномасштабному обучению машинам, на котором было много интересных и актуальных презентаций.

Ссылки

Ivor W. Tsang, James T. Kwok, Pak-Ming Cheung (2005). "Основные векторные машины: быстрое обучение SVM на очень больших наборах данных ", журнал "Исследование машинного обучения", том 6, стр. 363-392.

J Wolfe, A Haghighi, D Klein (2008). "Полностью распределенная EM для очень больших наборов данных ", Материалы 25-й Международной конференции по машинному обучению, стр. 1184-1191.

Оливье Лагерь, Хоаким Б. Л. Филипе, Слиман Хаммуди и Марио Пьяттини (2005). "Mining Very Large Datasets с поддержкой алгоритмов векторной машины ", Enterprise Information Systems V, Springer Netherlands, стр. 177-184.

Ответ 2

Apache Mahout - это то, что вы ищете.

Ответ 3

Поздний ответ, но вот хорошая ссылка для крупномасштабного интеллектуального анализа данных и машинного обучения: Проект GraphLab состоит из основного С++ GraphLab API и набора высокопроизводительных инструментов для машинного обучения и интеллектуального анализа данных, построенных поверх API GraphLab. Кроме того, мы активно разрабатываем новые интерфейсы, позволяющие пользователям использовать API GraphLab с других языков и технологий.

Ответ 4

Я не знаю ни одной библиотеки ML, которая может поддерживать от 10 до 100 миллиардов записей, что немного экстремально, поэтому я не ожидал ничего найти с полки. Я бы рекомендовал, чтобы вы посмотрели победителей приза NetFlix: http://www.netflixprize.com//community/viewtopic.php?id=1537

Премия NetFlix насчитывала более 100 миллионов записей, поэтому, хотя она не такая большая, как ваш набор данных, вы все равно можете найти, что их решения будут применимы. Что сделала команда BelKor, состояла в том, чтобы объединить несколько алгоритмов (что-то вроде обучения в ансамбле) и весить" предсказание" или выход каждого алгоритма.

Ответ 5

Мне не известно о какой-либо библиотеке ML, которая использует map/reduce. Возможно, у вас есть возможность использовать библиотеку ML и библиотеку Map/Reduce вместе? Вы можете посмотреть в Hadoop Map/Reduce: http://hadoop.apache.org/mapreduce/

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

вы можете запустить его в своем кластере или, если вы проводите исследование, возможно, вы можете посмотреть в BOINC (http://boinc.berkeley.edu/).

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

Ответ 6

Взгляните на http://hunch.net/?p=1068 для информации о Vowpal Wabbit; это библиотека стохастического градиентного спуска для крупномасштабных приложений.

Ответ 7

Мой друг работал над подобным проектом. Он использовал perl для текстовой разработки и matlab для методов, таких как байесовские методы, скрытый семантический анализ и гауссова смесь...