Привет.
Моя первая статья на Хабре показала, что не многие знают о библиотеке Mahout. (Может быть, конечно, я в этом ошибаюсь.) Да и ознакомительного материала по этой теме здесь нет. Поэтому я решил написать пост, рассказывающий о возможностях библиотеки. Пара проб пера показали, что лучшим введением в тему будут небольшие выдержки из книги “Mahout in Action” Owen, Anil, Dunning, Friedman. Поэтому я сделал вольный перевод некоторых мест, которые, как мне кажется, хорошо рассказывают об области применения Mahout.
Встречаем Apache Mahout (1)
* Здесь и далее в скобках указана глава из книги.
- Mahout это opensource библиотека для машинного обучения от Apache. Алгоритмы, которые библиотека реализует в совокупности можно назвать машинным обучением или коллективным интеллектом. Это может означать многое, но в настоящий момент это означает в первую очередь рекомендательные системы (коллаборативная фильтрация), кластеризацию и классификацию.
- Mahout масштабируем. Mahout стремиться стать инструментом машинного обучения с возможностью обработки данных на одной или нескольких машинах. В текущей версии Mahout масштабируемые реализации машинного обучения написаны на java, а некоторые части построены на проекте распределенных вычислений Apache Hadoop.
- Mahout это java библиотека. Она не предоставляет пользовательского интерфейса, предупакованного сервера или установщика. Это фреймворк инструментов, предназначенных для использования и адаптации разработчиками.
…
Mahout содержит ряд моделей и алгоритмов, многие все еще в разработке или экспериментальной фазе (алгоритмы). На этом раннем этапе жизни проекта, три ключевые темы наиболее заметны: рекомендательные системы (коллаборативная фильтрация), кластеризация и классификация. Это далеко не все что есть в Mahout, но эти темы наиболее заметные и зрелые.
…
В теории Mahout — это проект, открытый для реализации любого вида моделей машинного обучения. На практике в настоящий момент реализованны три ключевых области машинного обучения.
…
Рекомендательные системы. (1.2.1)
Рекомендательные системы – это наиболее узнаваемая модель машинного обучения из используемых сегодня. Вы видите сервисы или сайты которые пытаются рекомендовать книги или фильмы, или статьи, базируясь на ваших предыдущих действиях. Они пытаются выводить вкусы и предпочтения, и идентифицировать неизвестные предметы, которые представляют интерес.
- Amazon.com это, возможно, наиболее известный сайт в электронной комерции применивший рекомандации. Основываясь на покупках и активности на сайте, амазон рекомендует книги и другие вещи которые могут вызвать интерес.
- Netflix также рекомендует DVD, которые могут быть интересны и предлагают приз в 1М$ для исследователей, которые могут улучшить качество их рекомендаций.
- Социальные сети, такие как Фейсбук, используют варианты рекомендетельных техник для выявления людей, наиболее вероятно подходящих под определение “еще не связанных друзей”.
Кластеризация (1.2.2)
Кластеризация менее очевидна, но оказывается в не менее известных упоминаниях. Как следует из названия, методы кластеризации пытаются группировать большие числа предметов вместе в кластеры, которые имеют общее сходство. Таким образом устанавливают иерархию и порядок в больших или трудных для понимания множествах данных, и таким способом устанавливают интересные закономерности или делают набор данных более легким для понимания.
- Google News группирует новостные статьи по названию, используя технику кластеризации.
- Поисковые механизмы такие как Clusty так же группируют свои поисковые результаты.
- Заказчики могут быть сгруппированы в сегменты (кластера) при помощи техники кластеризации, основанные на атрибутах: доход, местоположение, покупательские привычки.
Кластеризация помогает определять структуру и даже иерархию, в большой коллекции вещей, которую, может быть, даже сложно осмыслить. Предприятия могут использовать эту технику для определения скрытых групп среди пользователей, или разумной организации большой коллекции документов, или определения общих паттернов использования для сайтов используя их логи.
Классификация (1.2.3)
Модели классификации решают является или нет предмет частью определенной категории или есть ли у нее некоторый атрибут. …
- Yahoo! Mail решает является или нет входящее сообщение спамом, основываясь на предшествующих письмах и сообщений на спам от пользователей, а также характеристиках самих писем.
- Google's Picasa и другие приложения для управления фотографиями могут определять область изображения содержащую человеческое лицо.
- Программа оптического распознавания символов классифицирует малые области отсканированного текста на отдельные символы.
Классификация помогает решить соответствует ли новый кусок вводных данных или предмет предыдущим рассмотренным шаблонам; и она часто используется для классификации поведения или шаблона. Это может быть использовано для обнаружения подозрительной сетевой активности или мошенничества. А также для выяснения того, указывает на разочарование или удовлетворение сообщение пользователя.
Каждая из этих моделей работает лучше, когда снабжена большим количеством хороших входных данных. В некоторых случаях, эти методы должны не только работать на больших объемах данных, но должны получать результат быстро, и эти факторы делают масштабируемость главной задачей. Одна из основных причин использовать Mahout это именно масштабируемость.
Как неоднократно отмечается в книге, нет готового рецепта который можно взять и применить к типовой ситуации. Для каждого случая нужно пробовать различные алгоритмы и входные данные. Только поняв суть алгоритмов можно успешно применять библиотеку.
Автор: grinCo