42
Использование Hadoop и Mahout в машинном обучении Созыкин Андрей Владимирович к.т.н. зав.кафедрой высокопроизводительных компьютерных технологий

DUMP-2013 Наука и жизнь - Использование Hadoop в машинном обучении - Созыкин Андрей

Embed Size (px)

DESCRIPTION

 

Citation preview

Page 1: DUMP-2013 Наука и жизнь - Использование Hadoop в машинном обучении - Созыкин Андрей

Использование Hadoop и Mahout в машинном обучении

Созыкин Андрей Владимирович

к.т.н.зав.кафедрой высокопроизводительных компьютерных технологий

Page 2: DUMP-2013 Наука и жизнь - Использование Hadoop в машинном обучении - Созыкин Андрей

2

Hadoop и Mahout Созыкин А.В.

Big Data

• Big Data – задачи обработки больших объемов данных:• Терабайты и петабайты• Высокая скорость обработки – невозможно

сделать традиционными подходами• Оценки аналитиков Gartner и IDC:

• Big Data входит в ТОП 10 наиболее важных тенденций развития информационных технологий

• Рынок Big Data один из самых быстрорастущих• MapReduce – одна из наиболее популярных моделей обработки данных в Big Data

Page 3: DUMP-2013 Наука и жизнь - Использование Hadoop в машинном обучении - Созыкин Андрей

3

Hadoop и Mahout Созыкин А.В.

План

• Основы MapReduce и Apache Hadoop• Экосистема Hadoop• Машинное обучение в Apache Mahout

Page 4: DUMP-2013 Наука и жизнь - Использование Hadoop в машинном обучении - Созыкин Андрей

4

Hadoop и Mahout Созыкин А.В.

История Hadoop и MapReduce

• Технологию MapReduce придумали в Google для системы поиска в Интернет:

• Цель – хранить и обрабатывать большие объемы данных на обычных компьютерах, объединенных сетью

• Goggle не распространяет свою реализацию MapReduce• Jeffrey Dean, Sanjay Ghemawat. MapReduce: Simplified Data

Processing on Large Clusters• Sanjay Ghemawat, Howard Gobioff, Shun-Tak Leung. The

Google File System• Apache Hadoop – открытая реализация MapReduce:

• Разработан на основе идей Google• Написан на Java• http://hadoop.apache.org/

Page 5: DUMP-2013 Наука и жизнь - Использование Hadoop в машинном обучении - Созыкин Андрей

5

Hadoop и Mahout Созыкин А.В.

Кто использует Hadoop

• Кто использует Hadoop:

• Самый большой кластер Hadoop в Yahoo!:• 4500 серверов• Используется для поисковой системы и подбора рекламных

объявлений

Page 6: DUMP-2013 Наука и жизнь - Использование Hadoop в машинном обучении - Созыкин Андрей

6

Hadoop и Mahout Созыкин А.В.

Основные технологии Hadoop

• HDFS (Hadoop Distributed File System) – хранение данных• MapReduce – обработка данных

Page 7: DUMP-2013 Наука и жизнь - Использование Hadoop в машинном обучении - Созыкин Андрей

7

Hadoop и Mahout Созыкин А.В.

HDFS

Файл

Page 8: DUMP-2013 Наука и жизнь - Использование Hadoop в машинном обучении - Созыкин Андрей

8

Hadoop и Mahout Созыкин А.В.

HDFS

Файл

64МБ 64МБ 64МБ

Page 9: DUMP-2013 Наука и жизнь - Использование Hadoop в машинном обучении - Созыкин Андрей

9

Hadoop и Mahout Созыкин А.В.

HDFS

Файл

64МБ 64МБ 64МБ

Page 10: DUMP-2013 Наука и жизнь - Использование Hadoop в машинном обучении - Созыкин Андрей

10

Hadoop и Mahout Созыкин А.В.

HDFS

Data Node 1 Data Node 2 Data Node 3

Data Node 4 Data Node 5 Data Node 6

Name Node

1, 4, 61, 3, 5

1, 2, 5

Page 11: DUMP-2013 Наука и жизнь - Использование Hadoop в машинном обучении - Созыкин Андрей

11

Hadoop и Mahout Созыкин А.В.

Работа с HDFS

• Блоки файлов в HDFS распределены по разным серверам:

• Нельзя смонтировать HDFS• Не работают стандартные команды ls, cp, mv и т.п.

• Необходимо использовать специальную команду:• $ hadoop dfs –cmd

• Примеры:$ hadoop dfs -lsFound 3 items-rw-r--r-- 1 hadoop supergroup 0 2011-06-22 13:58 /user/hadoop/file1-rw-r--r-- 1 hadoop supergroup 0 2011-06-22 13:58 /user/hadoop/file2-rw-r--r-- 1 hadoop supergroup 0 2011-06-22 13:58 /user/hadoop/file3 $ hadoop dfs -put /tmp/file4 $ hadoop dfs -cat file4Hello, world!

Page 12: DUMP-2013 Наука и жизнь - Использование Hadoop в машинном обучении - Созыкин Андрей

12

Hadoop и Mahout Созыкин А.В.

Особенности HDFS

• HDFS – специализированная файловая система, оптимизированная для параллельной потоковой работы с большими файлами

• Подходит не для всех задач!• Модель Write Once Read Many:

• Нельзя изменять файл, можно только добавлять в конец

• Большой размер блока:• По-молчанию 64 МБ (часто 128 или 256 МБ)• Не эффективен произвольный доступ (базы

данных и т.п.)

Page 13: DUMP-2013 Наука и жизнь - Использование Hadoop в машинном обучении - Созыкин Андрей

13

Hadoop и Mahout Созыкин А.В.

MapReduce

• MapReduce – технология распределенных вычислений• Цель MapReduce – разделить логику приложения и организацию распределенного взаимодействия:

• Программист реализует только логику приложения• Распределенная работа в кластере

обеспечивается автоматически• MapReduce работает с данными как с парами Ключ:Значение:

• смещение в файле: текст• идентификатор пользователя: профиль• пользователь: список друзей• временная метка: событие в журнале

Источник: http://www.youtube.com/watch?v=SS27F-hYWfU

Page 14: DUMP-2013 Наука и жизнь - Использование Hadoop в машинном обучении - Созыкин Андрей

14

Hadoop и Mahout Созыкин А.В.

Функции Map и Reduce

Источник: http://developer.yahoo.com/hadoop/tutorial/module4.html

Page 15: DUMP-2013 Наука и жизнь - Использование Hadoop в машинном обучении - Созыкин Андрей

15

Hadoop и Mahout Созыкин А.В.

Пример MapReduce: WordCount

• Задача: посчитать, сколько раз слово встречается в файле

• Количество обращений к Web-страницам• Количество просмотра видео или прослушивания

песни• Исходные данные:

• Текстовые файлы• Каждый файл делится на пары: Смещение:Тест

• Пример:• Цель MapReduce – разделить логику приложения и организацию

распределенного взаимодействия. Программист реализует только логику приложения

Page 16: DUMP-2013 Наука и жизнь - Использование Hadoop в машинном обучении - Созыкин Андрей

16

Hadoop и Mahout Созыкин А.В.

WordCount: функция Map

• Исходные данные:• Цель MapReduce – разделить логику приложения и организацию

распределенного взаимодействия. Программист реализует только логику приложения

• Результаты обработки:• <цель, 1>, <mapreduce,1>, <разделить, 1>, <логику,1>, <приложения,

1>, <и, 1>, <организацию, 1>, <распределенного, 1>, <взаимодействия, 1>, <программист, 1>, <реализует, 1>, <только,1>, <логику, 1>, <приложения, 1>

• Сортировка и группировка по ключу:• <mapreduce,1>, <взаимодействия, 1>, <и, 1>, <логику,1>, <логику,

1>, <организацию, 1>, <приложения, 1>, <приложения, 1>, <программист, 1>, <разделить, 1>, <распределенного, 1>, <реализует, 1>, <только,1>, <цель, 1>.

Page 17: DUMP-2013 Наука и жизнь - Использование Hadoop в машинном обучении - Созыкин Андрей

17

Hadoop и Mahout Созыкин А.В.

WordCount: функция Reduce

• Пары с одинаковыми ключами передаются в одну функцию Reduce:

<mapreduce,1> <mapreduce,1> <взаимодействия, 1> <взаимодействия, 1> <и, 1> <и, 1> <логику,1>, <логику, 1> <логику, 2> <организацию, 1> <организацию, 1> <приложения, 1>, <приложения, 1> <приложения, 2><программист, 1> <программист, 1> <разделить, 1> <разделить, 1> <распределенного, 1> <распределенного, 1> <реализует, 1> <реализует, 1> <только,1> <только,1> <цель, 1> <цель, 1>

Page 18: DUMP-2013 Наука и жизнь - Использование Hadoop в машинном обучении - Созыкин Андрей

18

Hadoop и Mahout Созыкин А.В.

Модель MapReduce

• MapReduce – странный подход к решению задачи WordCount

• Есть более простые и интуитивно понятные решения• Достоинства MapReduce:

• Возможность автоматического распараллеливания – функции Map и Reduce могут обрабатывать элементы списка параллельно не зависимо друг от друга

• Масштабируемость – данные могут размещаться на разных серверах (в HDFS) и обрабатываться также на разных серверах

• Отказоустойчивость – при выходе из строя сервера функции Map или Reduce запускаются на другом сервере

• Недостатки MapReduce:• Фиксированный алгоритм обработки данных• Высокие накладные расходы на распараллеливание

Page 19: DUMP-2013 Наука и жизнь - Использование Hadoop в машинном обучении - Созыкин Андрей

19

Hadoop и Mahout Созыкин А.В.

Перемещение вычислений к данным

Page 20: DUMP-2013 Наука и жизнь - Использование Hadoop в машинном обучении - Созыкин Андрей

20

Hadoop и Mahout Созыкин А.В.

Пример запуска задачи Hadoop

• $ hadoop jar hadoop-examples-*.jar grep input output 'dfs[a-z.]+'

• hadoop-examples-*.jar – Имя архива с примерами из дистрибутива Hadoop

• grep – Имя команды в архиве с примерами• input – Каталог входных данных (в HDFS)• output – Каталог выходных данных (в HDFS)• 'dfs[a-z.]+' – Шаблон для поиска

Page 21: DUMP-2013 Наука и жизнь - Использование Hadoop в машинном обучении - Созыкин Андрей

21

Hadoop и Mahout Созыкин А.В.

Экосистема Hadoop

• MapReduce – мощная модель программирования, но низкоуровневая

• Реализация практически полезных алгоритмов требует высоких трудозатрат

• Hadoop сложен в установке и администрировании• На основе Hadoop сложилась экосистема:

• Программные продукты для решения различных прикладных задач, использующие Hadoop для масштабирования

• Дистрибутивы Hadoop• Облачный хостинг для Hadoop

Page 22: DUMP-2013 Наука и жизнь - Использование Hadoop в машинном обучении - Созыкин Андрей

22

Hadoop и Mahout Созыкин А.В.

Экосистема Hadoop

• Pig – декларативный язык анализа данных• Hive – анализ данных с использованием языка, близкого к SQL• Oozie – поток работ в Hadoop• Hbase – база данных (нереляционная), аналог Google Big Table• Mahout – машинное обучение• Sqoop – перенос данных из РСУБД в Hadoop и наоборот• Flume – перенос логов в HDFS• Zookeeper, MRUnit, Avro, Giraph, Ambari, Cassandra, HCatalog, Fuse-DFS и т.д.

Page 23: DUMP-2013 Наука и жизнь - Использование Hadoop в машинном обучении - Созыкин Андрей

23

Hadoop и Mahout Созыкин А.В.

Дистрибутивы Hadoop

• Apache• hadoop.apache.org• Оригинальный дистрибутив, только Hadoop

• Альтернативные дистрибутивы:• Совместно Hadoop, HBase, Pig, Hive, Mahout, Sqoop,

Zookeeper и др.• Средства автоматизации установки и

администрирования, мониторинг, безопасность

• Поставщики альтернативных дистрибутивов:

• Cloudera• MapR• Hortonworks• Intel

Page 24: DUMP-2013 Наука и жизнь - Использование Hadoop в машинном обучении - Созыкин Андрей

24

Hadoop и Mahout Созыкин А.В.

Облачный хостинг Hadoop

• Amazon Elastic MapReduce (Amazon EMR)• http://aws.amazon.com/elasticmapreduce/ • Партнерство с MapR

• Apache Hadoop on Rackspace• http://www.rackspace.com/knowledge_center/article/

apache-hadoop-on-rackspace-private-cloud • Партнерство с Hortonworks

• Microsoft Windows Azure• http://www.windowsazure.com/en-us/home/scenarios/big-data/

• Qubole Data Service• http://www.qubole.com/qubole-data-service • Web-интерфейс для анализа данных с Hadoop, Hive,

Pig и др. на Amazon EMR

Page 25: DUMP-2013 Наука и жизнь - Использование Hadoop в машинном обучении - Созыкин Андрей

25

Hadoop и Mahout Созыкин А.В.

Apache Mahout

• Масштабируемая библиотека машинного обучения (machine learning)• Режимы работы:

• В кластере Hadoop• Отдельно на одном компьютере

• Mahout – слово из индийского языка, означает погонщик слонов• Открытые исходные коды:

• Написан на Java• Лицензия Apache 2.0

• Страница проекта:• http://mahout.apache.org/

Page 26: DUMP-2013 Наука и жизнь - Использование Hadoop в машинном обучении - Созыкин Андрей

26

Hadoop и Mahout Созыкин А.В.

Машинное обучение в Mahout

• Коллаборативная (совместная) фильтрация• Рекомендации

• Кластеризация• Объединение объектов в группы (кластеры, заранее не

известные)• Примеры: Google News объединяет новости на одну тему• Алгоритмы в Mahout: K-Means, Fuzzy K-Means, Mean Shift,

Dirichlet, Canopy и др. • Классификация:

• Определение принадлежности объекта к заданному классу (классы известны заранее)

• Примеры: определение спама, определение тематики текста (текст о политике, спорте и т.п.)

• Алгоритмы в Mahout: Logistic Regression, Naive Bayes, Support Vector Machines, Online Passive Aggressive и др.

Page 27: DUMP-2013 Наука и жизнь - Использование Hadoop в машинном обучении - Созыкин Андрей

27

Hadoop и Mahout Созыкин А.В.

Рекомендации

Page 28: DUMP-2013 Наука и жизнь - Использование Hadoop в машинном обучении - Созыкин Андрей

28

Hadoop и Mahout Созыкин А.В.

Актуальность рекомендаций

• Хорошая система рекомендаций может существенно повысит доход от продаж и рекламы• $1M NetflixPrize:

• Компания Netflix устроила соревнования по улучшению алгоритма рекомендации DVD

• Размер приза: 1 миллион долларов• Условие получения приза: улучшить алгоритм

рекомендации на 10%• Приз получила команда «BellKor’s Pragmatic Chaos» в

2009 г.• Соревнования проходили с 2006 по 2009 г.• Каждый год выплачивался приз за прогресс $50 000• http://www.netflixprize.com/

Page 29: DUMP-2013 Наука и жизнь - Использование Hadoop в машинном обучении - Созыкин Андрей

29

Hadoop и Mahout Созыкин А.В.

Способы рекомендаций

• На основе контента• Пример: пользователь выбрал книгу Пушкина, значит

можно рекомендовать ему другую книгу Пушкина или классическую литературу

• Недостаток: система рекомендаций сильно зависит от домена и непереносима

• На основе предпочтений• Рекомендации на основе оценок пользователей• Объекты рекомендации могут быть любыми• Можно реализовать общую систему, не зависимую от

домена• Реализован в Mahout

Page 30: DUMP-2013 Наука и жизнь - Использование Hadoop в машинном обучении - Созыкин Андрей

30

Hadoop и Mahout Созыкин А.В.

Предпочтение

• Рекомендации в Mahout выдаются на основе предпочтений пользователей• Предпочтение в Mahout:

• Пользователь (целое число)• Объект (целое число)• Предпочтение (число двойной точности)

• Пример данных о предпочтениях для Mahout из проекта GroupLens (Университет Минесоты) – оценка пользователями фильмов: 196 242 3 881250949 186 302 3 891717742 22 377 1 878887116 244 51 2 880606923user id | item id | rating | timestamp

(Не используется в Mahout)

Page 31: DUMP-2013 Наука и жизнь - Использование Hadoop в машинном обучении - Созыкин Андрей

31

Hadoop и Mahout Созыкин А.В.

Подходы к рекомендации

• На основе пользователей:• Найти пользователей с похожими вкусами• Посмотреть, что нравится этим пользователям• Рекомендовать объекты в соответствии с предпочтениями

похожих пользователей• Недостатки: подход плохо масштабируется, предпочтения

быстро меняются• На основе объектов:

• Найти объекты, похожие на те, которые понравились пользователю

• Рекомендовать наиболее популярные из них• Преимущества: хорошо масштабируется, оценки объектов

меняются редко. Рекомендации можно генерировать в автономном режиме (с использованием Hadoop)

Page 32: DUMP-2013 Наука и жизнь - Использование Hadoop в машинном обучении - Созыкин Андрей

32

Hadoop и Mahout Созыкин А.В.

Рекомендации на основе пользователей

public static void main(String[] args) throws Exception { DataModel model = new FileDataModel (new File("u.data")); UserSimilarity similarity = new PearsonCorrelationSimilarity (model); UserNeighborhood neighborhood = new NearestNUserNeighborhood (2, similarity, model); Recommender recommender = new GenericUserBasedRecommender ( model, neighborhood, similarity); List<RecommendedItem> recommendations = recommender.recommend(1, 1); for (RecommendedItem recommendation : recommendations) { System.out.println(recommendation); }}

RecommendedItem [item:643, value:4.27682]

Page 33: DUMP-2013 Наука и жизнь - Использование Hadoop в машинном обучении - Созыкин Андрей

33

Hadoop и Mahout Созыкин А.В.

Рекомендации на основе пользователей

Источник: Sean Owen, Robin Anil, Ted Dunning, and Ellen Friedman. Mahout in Action

Page 34: DUMP-2013 Наука и жизнь - Использование Hadoop в машинном обучении - Созыкин Андрей

34

Hadoop и Mahout Созыкин А.В.

Выбор похожих пользователей

• Как определить, что вкусы пользователей похожи?• Мера «похожести» - число от -1 до 1.

• 1 – вкусы пользователей совпадают• 0 – у пользователей нет общих вкусов• -1 – вкусы пользователей противоположны

• Mahout использует несколько алгоритмов расчета «похожести»:

• Коэффициент Пирсона• Евклидово расстояние• Корреляция Спирмена• Коэффициент Танимото• Логарифмическое правдоподобие

Page 35: DUMP-2013 Наука и жизнь - Использование Hadoop в машинном обучении - Созыкин Андрей

35

Hadoop и Mahout Созыкин А.В.

«Соседние» пользователи

Источник: Sean Owen, Robin Anil, Ted Dunning, and Ellen Friedman. Mahout in Action

Фиксированное число соседей(NearestNUserNeighborhood )

Соседи в пределах границы(ThresholdUserNeighborhood)

Page 36: DUMP-2013 Наука и жизнь - Использование Hadoop в машинном обучении - Созыкин Андрей

36

Hadoop и Mahout Созыкин А.В.

Выбор параметров

• Какой тип «похожести» пользователей лучше?• Какой тип «соседства» лучше?• Критерии оценки:

• Однозначного ответа нет• Результаты разные для разных данных• Проводите эксперименты с разными параметрами!

Источник: Sean Owen, Robin Anil, Ted Dunning, and Ellen Friedman. Mahout in Action

Page 37: DUMP-2013 Наука и жизнь - Использование Hadoop в машинном обучении - Созыкин Андрей

37

Hadoop и Mahout Созыкин А.В.

Рекомендации на основе объектов

public static void main(String[] args) throws Exception { DataModel model = new FileDataModel (new File("u.data")); ItemSimilarity itemSimilarity = new LogLikelihoodSimilarity(dataModel);

ItemBasedRecommender recommender = new GenericItemBasedRecommender(dataModel, itemSimilarity);

List<RecommendedItem> recommendations =

recommender.recommend(1, 1) for (RecommendedItem recommendation : recommendations) { System.out.println(recommendation); }}

RecommendedItem [item:271, value:4.27682]

Page 38: DUMP-2013 Наука и жизнь - Использование Hadoop в машинном обучении - Созыкин Андрей

38

Hadoop и Mahout Созыкин А.В.

Mahout и Hadoop

Источник: Sean Owen, Robin Anil, Ted Dunning, and Ellen Friedman. Mahout in Action

Page 39: DUMP-2013 Наука и жизнь - Использование Hadoop в машинном обучении - Созыкин Андрей

39

Hadoop и Mahout Созыкин А.В.

Mahout и Hadoop

• Mahout может работать как отдельно, так и в кластере Hadoop• Запуск рекомендации Mahout в Hadoop выполняется с помощью класса RecommenderJob• Данные о предпочтениях должны быть записаны в HDFS• Полученные рекомендации записываются в HDFS

• Рекомендации можно перенести в базу данных с помощью sqoop

Page 40: DUMP-2013 Наука и жизнь - Использование Hadoop в машинном обучении - Созыкин Андрей

40

Hadoop и Mahout Созыкин А.В.

Пример запуска Mahout в Hadoop

$ hadoop jar mahout-core-0.7-job.jar \ org.apache.mahout.cf.taste.hadoop.item.RecommenderJob \ -Dmapred.input.dir=input -Dmapred.output.dir=output --usersFile users_list.txt• Возможные параметры:

• Dmapred.input.dir – каталог с данными о предпочтениях (в HDFS, может быть несколько файлов)

• Dmapred.output.dir – каталог, куда записываются сгенерированные рекомендации (в HDFS)

• --usersFile – файл с идентификаторами пользователей, для которых нужно сгенерировать рекомендации

• --similarityClassname – имя класса, который реализует расчет «похожести»

• --numRecommendations – количество рекомендаций на одного пользователя

Page 41: DUMP-2013 Наука и жизнь - Использование Hadoop в машинном обучении - Созыкин Андрей

41

Hadoop и Mahout Созыкин А.В.

Итоги

• MapReduce – программная модель для обработки больших объемов данных (BigData)• Hadoop – открытая реализация MapReduce• Экосистема Hadoop• Mahout – машинное обучение в Hadoop:

• Рекомендации, классификация, кластеризация• Рекомендации в Mahout:

• Предпочтения: пользователь, объект, оценка• Рекомендации на основе пользователей и на основе

объектов• «Похожесть» пользователей и объектов• «Соседство» пользователей• Запуск Mahout RecommenderJob в Hadoop

Page 42: DUMP-2013 Наука и жизнь - Использование Hadoop в машинном обучении - Созыкин Андрей

42

Hadoop и Mahout Созыкин А.В.

Вопросы?

КонтактыАндрей Созыкин[email protected]