Spark MLlib - Knižnica strojového učenia Apache Spark



Tento blog Spark MLlib vám predstaví knižnicu strojového učenia Apache Spark. Zahŕňa projekt systému filmových odporúčaní využívajúci Spark MLlib.

Spark MLlib je komponent Apache Spark’s Machine Learning.Jednou z hlavných atrakcií Sparku je schopnosť masívne škálovať výpočet, a to je presne to, čo potrebujete pre algoritmy strojového učenia. Obmedzením však je, že všetky algoritmy strojového učenia nemožno efektívne paralelizovať. Každý algoritmus má pre paralelizáciu svoje vlastné výzvy, či už ide o paralelizmus úloh alebo dátový paralelizmus.

Z tohto dôvodu sa Spark stáva de facto platformou pre vytváranie algoritmov a aplikácií strojového učenia.Môžete sa pozrieť na skôr, ako začnete s blogom, zostavili ho odborníci v odbore.Vývojári pracujúci na Spark MLlib implementujú čoraz viac strojových algoritmov škálovateľným a stručným spôsobom v rámci Spark. Prostredníctvom tohto blogu sa dozvieme koncepty strojového učenia, Spark MLlib, jeho obslužných programov, algoritmov a úplného prípadu použitia systému Movie Doporučení.





V tomto blogu sa budeme venovať nasledujúcim témam:

  1. Čo je to strojové učenie?
  2. Prehľad Spark MLlib
  3. Spark MLlib Tools
  4. Algoritmy MLlib
  5. Použite systém odporúčaní prípadu - filmu

Čo je to strojové učenie?

Vyvinuté zo štúdia rozpoznávania vzorov a výpočtovej teórie učenia v umelej inteligencii, strojové učenie skúma štúdium a konštrukciu algoritmov, ktoré sa môžu učiť a predpovedať dáta - tieto algoritmy prekonávajú prísne statické pokyny programu tým, že robia predpovede alebo rozhodnutia založené na dátach , prostredníctvom zostavenia modelu zo vzorových vstupov.



Strojové učenie - Spark MLlib - Edureka Obrázok: Nástroje strojového učenia

Strojové učenie úzko súvisí s výpočtovými štatistikami, ktoré sa zameriavajú aj na tvorbu predikcií pomocou počítačov. Má silné väzby na matematickú optimalizáciu, ktorá dodáva do tejto oblasti metódy, teórie a aplikačné domény. V oblasti dátovej analýzy je strojové učenie metódou používanou na navrhovanie zložitých modelov a algoritmov, ktoré sú vhodné na predikciu, ktorá je v komerčnom použití známa ako prediktívna analýza.

Existujú tri kategórie úloh strojového učenia:



  1. Učenie pod dohľadom : Kontrolované učenie je miesto, kde máte vstupné premenné (x) a výstupnú premennú (Y) a pomocou algoritmu sa naučíte funkciu mapovania od vstupu k výstupu.
  2. Učenie bez dozoru : Neupravené učenie je typ algoritmu strojového učenia, ktorý sa používa na vyvodenie záverov zo súborov údajov pozostávajúcich zo vstupných údajov bez označených odpovedí.
  3. Výučba posilňovania : Počítačový program interaguje s dynamickým prostredím, v ktorom musí plniť určitý cieľ (napríklad viesť vozidlo alebo hrať hru proti súperovi). Programu sa poskytuje spätná väzba v podobe odmien a trestov, keď sa pohybuje v problémovom priestore.Tento koncept sa nazýva posilnenie učenia.

Prehľad Spark MLlib

Spark MLlib sa používa na vykonávanie strojového učenia v Apache Spark. MLlib pozostáva z populárnych algoritmov a obslužných programov.

Prehľad MLlib:

  • spark.mllib obsahuje pôvodné API postavené na RDD. Momentálne je v režime údržby.
  • iskra.ml poskytuje rozhranie vyššej úrovne API postavené nad DataFrames prevýstavba potrubí ML. iskra.ml je momentálne primárnym API strojového učenia pre Spark.

Spark MLlib Tools

Spark MLlib poskytuje nasledujúce nástroje:

  • Algoritmy ML: ML Algoritmy tvoria jadro MLlib. Patria sem bežné algoritmy učenia, ako je klasifikácia, regresia, klastrovanie a spoločné filtrovanie.
  • Funkcia: Medzi funkcie patrí extrakcia, transformácia, zníženie a výber dimenzií.
  • Potrubia: Pipelines poskytujú nástroje na konštrukciu, hodnotenie a ladenie ML Pipelines.
  • Vytrvalosť: Vytrvalosť pomáha pri ukladaní a načítaní algoritmov, modelov a potrubí.
  • Pomôcky: Verejné službypre lineárnu algebru, štatistiku a spracovanie údajov.

Algoritmy MLlib

Populárne algoritmy a nástroje v programe Spark MLlib sú:

  1. Základné štatistiky
  2. Regresia
  3. Klasifikácia
  4. Systém odporúčaní
  5. Zhlukovanie
  6. Zníženie rozmerov
  7. Extrakcia funkcií
  8. Optimalizácia

Pozrime sa na niektoré z nich podrobne.

Základné štatistiky

Základné štatistiky obsahuje najzákladnejšie techniky strojového učenia. Tie obsahujú:

  1. Súhrnná štatistika : Príklady zahŕňajú priemer, rozptyl, počet, max, min a numNonZeros.
  2. Korelácie : Spearman a Pearson sú niektoré spôsoby, ako nájsť koreláciu.
  3. Stratifikovaný odber vzoriek : Patria sem sampleBykey a sampleByKeyExact.
  4. Testovanie hypotéz : Pearsonov test chí-kvadrát je príkladom testovania hypotéz.
  5. Náhodné generovanie údajov : Na generovanie náhodných údajov sa používajú RandomRDD, Normal a Poisson.

Regresia

Regresia analýza je štatistický proces na odhad vzťahov medzi premennými. Zahŕňa mnoho techník na modelovanie a analýzu niekoľkých premenných, keď sa kladie dôraz na vzťah medzi závislou premennou a jednou alebo viacerými nezávislými premennými. Konkrétnejšie, regresná analýza pomáha človeku pochopiť, ako sa mení typická hodnota závislej premennej, keď sa mení ktorákoľvek z nezávislých premenných, zatiaľ čo ostatné nezávislé premenné zostávajú pevné.

Regresná analýza sa často používa na predpovedanie a predpovedanie, kde sa jej použitie podstatne prekrýva s oblasťou strojového učenia. Regresná analýza sa tiež používa na pochopenie toho, ktoré z nezávislých premenných súvisia so závislou premennou, a na preskúmanie foriem týchto vzťahov. Za obmedzených okolností možno na odvodenie kauzálnych vzťahov medzi nezávislými a závislými premennými použiť regresnú analýzu.

Klasifikácia

Klasifikácia predstavuje problém identifikácie, do ktorej zo súboru kategórií (subpopulácií) nové pozorovanie patrí, na základe tréningového súboru údajov obsahujúcich pozorovania (alebo inštancie), ktorých členstvo v kategórii je známe. Je to príklad rozpoznávania vzorov.

Príkladom môže byť priradenie daného e-mailu do tried „spamu“ alebo „nevyžiadanej pošty“ alebo priradenie diagnózy danému pacientovi, ako je to opísané na základe pozorovaných charakteristík pacienta (pohlavie, krvný tlak, prítomnosť alebo absencia určitých príznakov, atď.).

Systém odporúčaní

TO odporúčací systém je podtrieda systému filtrovania informácií, ktorá sa snaží predpovedať „hodnotenie“ alebo „preferencie“, ktoré by používateľ dal položke. Systémy odporúčacích staníc sú v posledných rokoch čoraz populárnejšie a využívajú sa v rôznych oblastiach vrátane filmov, hudby, noviniek, kníh, výskumných článkov, vyhľadávacích dotazov, sociálnych značiek a produktov všeobecne.

Systémy odporúčateľov zvyčajne vytvárajú zoznam odporúčaní jedným z dvoch spôsobov - prostredníctvom spolupráce a filtrovania podľa obsahu alebo osobnostného prístupu.

  1. Kolaboratívne filtrovanie prístupy k budovaniu modelu z minulého správania používateľa (predtým zakúpené alebo vybrané položky a / alebo číselné hodnotenie týchto položiek), ako aj z podobných rozhodnutí iných používateľov. Tento model sa potom používa na predpovedanie položiek (alebo hodnotení položiek), o ktoré môže mať používateľ záujem.
  2. Filtrovanie podľa obsahu prístupy využívajú rad samostatných charakteristík položky s cieľom odporučiť ďalšie položky s podobnými vlastnosťami.

Ďalej sú tieto prístupy často kombinované ako hybridné odporúčacie systémy.

Zhlukovanie

Zhlukovanie je úlohou zoskupiť množinu objektov tak, aby sa objekty v tej istej skupine (nazývanej klaster) navzájom viac podobali (v určitom alebo inom zmysle) než tým v iných skupinách (klastroch). Je to teda hlavná úloha prieskumnej ťažby údajov a bežná technika štatistickej analýzy údajov, ktorá sa používa v mnohých oblastiach, vrátane strojového učenia, rozpoznávania vzorov, obrazovej analýzy, získavania informácií, bioinformatiky, kompresie údajov a počítačovej grafiky.

Zníženie rozmerov

Zníženie rozmerov je proces znižovania počtu uvažovaných náhodných premenných získaním súboru základných premenných. Možno ho rozdeliť na výber a extrakciu prvkov.

  1. Výber funkcií: Výber funkcií vyhľadá podmnožinu pôvodných premenných (nazývaných tiež prvky alebo atribúty).
  2. Extrakcia funkcií: Toto transformuje údaje vo vysokodimenzionálnom priestore na priestor s menšími rozmermi. Transformácia dát môže byť lineárna, ako v analýze hlavných komponentov (PCA), ale existuje aj veľa techník redukcie nelineárnych dimenzií.

Extrakcia funkcií

Extrakcia funkcií vychádza z počiatočnej sady nameraných údajov a vytvára odvodené hodnoty (vlastnosti), ktoré majú byť informatívne a neredundantné, uľahčujúce následné kroky učenia a generalizácie a v niektorých prípadoch viesť k lepšej interpretácii človeka. Súvisí to so znížením rozmerov.

Optimalizácia

Optimalizácia je výber toho najlepšiehoprvku (s ohľadom na niektoré kritérium) z niektorej skupiny dostupných alternatív.

V najjednoduchšom prípade problém s optimalizáciou spočíva v maximalizácii alebo minimalizácii skutočnej funkcie systematickým výberom vstupných hodnôt z povolenej množiny a výpočtom hodnoty funkcie. Zovšeobecnenie optimalizačnej teórie a techník na iné formulácie zahŕňa veľkú oblasť aplikovanej matematiky. Všeobecnejšie, optimalizácia zahŕňa nájdenie „najlepšie dostupných“ hodnôt nejakej objektívnej funkcie danej definovanej doméne (alebo vstupu),vrátane rôznych rôznych typov objektívnych funkcií a rôznych typov domén.

Použite systém odporúčaní prípadu - filmu

Vyhlásenie o probléme: Vybudovať systém odporúčaní filmov, ktorý odporúča filmy založené na preferenciách používateľa pomocou Apache Spark.

Naše požiadavky:

Poďme teda posúdiť požiadavky na zostavenie nášho systému odporúčaní filmov:

  1. Spracovávať obrovské množstvo dát
  2. Vstup z viacerých zdrojov
  3. Jednoduché použitie
  4. Rýchle spracovanie

Ako môžeme posúdiťnaše požiadavky, potrebujeme najlepší nástroj pre veľké dáta na spracovanie veľkých dát v krátkom čase. Preto Apache Spark je dokonalým nástrojom na implementáciu nášho systému odporúčaní filmov.

Pozrime sa teraz na vývojový diagram nášho systému.

Ako vidíme, nasledujúce používa streamovanie zo streamovania Spark. Môžeme streamovať v reálnom čase alebo čítať dáta z Hadoop HDFS.

Získanie množiny údajov:

V prípade nášho systému odporúčaní filmov môžeme získať hodnotenie používateľov od mnohých populárnych webových stránok, ako sú IMDB, Rotten Tomatoes a Times Movie Ratings. Tento súbor údajov je k dispozícii v mnohých formátoch, ako sú súbory CSV, textové súbory and databázy. Údaje môžeme streamovať naživo z webových stránok alebo ich stiahnuť a uložiťnáš lokálny súborový systém alebo HDFS.

Množina údajov:

Nižšie uvedený obrázok ukazuje, ako môžeme zhromažďovať súbory údajov z populárnych webových stránok.

Akonáhle prenesieme dáta do Sparku, vyzerá to asi takto.

Strojové učenie:

Celý systém odporúčaní je založený na algoritme Machine Learning Striedavé najmenšie štvorce . V tomto prípade je ALS typ regresnej analýzy, pri ktorej sa regresia používa na nakreslenie priamky medzi dátovými bodmi takým spôsobom, aby sa minimalizoval súčet štvorcov vzdialenosti od každého dátového bodu. Tento riadok sa potom použije na predpovedanie hodnôt funkcie, kde spĺňa hodnotu nezávislej premennej.

Modrá čiara v diagrame je najlepšie vyhovujúcou regresnou čiarou. Pre tento riadok je hodnota dimenzie D minimálna. Všetky ostatné červené čiary budú vždy ďalej od množiny údajov ako celku.

Implementácia Spark MLlib:

  1. Na predpovedanie hodnotení používateľov pre konkrétne filmy na základe ich hodnotení pre iné filmy použijeme Collaborative Filtering (CF).
  2. Potom to spolupracujeme s hodnotením iných používateľov pre konkrétny film.
  3. Aby sme z nášho Machine Learning získali nasledujúce výsledky, musíme použiť DataFrame, dataset a službu SQL Spark SQL.

Tu je pseudokód pre náš program:

ako funguje tostring v jave
import org.apache.spark.mllib.recommendation.ALS import org.apache.spark.mllib.recommendation.Rating import org.apache.spark.SparkConf // Import ďalších potrebných balíkov 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 (* Split rawData on tab delimiter *) val hodnotenia = rawRatings.map {* array case case of User, Movie and Rating *} // Training the data val model = ALS.train (hodnotenie, 50, 5, 0,01) model.userFeatures model.userFeatures.count model.productFeatures.count val predikovanýRating = * Predikcia pre používateľa 789 pre film 123 * val userId = * Používateľ 789 * val K = 10 valcov topKRecs = model.recommendProducts (* Odporúčajte používateľovi pre konkrétnu hodnotu K *) println (topKRecs.mkString ('')) val filmy = sc.textFile ('* Prečítajte si údaje zo zoznamu filmov *') val tituly = filmy.map (line => line.split ('|'). take ( 2)). Mapa (pole => (pole (0) .toInt, pole (1))). CollectAsMap () val tituly RRD = filmy.map (line => line.split ('|'). Take (2) ). mapa (pole => (pole (0) .toInt, pole (1))). cache () tituly (123) val filmyForUser = hodnotenie. * Hľadať používateľa 789 * val sqlContext = * Vytvoriť kontext SQL * filmy val = sqlContext. * Vytvorte dátový rámec odporúčaných filmov * moviesRecommended.registerTempTable ('moviesRecommendedTable') sqlContext.sql ('Vyberte počet (*) z moviesRecommendedTable'). foreach (println) moviesForUser. * Zoraďte hodnotenie pre používateľa 789 * .map (* Namapujte hodnotenie na názov filmu *). * Vytlačiť hodnotenie * výsledky testu = moviesForUser.sortBy (-_. Hodnotenie) .take (30) .map (hodnotenie => (tituly (rating.produkt), rating.rating))}}

Keď vygenerujeme predpovede, môžeme použiť Spark SQL na uloženie výsledkov do systému RDBMS. Ďalej je to možné zobraziť vo webovej aplikácii.

Výsledky:

Obrázok: Filmy odporúčané pre používateľa 77

Hurá! Takto sme úspešne vytvorili systém odporúčaní filmov pomocou Apache Spark. Týmto sme sa zaoberali iba jedným z mnohých populárnych algoritmov, ktoré ponúka Spark MLlib. Viac sa o strojovom učení dozvieme v nadchádzajúcich blogoch o algoritmoch Data Science Algorithms.

V ďalšom postupe môžete pokračovať v učení programu Apache Spark pomocou programu Spark Tutorial, Spark Streaming Tutoriala otázky týkajúce sa rozhovoru so Sparkom.Edureka sa venuje poskytovaniu čo najlepšej možnej vzdelávacej skúsenosti online.

Skontrolujte naše i Ak sa chcete naučiť Spark a budovať si kariéru v oblasti Spark a budovať odborné znalosti na vykonávanie rozsiahleho spracovania údajov pomocou RDD, Spark Streaming, SparkSQL, MLlib, GraphX ​​a Scala s prípadmi použitia v reálnom živote.