Скачать презентацию Использование Hadoop и Mahout в машинном обучении Созыкин Скачать презентацию Использование Hadoop и Mahout в машинном обучении Созыкин

7d88b3148990f32b5dc9b119f9ec87d5.ppt

  • Количество слайдов: 42

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

Hadoop и Mahout Созыкин А. В. Big Data • Big Data – задачи обработки Hadoop и Mahout Созыкин А. В. Big Data • Big Data – задачи обработки больших объемов данных: • Терабайты и петабайты • Высокая скорость обработки – невозможно сделать традиционными подходами • Оценки аналитиков Gartner и IDC: • Big Data входит в ТОП 10 наиболее важных тенденций развития информационных технологий • Рынок Big Data один из самых быстрорастущих • Map. Reduce – одна из наиболее популярных моделей обработки данных в Big Data 2

Hadoop и Mahout Созыкин А. В. План • Основы Map. Reduce и Apache Hadoop Hadoop и Mahout Созыкин А. В. План • Основы Map. Reduce и Apache Hadoop • Экосистема Hadoop • Машинное обучение в Apache Mahout 3

Hadoop и Mahout Созыкин А. В. История Hadoop и Map. Reduce • Технологию Map. Hadoop и Mahout Созыкин А. В. История Hadoop и Map. Reduce • Технологию Map. Reduce придумали в Google для системы поиска в Интернет: • Цель – хранить и обрабатывать большие объемы данных на обычных компьютерах, объединенных сетью • Goggle не распространяет свою реализацию Map. Reduce • Jeffrey Dean, Sanjay Ghemawat. Map. Reduce: Simplified Data Processing on Large Clusters • Sanjay Ghemawat, Howard Gobioff, Shun-Tak Leung. The Google File System • Apache Hadoop – открытая реализация Map. Reduce: • Разработан на основе идей Google • Написан на Java • http: //hadoop. apache. org/ 4

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

Hadoop и Mahout Созыкин А. В. Основные технологии Hadoop • HDFS (Hadoop Distributed File Hadoop и Mahout Созыкин А. В. Основные технологии Hadoop • HDFS (Hadoop Distributed File System) – хранение данных • Map. Reduce – обработка данных 6

Hadoop и Mahout Созыкин А. В. HDFS Файл 7 Hadoop и Mahout Созыкин А. В. HDFS Файл 7

Hadoop и Mahout Созыкин А. В. HDFS Файл 64 МБ 8 Hadoop и Mahout Созыкин А. В. HDFS Файл 64 МБ 8

Hadoop и Mahout Созыкин А. В. HDFS Файл 64 МБ 9 Hadoop и Mahout Созыкин А. В. HDFS Файл 64 МБ 9

Hadoop и Mahout Созыкин А. В. HDFS Data Node 1 Data Node 2 Data Hadoop и Mahout Созыкин А. В. HDFS Data Node 1 Data Node 2 Data Node 3 Name Node 1, 4, 6 1, 3, 5 1, 2, 5 Data Node 4 Data Node 5 Data Node 6 10

Hadoop и Mahout Созыкин А. В. Работа с HDFS • Блоки файлов в HDFS Hadoop и Mahout Созыкин А. В. Работа с HDFS • Блоки файлов в HDFS распределены по разным серверам: • Нельзя смонтировать HDFS • Не работают стандартные команды ls, cp, mv и т. п. • Необходимо использовать • $ hadoop dfs –cmd специальную команду: • Примеры: $ hadoop dfs -ls Found 3 items -rw-r--r-1 hadoop supergroup /user/hadoop/file 1 -rw-r--r-1 hadoop supergroup /user/hadoop/file 2 -rw-r--r-1 hadoop supergroup /user/hadoop/file 3 $ hadoop dfs -put /tmp/file 4 $ hadoop dfs -cat file 4 Hello, world! 0 2011 -06 -22 13: 58 11

Hadoop и Mahout Созыкин А. В. Особенности HDFS • HDFS – специализированная файловая система, Hadoop и Mahout Созыкин А. В. Особенности HDFS • HDFS – специализированная файловая система, оптимизированная для параллельной потоковой работы с большими файлами • Подходит не для всех задач! • Модель Write Once Read Many: • Нельзя изменять файл, можно только добавлять в конец • Большой размер блока: • По-молчанию 64 МБ (часто 128 или 256 МБ) • Не эффективен произвольный доступ (базы данных и т. п. ) 12

Hadoop и Mahout Созыкин А. В. Map. Reduce • Map. Reduce – технология распределенных Hadoop и Mahout Созыкин А. В. Map. Reduce • Map. Reduce – технология распределенных вычислений • Цель Map. Reduce – разделить логику приложения и организацию распределенного взаимодействия: • Программист реализует только логику приложения • Распределенная работа в кластере обеспечивается автоматически • Map. Reduce работает с данными как с парами Ключ: Значение: • смещение в файле: текст • идентификатор пользователя: профиль • пользователь: список друзей • временная метка: событие в журнале Источник: http: //www. youtube. com/watch? v=SS 27 F-h. YWf. U 13

Hadoop и Mahout Созыкин А. В. Функции Map и Reduce Источник: http: //developer. yahoo. Hadoop и Mahout Созыкин А. В. Функции Map и Reduce Источник: http: //developer. yahoo. com/hadoop/tutorial/module 4. html 14

Hadoop и Mahout Созыкин А. В. Пример Map. Reduce: Word. Count • Задача: посчитать, Hadoop и Mahout Созыкин А. В. Пример Map. Reduce: Word. Count • Задача: посчитать, сколько раз слово встречается в файле • Количество обращений к Web-страницам • Количество просмотра видео или прослушивания песни • Исходные данные: • Текстовые файлы • Каждый файл делится на пары: Смещение: Тест • Пример: • Цель Map. Reduce – разделить логику приложения и организацию распределенного взаимодействия. Программист реализует только логику приложения 15

Hadoop и Mahout Созыкин А. В. Word. Count: функция Map • Исходные данные: • Hadoop и Mahout Созыкин А. В. Word. Count: функция Map • Исходные данные: • Цель Map. Reduce – разделить логику приложения и организацию распределенного взаимодействия. Программист реализует только логику приложения • Результаты обработки: • <цель, 1>, , <разделить, 1>, <логику, 1>, <приложения, 1>, <и, 1>, <организацию, 1>, <распределенного, 1>, <взаимодействия, 1>, <программист, 1>, <реализует, 1>, <только, 1>, <логику, 1>, <приложения, 1> • Сортировка и группировка по ключу: • , <взаимодействия, 1>, <и, 1>, <логику, 1>, <организацию, 1>, <приложения, 1>, <программист, 1>, <разделить, 1>, <распределенного, 1>, <реализует, 1>, <только, 1>, <цель, 1>. 16

Hadoop и Mahout Созыкин А. В. Word. Count: функция Reduce • Пары с одинаковыми Hadoop и Mahout Созыкин А. В. Word. Count: функция Reduce • Пары с одинаковыми ключами передаются в одну функцию Reduce: <взаимодействия, 1> <и, 1> <логику, 1>, <логику, 1> <логику, 2> <организацию, 1> <приложения, 1>, <приложения, 1> <приложения, 2> <программист, 1> <разделить, 1> <распределенного, 1> <реализует, 1> <только, 1> <цель, 1> 17

Hadoop и Mahout Созыкин А. В. Модель Map. Reduce • Map. Reduce – странный Hadoop и Mahout Созыкин А. В. Модель Map. Reduce • Map. Reduce – странный подход к решению задачи Word. Count • Есть более простые и интуитивно понятные решения • Достоинства Map. Reduce: • Возможность автоматического распараллеливания – функции Map и Reduce могут обрабатывать элементы списка параллельно не зависимо друг от друга • Масштабируемость – данные могут размещаться на разных серверах (в HDFS) и обрабатываться также на разных серверах • Отказоустойчивость – при выходе из строя сервера функции Map или Reduce запускаются на другом сервере • Недостатки Map. Reduce: • Фиксированный алгоритм обработки данных • Высокие накладные расходы на распараллеливание 18

Hadoop и Mahout Созыкин А. В. Перемещение вычислений к данным 19 Hadoop и Mahout Созыкин А. В. Перемещение вычислений к данным 19

Hadoop и Mahout Созыкин А. В. Пример запуска задачи Hadoop • $ hadoop jar 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. ]+' – Шаблон для поиска 20

Hadoop и Mahout Созыкин А. В. Экосистема Hadoop • Map. Reduce – мощная модель Hadoop и Mahout Созыкин А. В. Экосистема Hadoop • Map. Reduce – мощная модель программирования, но низкоуровневая • Реализация практически полезных алгоритмов требует высоких трудозатрат • Hadoop сложен в установке и администрировании • На основе Hadoop сложилась экосистема: • Программные продукты для решения различных прикладных задач, использующие Hadoop для масштабирования • Дистрибутивы Hadoop • Облачный хостинг для Hadoop 21

Hadoop и Mahout Созыкин А. В. Экосистема Hadoop • Pig – декларативный язык анализа 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 и т. д. 22

Hadoop и Mahout Созыкин А. В. Дистрибутивы Hadoop • Apache • hadoop. apache. org Hadoop и Mahout Созыкин А. В. Дистрибутивы Hadoop • Apache • hadoop. apache. org • Оригинальный дистрибутив, только Hadoop • Альтернативные дистрибутивы: • Совместно Hadoop, HBase, Pig, Hive, Mahout, Sqoop, Zookeeper и др. • Средства автоматизации установки и администрирования, мониторинг, безопасность • Поставщики дистрибутивов: • • альтернативных Cloudera Map. R Hortonworks Intel 23

Hadoop и Mahout Созыкин А. В. Облачный хостинг Hadoop • Amazon Elastic Map. Reduce Hadoop и Mahout Созыкин А. В. Облачный хостинг Hadoop • Amazon Elastic Map. Reduce (Amazon EMR) • http: //aws. amazon. com/elasticmapreduce/ • Партнерство с Map. R • Apache Hadoop on Rackspace • http: //www. rackspace. com/knowledge_center/article/apachehadoop-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 24

Hadoop и Mahout Созыкин А. В. Apache Mahout • Масштабируемая библиотека машинного обучения (machine Hadoop и Mahout Созыкин А. В. Apache Mahout • Масштабируемая библиотека машинного обучения (machine learning) • Режимы работы: • В кластере Hadoop • Отдельно на одном компьютере • Mahout – слово из индийского языка, означает погонщик слонов • Открытые исходные коды: • Написан на Java • Лицензия Apache 2. 0 • Страница проекта: • http: //mahout. apache. org/ 25

Hadoop и Mahout Созыкин А. В. Машинное обучение в Mahout • Коллаборативная (совместная) фильтрация 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 и др. 26

Hadoop и Mahout Созыкин А. В. Рекомендации 27 Hadoop и Mahout Созыкин А. В. Рекомендации 27

Hadoop и Mahout Созыкин А. В. Актуальность рекомендаций • Хорошая система рекомендаций может существенно Hadoop и Mahout Созыкин А. В. Актуальность рекомендаций • Хорошая система рекомендаций может существенно повысит доход от продаж и рекламы • $1 M Netflix. Prize: • Компания Netflix устроила соревнования по улучшению алгоритма рекомендации DVD • Размер приза: 1 миллион долларов • Условие получения приза: улучшить алгоритм рекомендации на 10% • Приз получила команда «Bell. Kor’s Pragmatic Chaos» в 2009 г. • Соревнования проходили с 2006 по 2009 г. • Каждый год выплачивался приз за прогресс $50 000 • http: //www. netflixprize. com/ 28

Hadoop и Mahout Созыкин А. В. Способы рекомендаций • На основе контента • Пример: Hadoop и Mahout Созыкин А. В. Способы рекомендаций • На основе контента • Пример: пользователь выбрал книгу Пушкина, значит можно рекомендовать ему другую книгу Пушкина или классическую литературу • Недостаток: система рекомендаций сильно зависит от домена и непереносима • На основе предпочтений • Рекомендации на основе оценок пользователей • Объекты рекомендации могут быть любыми • Можно реализовать общую систему, не зависимую от домена • Реализован в Mahout 29

Hadoop и Mahout Созыкин А. В. Предпочтение • Рекомендации в Mahout выдаются на основе Hadoop и Mahout Созыкин А. В. Предпочтение • Рекомендации в Mahout выдаются на основе предпочтений пользователей • Предпочтение в Mahout: • Пользователь (целое число) • Объект (целое число) • Предпочтение (число двойной точности) • Пример данных о предпочтениях для Mahout из проекта Group. Lens (Университет Минесоты) – оценка пользователями фильмов: 196 242 3 881250949 186 302 3 891717742 22 377 1 878887116 244 51 2 880606923 user id | item id | rating | timestamp (Не используется в Mahout) 30

Hadoop и Mahout Созыкин А. В. Подходы к рекомендации • На основе пользователей: • Hadoop и Mahout Созыкин А. В. Подходы к рекомендации • На основе пользователей: • Найти пользователей с похожими вкусами • Посмотреть, что нравится этим пользователям • Рекомендовать объекты в соответствии с предпочтениями похожих пользователей • Недостатки: подход плохо масштабируется, предпочтения быстро меняются • На основе объектов: • Найти объекты, похожие на те, которые понравились пользователю • Рекомендовать наиболее популярные из них • Преимущества: хорошо масштабируется, оценки объектов меняются редко. Рекомендации можно генерировать в автономном режиме (с использованием Hadoop) 31

Hadoop и Mahout Созыкин А. В. Рекомендации на основе пользователей public static void main(String[] Hadoop и Mahout Созыкин А. В. Рекомендации на основе пользователей public static void main(String[] args) throws Exception { Data. Model model = new File. Data. Model (new File("u. data")); User. Similarity similarity = new Pearson. Correlation. Similarity (model); User. Neighborhood neighborhood = new Nearest. NUser. Neighborhood (2, similarity, model); Recommender recommender = new Generic. User. Based. Recommender ( model, neighborhood, similarity); List recommendations = recommender. recommend(1, 1); for (Recommended. Item recommendation : recommendations) { System. out. println(recommendation); } } Recommended. Item [item: 643, value: 4. 27682] 32

Hadoop и Mahout Созыкин А. В. Рекомендации на основе пользователей Источник: Sean Owen, Robin Hadoop и Mahout Созыкин А. В. Рекомендации на основе пользователей Источник: Sean Owen, Robin Anil, Ted Dunning, and Ellen Friedman. Mahout in Action 33

Hadoop и Mahout Созыкин А. В. Выбор похожих пользователей • Как определить, что вкусы Hadoop и Mahout Созыкин А. В. Выбор похожих пользователей • Как определить, что вкусы пользователей похожи? • Мера «похожести» - число от -1 до 1. • 1 – вкусы пользователей совпадают • 0 – у пользователей нет общих вкусов • -1 – вкусы пользователей противоположны • Mahout использует несколько алгоритмов расчета «похожести» : • • • Коэффициент Пирсона Евклидово расстояние Корреляция Спирмена Коэффициент Танимото Логарифмическое правдоподобие 34

Hadoop и Mahout Созыкин А. В. «Соседние» пользователи Фиксированное число соседей (Nearest. NUser. Neighborhood Hadoop и Mahout Созыкин А. В. «Соседние» пользователи Фиксированное число соседей (Nearest. NUser. Neighborhood ) Соседи в пределах границы (Threshold. User. Neighborhood) Источник: Sean Owen, Robin Anil, Ted Dunning, and Ellen Friedman. Mahout in Action 35

Hadoop и Mahout Созыкин А. В. Выбор параметров • Какой тип «похожести» пользователей лучше? Hadoop и Mahout Созыкин А. В. Выбор параметров • Какой тип «похожести» пользователей лучше? • Какой тип «соседства» лучше? • Критерии оценки: Источник: Sean Owen, Robin Anil, Ted Dunning, and Ellen Friedman. Mahout in Action • Однозначного ответа нет • Результаты разные для разных данных • Проводите эксперименты с разными параметрами! 36

Hadoop и Mahout Созыкин А. В. Рекомендации на основе объектов public static void main(String[] Hadoop и Mahout Созыкин А. В. Рекомендации на основе объектов public static void main(String[] args) throws Exception { Data. Model model = new File. Data. Model (new File("u. data")); Item. Similarity item. Similarity = new Log. Likelihood. Similarity(data. Model); Item. Based. Recommender recommender = new Generic. Item. Based. Recommender(data. Model, item. Similarity); List recommendations = recommender. recommend(1, 1) for (Recommended. Item recommendation : recommendations) { System. out. println(recommendation); } } Recommended. Item [item: 271, value: 4. 27682] 37

Hadoop и Mahout Созыкин А. В. Mahout и Hadoop Источник: Sean Owen, Robin Anil, Hadoop и Mahout Созыкин А. В. Mahout и Hadoop Источник: Sean Owen, Robin Anil, Ted Dunning, and Ellen Friedman. Mahout in Action 38

Hadoop и Mahout Созыкин А. В. Mahout и Hadoop • Mahout может работать как Hadoop и Mahout Созыкин А. В. Mahout и Hadoop • Mahout может работать как отдельно, так и в кластере Hadoop • Запуск рекомендации Mahout в Hadoop выполняется с помощью класса Recommender. Job • Данные о предпочтениях должны быть записаны в HDFS • Полученные рекомендации записываются в HDFS • Рекомендации можно перенести в базу данных с помощью sqoop 39

Hadoop и Mahout Созыкин А. В. Пример запуска Mahout в Hadoop $ hadoop jar Hadoop и Mahout Созыкин А. В. Пример запуска Mahout в Hadoop $ hadoop jar mahout-core-0. 7 -job. jar org. apache. mahout. cf. taste. hadoop. item. Recommender. Job -Dmapred. input. dir=input -Dmapred. output. dir=output --users. File users_list. txt • Возможные параметры: • Dmapred. input. dir – каталог с данными о предпочтениях (в HDFS, может быть несколько файлов) • Dmapred. output. dir – каталог, куда записываются сгенерированные рекомендации (в HDFS) • --users. File – файл с идентификаторами пользователей, для которых нужно сгенерировать рекомендации • --similarity. Classname – имя класса, который реализует расчет «похожести» • --num. Recommendations – количество рекомендаций на одного пользователя 40

Hadoop и Mahout Созыкин А. В. Итоги • Map. Reduce – программная модель для Hadoop и Mahout Созыкин А. В. Итоги • Map. Reduce – программная модель для обработки больших объемов данных (Big. Data) • Hadoop – открытая реализация Map. Reduce • Экосистема Hadoop • Mahout – машинное обучение в Hadoop: • Рекомендации, классификация, кластеризация • Рекомендации в Mahout: • Предпочтения: пользователь, объект, оценка • Рекомендации на основе пользователей и на основе объектов • «Похожесть» пользователей и объектов • «Соседство» пользователей • Запуск Mahout Recommender. Job в Hadoop 41

Hadoop и Mahout Созыкин А. В. Вопросы? Контакты Андрей Созыкин avs@imm. uran. ru www. Hadoop и Mahout Созыкин А. В. Вопросы? Контакты Андрей Созыкин [email protected] uran. ru www. asozykin. ru 42