11 инструментов с открытым кодом для машинного обучения

Фильтрование спама, распознавание лиц, рекомендательные движки — когда у вас есть большой пул данных, на котором вы хотите заниматься прогнозным анализом, — без машинного обучения никуда.
С ПО с открытым кодом стало проще внедрять машинное обучение на отдельных компьютерах и в сетях на самых популярных языках программирования. Эти инструменты для машинного обучения с открытым кодом включают библиотеки для Python, R, C++, Java, Scala, Clojure, JavaScript и Go.

Инструменты для машинного обучения

Scikit-learn

Python стал популярным языком программирования в математике и статистике благодаря тому, что его легко применять, и тому, что почти под любое приложение есть нужные библиотеки. Scikit по максимуму использует эти возможности, достраиваясь к существующим пакетам Python — NumPy, SciPy и Matplotlib — для математических вычислений. Такие объединенные библиотеки могут использоваться для интерактивных приложений в среде разработки или быть встроенными в другое ПО и заново использоваться. Набор доступен по лицензии BSD, поэтому он полностью открыт и может многократно использоваться.

Проект: scikit-learn

GitHub: Scikit на GitHub

Shogun

Venerable Shogun был создан в 1999 году и написан на C++, но он может использоваться с языками Java, Python, C#, Ruby, R, Lua, Octave и Matlab. Последняя версия 6.0.0 добавляет нативную поддержку для Microsoft Windows и языка Scala.

У Shogun есть конкурент. Другая библиотека машинного обучения, созданная на основе C++, Mlpack, использовалась только с 2011 года, но с ней быстрее и легче работать — благодаря целостному набору API.

Проект: Shogun 

GitHubShogun на GitHub

Фреймворк Accord.net

Accord, фреймворк для машинного обучения и обработки сигналов для .Net, — расширение предыдущего проекта в том же духе, AForge.net. Accord включает набор библиотек для обработки аудиосигналов и видео. Его алгоритмы обработки визуальных образов могут использоваться для таких задач, как распознавание лиц, склейки изображений или для отслеживания двигающихся объектов.

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

Проект: Фреймворк Accord/AForge.net

GitHub: Фреймворк Accord на GitHub

Apache Mahout

Apache Mahout был долго связан с Hadoop, но многие алгоритмы под его эгидой также могут работать вне Hadoop. Они полезны для самостоятельных приложений, которые могут быть перенесены в Hadoop или проекты Hadoop, которые могут отделиться в свои отдельные приложения. Последние несколько версий поддерживают фреймворк Spark; также добавилась поддержка библиотеки ViennaCL для линейной алгебры с ускорением на графических процессорах.

Проект: Mahout

Spark MLlib

Библиотека машинного обучения для Apache Spark и Apache Hadoop, MLlib располагает большим количеством общих алгоритмов и полезных видов данных, предназначенных для масштабных проектов. Хотя Java — основной язык при работе с MLlib, пользователи Python могут подключать ее к библиотеке NymPy; пользователи R могут подключаться к Spark, начиная с версии 1.5.

Проект: MLlib

H2O

Алгоритмы H2O скорее предназначены для бизнес-процессов — для прогнозов по тенденциям, например, — чем для анализа изображений. H2O может самостоятельно взаимодействовать с распределенной файловой системой Hadoop, в MapReduce или прямо на Amazon EC2.

Проект: H2O

GitHub: проект на GitHub

Cloudera Oryx

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

GitHub: проект Cloudera Oryx

GoLearn

GoLearn, библиотека машинного обучения для языка Google Go, была создана, чтобы упростить и индивидуализировать процесс. Простота в том, как данные загружаются и обрабатываются в библиотеке, которая создана по образу SciPy и R. Индивидуализирование проявляется в том, как некоторые из структур данных могут легко растягиваться в приложении.

GitHub: проект GoLearn

Weka

Weka — это комплект алгоритмов машинного обучения Java, специально созданного для извлечения данных. В этом наборе есть система пакетов для расширения функционала, где доступны официальные и неофициальные пакеты. Weka идет вместе с инструкцией, в которой объясняется, как используются ПО и технологии.
Weka не нацелен именно на пользователей Hadoop, но самые последние версии могут использоваться с Hadoop благодаря системе оберточного функционала. Пока Weka не поддерживает Spark, только MapReduce. Пользователи Clojure могут использовать Weka через библиотеку Clj-ml.

Проект: Weka

Deeplearn.js

Другой проект для глубокого обучения в браузере, Deeplearn.js, идет через Google. Модели нейронных сетей можно напрямую тренировать в любом современном браузере, без дополнительного клиентского ПО. Deeplearn.js также может выполнять вычисления с ускорением на графических процессорах c WebGL API, поэтому его производительность не ограничивается процессорной мощностью системы. Функционал доступный в проекте сделан по образцу Google TensorFlow.

ПроектDeeplearn.js

ConvNetJS

Как намекает название, ConvNetJS — библиотека JavaScript для нейронного сетевого машинного обучения, которая использует браузер как среду разработки данных. Версия NPM также доступна для тех, кто использует Node.js, а библиотека сделана таким образом, чтобы правильно использовать асинхронность JavaScript.

Проект: ConvNetJS
GitHub: проект ConvNetJS

Источник: статья в издании Infoworld

Валерия

Руковожу контент-направлением, работаю в сфере маркетинга и редактуры 4 года.