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 Tools
  4. MLlib Алгоритми
  5. Случай за употреба - система за препоръки на филми

Какво е машинно обучение?

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



Машинно обучение - Spark MLlib - Edureka Фигура: Инструменти за машинно обучение

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

Има три категории задачи за машинно обучение:



  1. Учене под наблюдение : Управляваното обучение е мястото, където имате входни променливи (x) и изходна променлива (Y) и използвате алгоритъм, за да научите функцията за картографиране от входа към изхода.
  2. Учене без надзор : Неконтролираното обучение е вид алгоритъм за машинно обучение, използван за извличане на изводи от набори от данни, състоящи се от входни данни без етикетирани отговори.
  3. Подсилващо обучение : Компютърната програма взаимодейства с динамична среда, в която трябва да изпълни определена цел (например шофиране на превозно средство или игра на игра срещу противник). Програмата получава обратна връзка по отношение на награди и наказания, докато навигира в своето проблемно пространство.Тази концепция се нарича засилване на обучението.

Преглед на Spark MLlib

Spark MLlib се използва за машинно обучение в Apache Spark. MLlib се състои от популярни алгоритми и помощни програми.

MLlib Преглед:

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

Spark MLlib Tools

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

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

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 от Spark Streaming. Можем да предаваме поточно в реално време или да четем данни от Hadoop HDFS.

Получаване на набор от данни:

За нашата система за препоръчване на филми можем да получим потребителски оценки от много популярни уебсайтове като IMDB, Rotten Tomatoes и Times Movie Ratings. Този набор от данни се предлага в много формати като CSV файлове, текстови файлове and бази данни. Можем да предаваме данни на живо от уебсайтовете или да ги изтегляме и съхраняваме внашата локална файлова система или HDFS.

Набор от данни:

Фигурата по-долу показва как можем да събираме данни от популярни уебсайтове.

След като прехвърлим данните в Spark, изглежда донякъде така.

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

Цялата система за препоръки се основава на алгоритъм за машинно обучение Редуващи се най-малки квадрати . Тук ALS е вид регресионен анализ, при който регресията се използва за изчертаване на линия сред точките от данни по такъв начин, че сумата от квадратите на разстоянието от всяка точка от данни да бъде сведена до минимум. По този начин този ред след това се използва за прогнозиране на стойностите на функцията, когато тя отговаря на стойността на независимата променлива.

Синята линия на диаграмата е най-подходящата регресионна линия. За този ред стойността на измерението D е минимална. Всички останали червени линии винаги ще бъдат по-далеч от набора от данни като цяло.

Внедряване на Spark MLlib:

  1. Ще използваме съвместно филтриране (CF), за да прогнозираме рейтингите за потребителите за определени филми въз основа на техните оценки за други филми.
  2. След това си сътрудничим с оценката на други потребители за конкретния филм.
  3. За да получим следните резултати от нашето машинно обучение, трябва да използваме DataFrame, Dataset и SQL Service на Spark SQL.

Ето псевдо кода за нашата програма:

ms sql уроци за начинаещи
import org.apache.spark.mllib.recommendation.ALS import org.apache.spark.mllib.recommendation.Rating import org.apache.spark.SparkConf // Импортиране на други необходими обекти на Movie 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 файл на Movie * ') //rawData.first () val rawRatings = rawData.map (* Разделяне rawData на разделителя на табулатора *) val оценки = rawRatings.map {* Карта масив от случаи на потребител, филм и рейтинг *} // Обучение на модела на данни val = ALS.train (рейтинги, 50, 5, 0,01) model.userFeatures model.userFeatures.count model.productFeatures.count val predvidRating = * Предвиждане за потребител 789 за филм 123 * val userId = * Потребител 789 * val K = 10 val topKRecs = model.recommendProducts (* Препоръчайте на потребителя за конкретната стойност на K *) println (topKRecs.mkString ('')) val movies = sc.textFile ('* Прочетете данните от филмовия списък *') val title = movies.map (линия => line.split ('|'). take ( 2)). Map (array => (array (0) .toInt, array (1))). CollectAsMap () val titleRDD = movies.map (line => line.split ('|'). Take (2) ) .map (масив => (масив (0) .toInt, масив (1))). кеш () заглавия (123) val moviesForUser = оценки. * Търсене на потребител 789 * val sqlContext = * Създаване на контекст на SQL * val филми Препоръчва се = sqlContext. * Направете DataFrame на препоръчани филми * moviesRecommended.registerTempTable ('moviesRecommendedTable') sqlContext.sql ('Изберете брой (*) от moviesRecommendedTable'). foreach (println) филми за потребител * Сортирайте рейтингите за Потребител 789 * .map (* Съпоставете рейтинга със заглавието на филма *). * Отпечатайте рейтинга * val резултати = moviesForUser.sortBy (-_. Рейтинг) .take (30) .map (рейтинг => (заглавия (рейтинг.продукт), рейтинг.рейтинг))}}

След като генерираме прогнози, можем да използваме Spark SQL за съхраняване на резултатите в RDBMS система. Освен това, това може да се покаже в уеб приложение.

Резултати:

Фигура: Филми, препоръчани за потребител 77

Ура! По този начин успешно създадохме система за препоръчване на филми, използвайки Apache Spark. С това покрихме само един от многото популярни алгоритми, които Spark MLlib може да предложи. Ще научим повече за машинното обучение в предстоящите блогове за Data Science Algorithms.

В бъдеще можете да продължите да изучавате Apache Spark с Spark Tutorial, Spark Streaming Tutorial, и Spark Интервю въпроси.Edureka е посветена на предоставянето на възможно най-доброто учебно изживяване онлайн.

Разгледайте нашите i ако искате да научите Spark и да изградите кариера в областта на Spark и да изградите опит за извършване на мащабна обработка на данни с помощта на RDD, Spark Streaming, SparkSQL, MLlib, GraphX ​​и Scala с реални случаи на употреба.