Spark MLlib - библиотека машинного обучения Apache Spark



В этом блоге Spark MLlib вы познакомитесь с библиотекой машинного обучения Apache Spark. Он включает проект системы рекомендаций фильмов с использованием Spark MLlib.

Spark MLlib - это компонент машинного обучения Apache Spark.Одно из главных достоинств Spark - возможность массового масштабирования вычислений, и это именно то, что вам нужно для алгоритмов машинного обучения. Но ограничение состоит в том, что все алгоритмы машинного обучения не могут быть эффективно распараллелены. У каждого алгоритма есть свои проблемы для распараллеливания, будь то параллелизм задач или параллелизм данных.

При этом Spark становится де-факто платформой для создания алгоритмов и приложений машинного обучения.Что ж, вы можете проверить перед тем, как продолжить работу над блогом, отобрали отраслевые эксперты.Разработчики, работающие над Spark MLlib, реализуют все больше и больше машинных алгоритмов в масштабируемой и краткой форме в среде Spark. В этом блоге мы познакомимся с концепциями машинного обучения, Spark MLlib, его служебными программами, алгоритмами и полным вариантом использования системы рекомендаций фильмов.





В этом блоге будут рассмотрены следующие темы:

  1. Что такое машинное обучение?
  2. Обзор Spark MLlib
  3. Инструменты Spark MLlib
  4. Алгоритмы MLlib
  5. Пример использования - Система рекомендаций фильмов

Что такое машинное обучение?

Машинное обучение, развивающееся на основе изучения распознавания образов и теории вычислительного обучения в искусственном интеллекте, исследует изучение и построение алгоритмов, которые могут учиться на данных и делать прогнозы на основе данных - такие алгоритмы преодолевают выполнение строго статических программных инструкций, делая прогнозы или решения на основе данных. , путем построения модели из исходных данных.



Машинное обучение - Spark MLlib - Edureka Рисунок: Инструменты машинного обучения

Машинное обучение тесно связано с вычислительной статистикой, которая также фокусируется на прогнозировании с помощью компьютеров. Он имеет тесные связи с математической оптимизацией, которая предоставляет методы, теорию и области применения в полевых условиях. В области анализа данных машинное обучение - это метод, используемый для разработки сложных моделей и алгоритмов, которые позволяют делать прогнозы, которые в коммерческом использовании известны как прогнозная аналитика.

Есть три категории задач машинного обучения:



sql server учебник для начинающих
  1. Контролируемое обучение : Контролируемое обучение - это когда у вас есть входные переменные (x) и выходная переменная (Y), и вы используете алгоритм для изучения функции сопоставления от входа к выходу.
  2. Неконтролируемое обучение : Обучение без учителя - это тип алгоритма машинного обучения, используемый для вывода выводов из наборов данных, состоящих из входных данных без помеченных ответов.
  3. Обучение с подкреплением : Компьютерная программа взаимодействует с динамической средой, в которой она должна выполнять определенную цель (например, управлять транспортным средством или играть в игру с противником). Программа получает обратную связь с точки зрения вознаграждений и наказаний, когда она перемещается по своему проблемному пространству.Эта концепция называется обучением с подкреплением.

Обзор Spark MLlib

Spark MLlib используется для машинного обучения в Apache Spark. MLlib состоит из популярных алгоритмов и утилит.

Обзор MLlib:

  • spark.mllib содержит оригинальный API, построенный на основе RDD. В настоящее время он находится в режиме обслуживания.
  • spark.ml предоставляет API более высокого уровня, построенный поверх DataFrames длястроительство трубопроводов ML. spark.ml на данный момент является основным API машинного обучения для Spark.

Инструменты Spark MLlib

Spark MLlib предоставляет следующие инструменты:

  • Алгоритмы ML: Алгоритмы машинного обучения составляют основу MLlib. К ним относятся общие алгоритмы обучения, такие как классификация, регрессия, кластеризация и совместная фильтрация.
  • Особенности: Изменение характеристик включает извлечение, преобразование, уменьшение размерности и выбор.
  • Трубопроводы: Конвейеры предоставляют инструменты для построения, оценки и настройки конвейеров машинного обучения.
  • Упорство: Постоянство помогает сохранять и загружать алгоритмы, модели и конвейеры.
  • Утилиты: Утилитыдля линейной алгебры, статистики и обработки данных.

Алгоритмы MLlib

Популярные алгоритмы и утилиты в Spark MLlib:

  1. Базовая статистика
  2. Регресс
  3. Классификация
  4. Система рекомендаций
  5. Кластеризация
  6. Снижение размерности
  7. Извлечение функций
  8. Оптимизация

Давайте рассмотрим некоторые из них подробнее.

Базовая статистика

Базовая статистика включает в себя самые базовые методы машинного обучения. Они включают:

  1. Сводные статистические данные : Примеры включают среднее значение, дисперсию, количество, максимум, минимум и numNonZeros.
  2. Корреляции : Спирмен и Пирсон - несколько способов найти корреляцию.
  3. Стратифицированная выборка : К ним относятся sampleBykey и sampleByKeyExact.
  4. Проверка гипотезы : Критерий хи-квадрат Пирсона является примером проверки гипотез.
  5. Генерация случайных данных : RandomRDD, Normal и Poisson используются для генерации случайных данных.

Регресс

Регресс Анализ - это статистический процесс для оценки взаимосвязей между переменными. Он включает в себя множество методов для моделирования и анализа нескольких переменных, когда основное внимание уделяется взаимосвязи между зависимой переменной и одной или несколькими независимыми переменными. В частности, регрессионный анализ помогает понять, как изменяется типичное значение зависимой переменной, когда одна из независимых переменных изменяется, в то время как другие независимые переменные остаются неизменными.

Регрессионный анализ широко используется для прогнозирования и прогнозирования, где его использование в значительной степени совпадает с областью машинного обучения. Регрессионный анализ также используется, чтобы понять, какие из независимых переменных связаны с зависимой переменной, и изучить формы этих отношений. В ограниченных обстоятельствах регрессионный анализ может использоваться для вывода причинно-следственных связей между независимыми и зависимыми переменными.

Классификация

Классификация представляет собой проблему определения того, к какой из набора категорий (подгрупп) принадлежит новое наблюдение, на основе обучающего набора данных, содержащих наблюдения (или экземпляры), принадлежность которых к категории известна. Это пример распознавания образов.

Здесь примером может быть отнесение данного электронного письма к классам «спам» или «без спама» или постановка диагноза данному пациенту, как описано на основе наблюдаемых характеристик пациента (пол, артериальное давление, наличие или отсутствие определенных симптомов, так далее.).

Система рекомендаций

К система рекомендаций является подклассом системы фильтрации информации, которая стремится предсказать «рейтинг» или «предпочтение», которое пользователь дал бы элементу. В последние годы рекомендательные системы становятся все более популярными и используются во множестве областей, включая фильмы, музыку, новости, книги, исследовательские статьи, поисковые запросы, социальные теги и продукты в целом.

Рекомендательные системы обычно создают список рекомендаций одним из двух способов - с помощью совместной и контентной фильтрации или индивидуального подхода.

  1. Совместная фильтрация подходы к построению модели на основе прошлого поведения пользователя (ранее приобретенные или выбранные предметы и / или числовые оценки, присвоенные этим предметам), а также аналогичных решений, принятых другими пользователями. Эта модель затем используется для прогнозирования элементов (или рейтингов элементов), которые могут быть интересны пользователю.
  2. Контентная фильтрация подходы используют серию дискретных характеристик элемента, чтобы рекомендовать дополнительные элементы с аналогичными свойствами.

Кроме того, эти подходы часто объединяются в гибридные рекомендательные системы.

Кластеризация

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

Снижение размерности

Снижение размерности представляет собой процесс уменьшения количества рассматриваемых случайных величин путем получения набора главных переменных. Его можно разделить на выбор признаков и извлечение признаков.

  1. Выбор функции: При выборе функции выполняется поиск подмножества исходных переменных (также называемых функциями или атрибутами).
  2. Извлечение функций: Это преобразует данные из многомерного пространства в пространство меньшего размера. Преобразование данных может быть линейным, как в Анализе главных компонентов (PCA), но также существует множество методов нелинейного уменьшения размерности.

Извлечение функций

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

Оптимизация

Оптимизация это подборка лучшихэлемент (с учетом некоторого критерия) из некоторого набора доступных альтернатив.

В простейшем случае задача оптимизации состоит из максимизации или минимизации реальной функции путем систематического выбора входных значений из разрешенного набора и вычисления значения функции. Обобщение теории и методов оптимизации на другие формулировки составляет большую область прикладной математики. В более общем плане оптимизация включает в себя поиск «наилучших доступных» значений некоторой целевой функции с учетом определенной области (или входных данных),включая множество различных типов целевых функций и различных типов областей.

Пример использования - Система рекомендаций фильмов

Постановка задачи: Чтобы создать систему рекомендаций фильмов, которая рекомендует фильмы на основе предпочтений пользователя с помощью Apache Spark.

Наши требования:

Итак, давайте оценим требования для построения нашей системы рекомендаций фильмов:

  1. Обработка огромного количества данных
  2. Вход из нескольких источников
  3. Легко использовать
  4. Быстрая обработка

Как мы можем оценитьСогласно нашим требованиям, нам нужен лучший инструмент для работы с большими данными, чтобы обрабатывать большие данные в короткие сроки. Поэтому Apache Spark - идеальный инструмент для реализации нашей Системы рекомендаций по фильмам.

Давайте теперь посмотрим на блок-схему нашей системы.

Как мы видим, ниже используется Streaming from Spark Streaming. Мы можем передавать данные в режиме реального времени или считывать данные из Hadoop HDFS.

Получение набора данных:

Для нашей Системы рекомендаций фильмов мы можем получать оценки пользователей со многих популярных веб-сайтов, таких как IMDB, Rotten Tomatoes и Times Movie Ratings. Этот набор данных доступен во многих форматах, таких как файлы CSV, текстовые файлы ибазы данных. Мы можем либо передавать данные в прямом эфире с веб-сайтов, либо загружать и хранить их внаша локальная файловая система или HDFS.

Набор данных:

На рисунке ниже показано, как мы можем собрать набор данных с популярных веб-сайтов.

Когда мы передаем данные в Spark, это выглядит примерно так.

Машинное обучение:

Вся система рекомендаций основана на алгоритме машинного обучения. Чередование наименьших квадратов . Здесь ALS - это тип регрессионного анализа, в котором регрессия используется для рисования линии между точками данных таким образом, чтобы минимизировать сумму квадратов расстояния от каждой точки данных. Таким образом, эта строка затем используется для прогнозирования значений функции, где она встречается со значением независимой переменной.

Синяя линия на диаграмме - это наиболее подходящая линия регрессии. Для этой линии значение размера D минимально. Все остальные красные линии всегда будут дальше от набора данных в целом.

Реализация Spark MLlib:

  1. Мы будем использовать совместную фильтрацию (CF) для прогнозирования оценок пользователей для определенных фильмов на основе их оценок для других фильмов.
  2. Затем мы связываем это с оценками других пользователей для этого конкретного фильма.
  3. Чтобы получить следующие результаты из нашего машинного обучения, нам нужно использовать Spark SQL DataFrame, Dataset и SQL Service.

Вот псевдокод нашей программы:

import org.apache.spark.mllib.recommendation.ALS import org.apache.spark.mllib.recommendation.Rating import org.apache.spark.SparkConf // Импортируйте другие необходимые пакеты, объект Movie {def main (args: Array [String] ) {val conf = new SparkConf (). setAppName ('Movie'). setMaster ('local [2]') val sc = new SparkContext (conf) val rawData = sc.textFile ('* Прочитать данные из CSV-файла фильма * ') //rawData.first () val rawRatings = rawData.map (* Разделить rawData по разделителю табуляции *) val rating = rawRatings.map {* Сопоставить массив вариантов пользователя, фильма и рейтинга *} // Обучение модели данных val = ALS.train (рейтинги, 50, 5, 0,01) model.userFeatures model.userFeatures.count model.productFeatures.count val predictedRating = * Прогноз для пользователя 789 для фильма 123 * val userId = * User 789 * val K = 10 val topKRecs = model.recommendProducts (* Рекомендуется для пользователя для конкретного значения K *) println (topKRecs.mkString ('')) val movies = sc.textFile ('* Читать данные списка фильмов *') val title = movies.map (line => line.split ('|'). take ( 2)). Map (array => (array (0) .toInt, array (1))). CollectAsMap () val titleRDD = movies.map (line => line.split ('|'). Take (2) ) .map (array => (array (0) .toInt, array (1))). cache () title (123) val moviesForUser = rating. * Поиск пользователя 789 * val sqlContext = * Создать контекст SQL * val moviesRecommended = sqlContext. * Создайте DataFrame из рекомендованных фильмов * moviesRecommended.registerTempTable ('moviesRecommendedTable') sqlContext.sql ('Выберите количество (*) из moviesRecommendedTable'). foreach (println) moviesForUser. * Сортировка рейтингов для User 789 * .map (* Сопоставьте рейтинг с названием фильма *). * Распечатать рейтинг * val results = moviesForUser.sortBy (-_. Rating) .take (30) .map (rating => (title (rating.product), rating.rating))}}

После создания прогнозов мы можем использовать Spark SQL для сохранения результатов в системе СУБД. Кроме того, это можно отобразить в веб-приложении.

Результаты:

Рисунок: Фильмы, рекомендованные для пользователя 77

Ура! Таким образом, мы успешно создали Систему рекомендаций фильмов с использованием Apache Spark. Мы рассмотрели только один из многих популярных алгоритмов, которые может предложить Spark MLlib. Мы узнаем больше о машинном обучении в следующих блогах об алгоритмах Data Science.

Забегая вперед, вы можете продолжить изучение Apache Spark с помощью Spark Tutorial, Spark Streaming Tutorial.и Spark Interview Questions.Edureka нацелена на предоставление наилучшего возможного онлайн-обучения.

Проверьте наши я Если вы хотите изучить Spark и построить карьеру в области Spark, а также накопить опыт для крупномасштабной обработки данных с использованием RDD, Spark Streaming, SparkSQL, MLlib, GraphX ​​и Scala с реальными примерами использования.