Spark MLlib - Knihovna strojového učení Apache Spark



Tento blog Spark MLlib vám představí knihovnu Machine Learning Apache Spark. Zahrnuje projekt systému doporučení filmu využívající Spark MLlib.

Spark MLlib je komponenta Apache Spark pro strojové učení.Jednou z hlavních atrakcí Sparku je schopnost masivně škálovat výpočet a to je přesně to, co potřebujete pro algoritmy strojového učení. Omezení však spočívá v tom, že všechny algoritmy strojového učení nelze efektivně paralelizovat. Každý algoritmus má pro paralelizaci své vlastní výzvy, ať už jde o paralelismus úkolů nebo paralelismus dat.

Spark se poté stává de-facto platformou pro vytváření algoritmů a aplikací pro strojové učení.Můžete se podívat na předtím, než se pustíte do blogu, jej vybrali odborníci v oboru.Vývojáři pracující na Spark MLlib implementují stále více a více strojových algoritmů škálovatelným a stručným způsobem v rámci Spark. Prostřednictvím tohoto blogu se naučíme koncepty Machine Learning, Spark MLlib, jeho obslužných programů, algoritmů a úplného případu použití systému doporučení filmu.





V tomto blogu se budeme zabývat následujícími tématy:

  1. Co je to strojové učení?
  2. Přehled Spark MLlib
  3. Spark MLlib Tools
  4. Algoritmy MLlib
  5. Použijte systém doporučení Case - Movie

Co je to strojové učení?

Strojové učení, které se vyvinulo ze studia rozpoznávání vzorů a teorie výpočetního učení v umělé inteligenci, zkoumá studium a konstrukci algoritmů, které se mohou učit a předpovídat data - takové algoritmy překonávají přísně statické pokyny programu tím, že předpovídají nebo rozhodují na základě dat , vytvořením modelu z ukázkových vstupů.



Machine Learning - Spark MLlib - Edureka Postava: Nástroje pro strojové učení

Strojové učení úzce souvisí s výpočetními statistikami, které se také zaměřují na predikci pomocí počítačů. Má silné vazby na matematickou optimalizaci, která do oboru přináší metody, teorie a aplikační domény. V oblasti datové analýzy je strojové učení metodou používanou k vytváření komplexních modelů a algoritmů, které jsou vhodné pro predikci, která je v komerčním použití známá jako prediktivní analýza.

Existují tři kategorie úloh strojového učení:



  1. Kontrolované učení : Kontrolované učení je místo, kde máte vstupní proměnné (x) a výstupní proměnnou (Y) a pomocí algoritmu se naučíte mapovací funkci od vstupu k výstupu.
  2. Učení bez dozoru : Učení bez dozoru je typ algoritmu strojového učení používaného k vyvozování závěrů z datových sad sestávajících ze vstupních dat bez označených odpovědí.
  3. Posílení učení : Počítačový program interaguje s dynamickým prostředím, ve kterém musí plnit určitý cíl (například řídit vozidlo nebo hrát hru proti soupeři). Program poskytuje zpětnou vazbu, pokud jde o odměny a tresty, když se pohybuje v problémovém prostoru.Tento koncept se nazývá posilovací učení.

Přehled Spark MLlib

Spark MLlib se používá k provádění strojového učení v Apache Spark. MLlib se skládá z populárních algoritmů a nástrojů.

Přehled MLlib:

  • spark.mllib obsahuje původní API postavené na RDD. Aktuálně je v režimu údržby.
  • spark.ml poskytuje vyšší úroveň API postavené na DataFrames probudování ML potrubí. spark.ml je momentálně primární API pro strojové učení pro Spark.

Spark MLlib Tools

Spark MLlib poskytuje následující nástroje:

  • Algoritmy ML: ML Algoritmy tvoří jádro MLlib. Patří mezi ně běžné algoritmy učení, jako je klasifikace, regrese, shlukování a filtrování spolupráce.
  • Funkce: Funkce zahrnuje extrakci, transformaci, zmenšení rozměrů a výběr prvků.
  • Potrubí: Pipelines poskytují nástroje pro konstrukci, hodnocení a ladění ML Pipelines.
  • Vytrvalost: Persistence pomáhá při ukládání a načítání algoritmů, modelů a potrubí.
  • Utility: Utilitypro lineární algebru, statistiku a zpracování dat.

Algoritmy MLlib

Populární algoritmy a nástroje ve Spark MLlib jsou:

  1. Základní statistiky
  2. Regrese
  3. Klasifikace
  4. Systém doporučení
  5. Shlukování
  6. Snížení rozměrů
  7. Extrakce funkcí
  8. Optimalizace

Podívejme se na některé z nich podrobně.

Základní statistiky

Základní statistiky zahrnuje nejzákladnější techniky strojového učení. Tyto zahrnují:

  1. Souhrnná statistika : Mezi příklady patří průměr, rozptyl, počet, max, min a numNonZeros.
  2. Korelace : Spearman a Pearson jsou některé způsoby, jak najít korelaci.
  3. Stratifikovaný odběr vzorků : Patří sem sampleBykey a sampleByKeyExact.
  4. Testování hypotéz : Pearsonův test chí-kvadrát je příkladem testování hypotéz.
  5. Náhodné generování dat : RandomRDDs, Normal a Poisson se používají ke generování náhodných dat.

Regrese

Regrese analýza je statistický proces pro odhad vztahů mezi proměnnými. Zahrnuje mnoho technik pro modelování a analýzu několika proměnných, když je kladen důraz na vztah mezi závislou proměnnou a jednou nebo více nezávislými proměnnými. Přesněji řečeno, regresní analýza pomáhá pochopit, jak se mění typická hodnota závislé proměnné, když se mění některá z nezávislých proměnných, zatímco ostatní nezávislé proměnné jsou udržovány pevné.

Regresní analýza je široce používána pro predikci a předpovídání, kde se její použití podstatně překrývá s oblastí strojového učení. Regresní analýza se také používá k pochopení, které z nezávislých proměnných souvisí se závislou proměnnou, a k prozkoumání forem těchto vztahů. Za omezených okolností lze k odvození kauzálních vztahů mezi nezávislými a závislými proměnnými použít regresní analýzu.

Klasifikace

Klasifikace je problém identifikovat, do které ze souboru kategorií (subpopulací) nové pozorování patří, na základě tréninkové sady dat obsahujících pozorování (nebo instance), jejichž členství v kategoriích je známé. Je to příklad rozpoznávání vzorů.

Příkladem může být přiřazení daného e-mailu do tříd „spamu“ nebo „nevyžádané pošty“ nebo přiřazení diagnózy danému pacientovi, jak je popsáno na základě pozorovaných charakteristik pacienta (pohlaví, krevní tlak, přítomnost nebo nepřítomnost určitých příznaků atd.).

Systém doporučení

NA systém doporučení je podtřída systému filtrování informací, která se snaží předpovědět „hodnocení“ nebo „preference“, které by uživatel položce přidělil. Systémy doporučení jsou v posledních letech stále populárnější a jsou využívány v různých oblastech, včetně filmů, hudby, zpráv, knih, článků ve výzkumu, vyhledávacích dotazů, sociálních značek a produktů obecně.

Systémy doporučovatelů obvykle vytvářejí seznam doporučení jedním ze dvou způsobů - prostřednictvím spolupráce a filtrování podle obsahu nebo osobnostního přístupu.

  1. Kolaborativní filtrování přístupy k budování modelu z minulého chování uživatele (dříve zakoupené nebo vybrané položky a / nebo číselná hodnocení těchto položek), jakož i podobných rozhodnutí jiných uživatelů. Tento model se poté používá k předpovídání položek (nebo hodnocení položek), o které může mít uživatel zájem.
  2. Filtrování podle obsahu přístupy využívají řadu diskrétních charakteristik položky za účelem doporučení dalších položek s podobnými vlastnostmi.

Dále se tyto přístupy často kombinují jako systémy hybridního doporučení.

Shlukování

Shlukování je úkol seskupit sadu objektů takovým způsobem, že objekty ve stejné skupině (nazývané klastr) jsou si navzájem více podobné (v určitém smyslu nebo jiném) než ty v jiných skupinách (klastrech). Jde tedy o hlavní úkol průzkumné těžby dat a běžnou techniku ​​pro statistickou analýzu dat, která se používá v mnoha oblastech, včetně strojového učení, rozpoznávání vzorů, analýzy obrazu, získávání informací, bioinformatiky, komprese dat a počítačové grafiky.

Snížení rozměrů

Snížení rozměrů je proces snižování počtu uvažovaných náhodných proměnných získáním sady hlavních proměnných. Lze jej rozdělit na výběr funkcí a extrakci funkcí.

  1. Výběr funkcí: Výběr prvku vyhledá podmnožinu původních proměnných (nazývaných také prvky nebo atributy).
  2. Extrakce funkcí: To transformuje data ve vysokodimenzionálním prostoru na prostor s menšími rozměry. Transformace dat může být lineární, jako v analýze hlavních komponent (PCA), ale existuje také mnoho technik nelineární redukce rozměrů.

Extrakce funkcí

Extrakce funkcí začíná od počáteční sady naměřených dat a vytváří odvozené hodnoty (vlastnosti), které mají být informativní a neredundantní, což usnadňuje následné kroky učení a generalizace a v některých případech vede k lepší lidské interpretaci. To souvisí s redukcí rozměrů.

Optimalizace

Optimalizace je výběr toho nejlepšíhoprvek (s ohledem na některé kritérium) z některé sady dostupných alternativ.

V nejjednodušším případě problém s optimalizací spočívá v maximalizaci nebo minimalizaci skutečné funkce systematickým výběrem vstupních hodnot z povolené sady a výpočtem hodnoty funkce. Zobecnění teorie a technik optimalizace na jiné formulace zahrnuje velkou oblast aplikované matematiky. Obecněji řečeno, optimalizace zahrnuje hledání „nejlépe dostupných“ hodnot nějaké objektivní funkce dané definované doméně (nebo vstupu),včetně řady různých typů objektivních funkcí a různých typů domén.

Použijte systém doporučení Case - Movie

Problémové prohlášení: Vytvoření systému doporučení filmů, který doporučuje filmy založené na preferencích uživatele pomocí Apache Spark.

Naše požadavky:

Pojďme tedy posoudit požadavky na vybudování našeho systému doporučení filmů:

  1. Zpracovávejte obrovské množství dat
  2. Vstup z více zdrojů
  3. Snadné použití
  4. Rychlé zpracování

Jak můžeme posouditnaše požadavky, potřebujeme nejlepší Big Data nástroj pro zpracování velkých dat v krátkém čase. Proto Apache Spark je dokonalým nástrojem k implementaci našeho systému doporučení filmů.

Podívejme se nyní na vývojový diagram našeho systému.

Jak vidíme, následující používá Streamování ze Sparku Streamování. Můžeme streamovat v reálném čase nebo číst data z Hadoop HDFS.

Získání datové sady:

U našeho systému doporučení filmů můžeme získat hodnocení uživatelů z mnoha populárních webů, jako jsou IMDB, Rotten Tomatoes a Times Movie Ratings. Tato datová sada je k dispozici v mnoha formátech, jako jsou soubory CSV, textové soubory adatabáze. Data můžeme streamovat živě z webových stránek nebo je stahovat a ukládatnáš lokální souborový systém nebo HDFS.

Datová sada:

Níže uvedený obrázek ukazuje, jak můžeme shromažďovat datové sady z populárních webových stránek.

Jakmile streamujeme data do Sparku, vypadá to nějak takto.

Strojové učení:

Celý systém doporučení je založen na algoritmu Machine Learning Střídání nejméně čtverců . Zde je ALS typem regresní analýzy, kde se regrese používá k nakreslení čáry uprostřed datových bodů takovým způsobem, že je minimalizován součet čtverců vzdálenosti od každého datového bodu. Tento řádek se tedy použije k předpovědi hodnot funkce, kde splňuje hodnotu nezávislé proměnné.

Modrá čára v diagramu je nejvhodnější regresní přímka. Pro tento řádek je hodnota kóty D minimální. Všechny ostatní červené čáry budou vždy dále od datové sady jako celku.

Implementace Spark MLlib:

  1. K předpovědi hodnocení pro konkrétní filmy na základě jejich hodnocení pro jiné filmy použijeme Collaborative Filtering (CF).
  2. Poté to spolupracujeme s hodnocením ostatních uživatelů pro konkrétní film.
  3. Abychom z našeho Machine Learning získali následující výsledky, musíme použít DataFrame, datovou sadu a službu SQL Spark SQL.

Zde je pseudokód pro náš program:

přetížení metody a přepsání metody v Javě
import org.apache.spark.mllib.recommendation.ALS import org.apache.spark.mllib.recommendation.Rating import org.apache.spark.SparkConf // Import dalších potřebných balíčků objekt Movie {def main (args: Array [String] ) {val conf = new SparkConf (). setAppName ('Movie'). setMaster ('local [2]') val sc = new SparkContext (conf) val rawData = sc.textFile ('* Read Data from Movie CSV file * ') //rawData.first () val rawRatings = rawData.map (* Rozdělit rawData na oddělovač karet *) hodnocení valů = rawRatings.map {* Pole případu mapy uživatele, filmu a hodnocení *} // Školení modelu datových valů = ALS.train (hodnocení, 50, 5, 0,01) model.userFeatures model.userFeatures.count model.productFeatures.count val predictionRating = * Predikce pro uživatele 789 pro film 123 * val userId = * Uživatel 789 * val K = 10 val topKRecs = model.recommendProducts (* Doporučte uživateli pro konkrétní hodnotu K *) println (topKRecs.mkString ('')) val filmy = sc.textFile ('* Číst údaje ze seznamu filmů *') val tituly = filmy.map (line => line.split ('|'). take ( 2)). Map (array => (array (0) .toInt, array (1))). CollectAsMap () val titulyRDD = movies.map (line => line.split ('|'). Take (2) ). mapa (pole => (pole (0) .toInt, pole (1))). cache () tituly (123) val filmyForUser = hodnocení. * Hledat uživatele 789 * val sqlContext = * Vytvořit kontext SQL * filmy val = sqlContext. * Vytvořit datový rámec z doporučených filmů * moviesRecommended.registerTempTable ('moviesRecommendedTable') sqlContext.sql ('Select count (*) from filmsRecommendedTable'). foreach (println) moviesForUser. * Seřaďte hodnocení pro uživatele 789 * .map (* Namapujte hodnocení na název filmu *). * Vytisknout hodnocení * výsledky val = filmyForUser.sortBy (-_. Hodnocení) .take (30) .map (hodnocení => (tituly (rating.produkt), rating.rating))}}

Jakmile vygenerujeme předpovědi, můžeme použít Spark SQL k uložení výsledků do systému RDBMS. To lze dále zobrazit ve webové aplikaci.

Výsledek:

Postava: Filmy doporučené pro uživatele 77

Hurá! Takto jsme úspěšně vytvořili systém doporučení filmu pomocí Apache Spark. Tím jsme pokryli pouze jeden z mnoha populárních algoritmů, které Spark MLlib nabízí. Další informace o strojovém učení se dozvíte v nadcházejících blogech o algoritmech datové vědy.

Pokud jde o další postup, můžete se dál učit Apache Spark s výukovým programem Spark, výukovým programem Spark Streaminga otázky týkající se rozhovorů se Sparkem.Edureka se věnuje poskytování nejlepší možné studijní zkušenosti online.

Podívejte se na naše i Pokud se chcete naučit Spark a budovat si kariéru v doméně Spark a budovat odborné znalosti pro provádění rozsáhlého zpracování dat pomocí RDD, Spark Streaming, SparkSQL, MLlib, GraphX ​​a Scala s případy použití v reálném životě.