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

Презентация:



Advertisements
Похожие презентации
Hadoop Лекция 3. Алгоритм MapReduce. План История создания MapReduce Основы MapReduce Примеры использования MapReduce Особенности применения MapReduce.
Advertisements

Hadoop Лекция 1. Введение в Hadoop и MapReduce. Что такое Hadoop Инфраструктура (framework) для параллельной обработки больших объемов данных (терабайты)
Учебный курс Объектно-ориентированный анализ и программирование Лекция 4 Трансформация логической модели в программный код Лекции читает кандидат технических.
Типовые расчёты Растворы
Ребусы Свириденковой Лизы Ученицы 6 класса «А». 10.
Урок повторения по теме: «Сила». Задание 1 Задание 2.
Школьная форма Презентация для родительского собрания.
Г. Москва, тел.: +7 (495) , Internet: Слайды курса «Администрирование работы на сервере.
Кафедра высокопроизводительных компьютерных технологий Семинар для бакалавров второго курса Созыкин Андрей Владимирович к.т.н. зав.кафедрой высокопроизводительных.
Hadoop Лекция 5. Основы MapReduce API. План Базовые компоненты MapReduce API Mapper Reducer Driver.
Hadoop Лекция 2. Распределенная файловая система HDFS.
Michael Jackson
Важность структурирования информации сайта Карпович Сергей Руководитель SEO Деловой Мир Онлайн.
Учебный курс Объектно-ориентированный анализ и программирование Лекция 7 Методы как средство реализации операций Лекции читает кандидат технических наук.
1. Определить последовательность проезда перекрестка
Интернет Университет Суперкомпьютерных технологий Лекция 3 Методы построения параллельных программ (продолжение) Учебный курс Введение в параллельные алгоритмы.
1 Современные системы программирования. Часть 2. Системное и прикладное программное обеспечение Малышенко Владислав Викторович.
Лекция 3 Раздел 3,1 Windows Phone Темы раздела 3.
Масштаб 1 : 5000 Приложение 1 к решению Совета депутатов города Новосибирска от _____________ ______.
Архитектура, возможности и методы использования платформы облачных вычислений Microsoft Windows Azure Лекция 2 Понятие об облачных вычислениях. Обзор платформ.
Транксрипт:

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

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

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

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

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

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

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

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

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

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

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

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

13 Hadoop и MahoutСозыкин А.В. MapReduce MapReduce – технология распределенных вычислений Цель MapReduce – разделить логику приложения и организацию распределенного взаимодействия: Программист реализует только логику приложения Распределенная работа в кластере обеспечивается автоматически MapReduce работает с данными как с парами Ключ:Значение: смещение в файле: текст идентификатор пользователя: профиль пользователь: список друзей временная метка: событие в журнале Источник:

14 Hadoop и MahoutСозыкин А.В. Функции Map и Reduce Источник:

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

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

17 Hadoop и MahoutСозыкин А.В. WordCount: функция Reduce Пары с одинаковыми ключами передаются в одну функцию Reduce:,,

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

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

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.]+ ' – Шаблон для поиска

21 Hadoop и MahoutСозыкин А.В. Экосистема Hadoop MapReduce – мощная модель программирования, но низкоуровневая Реализация практически полезных алгоритмов требует высоких трудозатрат Hadoop сложен в установке и администрировании На основе Hadoop сложилась экосистема: Программные продукты для решения различных прикладных задач, использующие Hadoop для масштабирования Дистрибутивы Hadoop Облачный хостинг для 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 и т.д.

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

24 Hadoop и MahoutСозыкин А.В. Облачный хостинг Hadoop Amazon Elastic MapReduce (Amazon EMR) Партнерство с MapR Apache Hadoop on Rackspace hadoop-on-rackspace-private-cloudhttp:// hadoop-on-rackspace-private-cloud Партнерство с Hortonworks Microsoft Windows Azure Qubole Data Service Web-интерфейс для анализа данных с Hadoop, Hive, Pig и др. на Amazon EMR

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

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 и др.

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

28 Hadoop и MahoutСозыкин А.В. Актуальность рекомендаций Хорошая система рекомендаций может существенно повысит доход от продаж и рекламы $1M NetflixPrize: Компания Netflix устроила соревнования по улучшению алгоритма рекомендации DVD Размер приза: 1 миллион долларов Условие получения приза: улучшить алгоритм рекомендации на 10% Приз получила команда «BellKors Pragmatic Chaos» в 2009 г. Соревнования проходили с 2006 по 2009 г. Каждый год выплачивался приз за прогресс $

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

30 Hadoop и MahoutСозыкин А.В. Предпочтение Рекомендации в Mahout выдаются на основе предпочтений пользователей Предпочтение в Mahout: Пользователь (целое число) Объект (целое число) Предпочтение (число двойной точности) Пример данных о предпочтениях для Mahout из проекта GroupLens (Университет Минесоты) – оценка пользователями фильмов: user id | item id | rating | timestamp (Не используется в Mahout)

31 Hadoop и MahoutСозыкин А.В. Подходы к рекомендации На основе пользователей: Найти пользователей с похожими вкусами Посмотреть, что нравится этим пользователям Рекомендовать объекты в соответствии с предпочтениями похожих пользователей Недостатки: подход плохо масштабируется, предпочтения быстро меняются На основе объектов: Найти объекты, похожие на те, которые понравились пользователю Рекомендовать наиболее популярные из них Преимущества: хорошо масштабируется, оценки объектов меняются редко. Рекомендации можно генерировать в автономном режиме (с использованием 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 recommendations = recommender.recommend(1, 1); for (RecommendedItem recommendation : recommendations) { System.out.println(recommendation); } RecommendedItem [item:643, value: ]

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

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

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

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

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 recommendations = recommender.recommend(1, 1) for (RecommendedItem recommendation : recommendations) { System.out.println(recommendation); } RecommendedItem [item:271, value: ]

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

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

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 – количество рекомендаций на одного пользователя

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

42 Hadoop и MahoutСозыкин А.В. Вопросы? Контакты Андрей Созыкин