Какой язык программирования вы рекомендуете для создания прототипа проблемы машинного обучения?

12

В настоящее время работает в Octave, но из-за плохой документации прогресс очень медленный.

Какой язык прост в изучении и использовании и хорошо документирован для решения проблем машинного обучения? Я ищу прототип на небольшом наборе данных (тысячи примеров), поэтому скорость не важна.

РЕДАКТИРОВАТЬ: я разрабатываю механизм рекомендации. Итак, я заинтересован в использовании Регулярной линейной регрессии, нейронных сетей, SVN или совместной фильтрации.

Б Семь
источник
1
Однажды я тоже начал с Octave, так как мой проф был увлечен matlab (ну, это было весело во время курсовой работы с использованием библиотеки prof, поскольку у matlab и octave не совсем одинаковый синтаксис), но затем я переключился на R и был просто потрясен это превосходная документация и разнообразие библиотек.
Штеффен
9
Python, конечно, очень легко изучать и читать, поэтому я думаю, что это дело вкуса. Я предлагаю следующие ссылки: python-stat-workbench , что-язык-программирования-для-статистического вывода , машинное обучение-использование-python , clojure
steffen
1
Я бы порекомендовал R, Python или Matlab. По причинам, слишком обширным, чтобы обращаться, я бы бросил Matlab. Для статистиков я бы выбрал R, а для программиста - Python. Для внутренних циклов я бы пошел с C / C ++. При достаточном масштабе затраты Matlab превышают любые выгоды.
Итератор
1
или посмотрите на
Джулию

Ответы:

7

Если вы хотите использовать что-то из коробки, Weka может стать отличной отправной точкой. Нет необходимости программировать что-либо. Вы импортируете свои данные, визуализируете их и играете с разными моделями.

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

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

Если вы пойдете по пути R, вы можете найти книгу Луиса Торго (Data Mining with R: Learning with Case Studies) очень полезной (раскрытие: нет принадлежности). В нем подробно описываются тематические исследования, которые вы можете адаптировать к вашей проблеме.

araroot
источник
15

Вы можете получить лучшие ответы, если укажете конкретные алгоритмы, которые вас интересуют. Я использую R для такого рода вещей (хотя я делаю эконометрику временных рядов, но не машинное обучение); Вы можете увидеть существующую функциональность здесь:

http://cran.r-project.org/web/views/MachineLearning.html

и есть код R для реализации анализа в Элементах статистического обучения Хасти, Тибширани и Фридмана :

http://www-stat.stanford.edu/~tibs/ElemStatLearn/

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

Серый
источник
11

В своем онлайн-курсе по машинному обучению Эндрю Нг предлагает использовать Octave / Matlab.

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

РЕДАКТИРОВАТЬ 1 : Я согласен с другими людьми, которые предпочитают работать в R. Тем не менее, при решении проблем машинного обучения большинство ваших вычислений будут в матричной форме, и, как указывают @Wayne, Matlab или Octave, языки очень популярны. из-за их силы. Возможно, вы захотите взглянуть на решения для курсовых упражнений, предлагаемых другими студентами; Конечно, вы можете узнать некоторые вещи из них:

Gkokaisel Github

Мерван Гитхуб

Мануэль Рамон
источник
1
Я зачислен в это издание курса! Проблема в том, что выполнение простейших вещей вне курса не работает! Документация бесполезна.
B Семь
3
Я должен сказать, что Matlab (таким образом, Octave) - ужасный язык программирования. Он очень популярен в области машиностроения и машинного обучения, но это связано с его мощью и используется в школах, а не потому, что это современный язык программирования. Тем не менее, вы будете чаще сталкиваться с текстами машинного обучения, которые используют его, чем вы будете использовать R или Python.
Уэйн
1
Я делаю всю свою работу в MATLAB, это не лучший язык программирования в мире (я бы сказал, что R был еще хуже; о), но с ним стоит продолжать, поскольку он очень хорош для исследований в области машинного обучения. Что касается нейронных сетей, поищите библиотеку NETLAB, а также исследуйте Gaussian Process с библиотекой GPML, оба являются отличными наборами, а IIRC работают с октавой. Для регуляризованной линейной регрессии это только одна строка MATLAB, для нелинейных моделей есть набор инструментов GKM , theoval.cmp.uea.ac.uk/projects/gkm (извините, пока нет).
Дикран Сумчатый
1
Матричные вычисления также могут быть выполнены в R, хотя обозначения, например, t(A) %*% Bменее интуитивны, чем в Matlab.
Итамар
1
Разве нет хороших матричных библиотек для каждого языка высокого уровня, такого как C #, Java, Python и Perl?
B 7
10

Scikit-Learn (теперь sklearn) должны соответствовать несколько критериев , описанных вами (скорость, хорошо разработанные классы для обработки данных, модели и результаты), в том числе целевых приложений (L1 / L2 нарушает регрессии, SVM, и т.д.). Он поставляется с богатым набором документации и множеством примеров . См. Также его описание в статье, опубликованной в JMLR.

Альтернативный фреймворк в Python - это Orange , который можно использовать через простой графический интерфейс или напрямую из командной строки. Для совместной фильтрации может быть интересен pyrsvd , но я никогда не пробовал. Тем не менее, Apache Mahout, безусловно, может быть использован для совместной фильтрации .

хл
источник
1

Если вы ссылаетесь на промышленный прототип (то есть то, что сделано для использования реальными людьми, а не для чистых исследований), то на данный момент Python - единственный путь.

Если вы используете Matlab, Octave или R, вы получаете простую в использовании среду для исследования ML, но это будет кошмаром, когда модель будет работать с пользовательским интерфейсом или веб-сервисом.

В Python нам повезло иметь как обширную научную экосистему ( sklearn для ML, pandas для переноса данных, matplotlib / seaborn для визуализации), так и экосистему приложений (подумайте о django и его остальной среде ).

Python это простой язык для изучения. Я надеюсь, что в будущем экосистема Javascript станет научно обоснованной, как экосистема Python, но, несмотря на некоторые замечательные проекты, я не ожидаю, что она скоро появится.

Не заворачивайся в коробку, используй общий язык!

Pieroit
источник