January 26th, 2015

Большие данные и машинное обучение, попробовать самому

Александр Крот, студент ФИВТ МФТИ, мой хороший товарищ и, в недавнем, коллега, запустил цикл статей о практических инструментах интеллектуального анализа больших данных и машинного обучения (Data mining и machine learning).

Уже опубликовано 3 статьи, надеюсь, что дальше будет больше:
1) Введение в машинное обучение с помощью Python и Scikit-Learn
2) Искусство Feature Engineering в машинном обучении
3) Когда данных действительно много: Vowpal Wabbit

В опубликованных статьях делается акцент на практических аспектах работы с инструментами для автоматического анализа данных и с алгоритмами, которые позволяют подготовить данные к эффективному машинному анализу. В частности, приведены примеры кода на языке Python (кстати, именно на Пайтоне мы недавно писали расширение для отрисовки реечной передачи в Инкскейпа) со специализированной библиотекой Scikit-Learn, которые можно быстренько запустить на домашнем компьютере или персональном облаке, чтобы почувствовать вкус больших данных самостоятельно.

Недавно я размышлял о том, как было бы хорошо управлять маленькими легковесными автономными роботами из больших облаков, в которых выполняются сложные ресурсоемкие алгоритмы. Знакомство с приведенными инструментами позволит теперь провести практические эксперименты в этом направлении (программу на Пайтоне, кстати, можно запустить и на встроенном в контроллер Линуксе, но вот примеры с перемалыванием гигабайтов данных мобильный процессор навряд ли потянет). И еще кстати, Скала тоже пользуется уважением в среде инженеров, работающих с большими данными, интегрировать такой код в наш Сервер Роботов будет еще проще.

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


Первую статью утащу для затравки, остальное по ссылкам на Хабре:

Collapse )

Poll #1996830 Как думаете,

Зачем роботу большие данные?

Находить в лесу грибы
1(14.3%)
Находить в лесу подосиновики и отпиннывать поганки
1(14.3%)
Собирать колорадских жуков с листьев картошки
2(28.6%)
Пропалывать картошку (отличать ботву от сорняков)
2(28.6%)
Удить в пруду ландышей и прогонять лягушек
1(14.3%)
Ловить в поле кузнечиков
0(0.0%)
Бить ракеткой от бадминтона по шершню и быстро убегать
0(0.0%)
Большие данные вообще не для этого
0(0.0%)
Другое (пояснить в комментарииях)
0(0.0%)