Spark MLlib - masinõppe raamatukogu Apache Sparkist

See Spark MLlibi ajaveeb tutvustab teile Apache Sparki masinõppe teeki. See sisaldab filmi soovitussüsteemi projekti, mis kasutab Spark MLlibi.

Säde MLlib on Apache Sparki masinõppe komponent.Sparki üks peamisi vaatamisväärsusi on võime arvutusi massiliselt skaalata ja see on just see, mida masinõppe algoritmide jaoks vajate. Kuid piirang on see, et kõiki masinõppe algoritme ei saa tõhusalt paralleelida. Igal algoritmil on paralleelsuse jaoks oma väljakutsed, olgu see siis ülesande paralleelsus või andmete paralleelsus.



Seda öeldes on Sparkist saamas de facto platvorm masinõppe algoritmide ja rakenduste loomiseks.Noh, saate tutvuda enne blogiga jätkamist on kureerinud tööstuse eksperdid.Spark MLlibi kallal töötavad arendajad rakendavad Sparki raamistikus üha enam masinalgoritme skaleeritavalt ja kokkuvõtlikult. Selle ajaveebi kaudu õpime masinõppe, Spark MLlibi mõisteid, selle utiliite, algoritme ja filmi soovitussüsteemi täieliku kasutamise juhtumit.



Selles ajaveebis käsitletakse järgmisi teemasid:

  1. Mis on masinõpe?
  2. Spark MLlib ülevaade
  3. Spark MLlib Tools
  4. MLlib algoritmid
  5. Kasuta juhtumit - filmi soovitussüsteem

Mis on masinõpe?

Tehisintellektis mustrite tuvastamise ja arvutusliku õppimise teooria uurimisest lähtuvalt uurib masinõpe selliste algoritmide uurimist ja konstrueerimist, mis võivad andmetest õppida ja neid ennustada - sellised algoritmid ületatakse rangelt staatiliste programmi juhiste järgi, tehes andmepõhiseid ennustusi või otsuseid , valimi sisenditest mudeli ehitamise kaudu.



Masinõpe - Spark MLlib - Edureka Joonis: Masinõppevahendid

Masinõpe on tihedalt seotud arvutusstatistikaga, mis keskendub ka arvutite abil prognoosimisele. Sellel on tihedad sidemed matemaatilise optimeerimisega, mis annab valdkonnale meetodid, teooria ja rakendusvaldkonnad. Andmeanalüütika valdkonnas on masinõpe meetod, mida kasutatakse keerukate mudelite ja algoritmide väljatöötamiseks, mis sobivad ennustamiseks, mida kaubanduslikus kasutuses nimetatakse ennustavaks analüüsiks.

Masinõppe ülesandeid on kolme kategooriat:



erinevus HTML ja XML vahel
  1. Juhendatud õppimine : Juhendatud õppimine on koht, kus teil on sisendmuutujad (x) ja väljundmuutuja (Y) ning kasutate algoritmi kaardistamisfunktsiooni õppimiseks sisendist väljundini.
  2. Järelevalveta õppimine : Järelevalveta õppimine on teatud tüüpi masinõppe algoritm, mida kasutatakse järelduste tegemiseks sisestatud andmetest koosnevatest andmekogumitest ilma sildistatud vastuseta.
  3. Tugevdusõpe : Arvutiprogramm suhtleb dünaamilise keskkonnaga, milles ta peab täitma teatud eesmärki (näiteks sõitma sõidukiga või mängima mängu vastasega). Programmile antakse tagasisidet hüvede ja karistuste osas, kui see liigub oma probleemiruumis.Seda mõistet nimetatakse tugevdavaks õppeks.

Spark MLlib ülevaade

Spark MLlibi kasutatakse masinõppe teostamiseks Apache Sparkis. MLlib koosneb populaarsetest algoritmidest ja utiliitidest.

MLlibi ülevaade:

  • säde.mllib sisaldab RDD-de peale ehitatud algset API-d. See on praegu hooldusrežiimis.
  • säde.ml pakub domeenile DataFrames üles ehitatud kõrgema taseme API-dML torujuhtmete ehitamine. säde.ml on Sparki jaoks praegu peamine masinõppe API.

Spark MLlib Tools

Spark MLlib pakub järgmisi tööriistu:

  • ML algoritmid: ML algoritmid moodustavad MLlibi tuuma. Nende hulka kuuluvad sellised tavalised õppimisalgoritmid nagu klassifitseerimine, regressioon, klastrite moodustamine ja koostöö filtreerimine.
  • Esiletõstmine: Esiletõstmine hõlmab funktsioonide väljavõtmist, teisendamist, mõõtmete vähendamist ja valimist.
  • Torujuhtmed: Torujuhtmed pakuvad vahendeid ML torujuhtmete ehitamiseks, hindamiseks ja häälestamiseks.
  • Püsivus: Püsivus aitab salvestada ja laadida algoritme, mudeleid ja torujuhtmeid.
  • Utiliidid: Utiliididlineaaralgebra, statistika ja andmetöötluse jaoks.

MLlib algoritmid

Spark MLlibis on populaarsed algoritmid ja utiliidid järgmised:

  1. Põhistatistika
  2. Taandareng
  3. Klassifikatsioon
  4. Soovituste süsteem
  5. Klastrid
  6. Mõõtmete vähendamine
  7. Funktsiooni eraldamine
  8. Optimeerimine

Vaatame mõnda neist üksikasjalikult.

Põhistatistika

Põhistatistika sisaldab kõige põhilisemaid masinõppe tehnikaid. Need sisaldavad:

  1. Kokkuvõtlik statistika : Näited hõlmavad keskmist, dispersiooni, loendust, max, min ja numNonZeros.
  2. Seosed : Spearman ja Pearson on mõned viisid korrelatsiooni leidmiseks.
  3. Stratifitseeritud proovivõtt : Nende hulka kuuluvad sampleBykey ja sampleByKeyExact.
  4. Hüpoteesi testimine : Pearsoni chi-ruudu test on hüpoteeside testimise näide.
  5. Juhuslik andmete genereerimine : Juhuslike andmete genereerimiseks kasutatakse RandomRDDs, Normal ja Poisson.

Taandareng

Taandareng analüüs on statistiline protsess muutujate vaheliste seoste hindamiseks. See sisaldab paljusid tehnikaid mitme muutuja modelleerimiseks ja analüüsimiseks, kui keskendutakse sõltuva muutuja ja ühe või mitme sõltumatu muutuja vahelisele seosele. Täpsemalt öeldes aitab regressioonanalüüs mõista, kuidas muutub sõltuva muutuja tüüpiline väärtus, kui muudetakse mõnda sõltumatut muutujat, samal ajal kui teisi sõltumatuid muutujaid hoitakse fikseeritud.

Regressioonanalüüsi kasutatakse laialdaselt ennustamiseks ja prognoosimiseks, kus selle kasutamine kattub oluliselt masinõppe valdkonnaga. Regressioonianalüüsi kasutatakse ka selleks, et mõista, millised sõltumatud muutujad on seotud sõltuva muutujaga, ja uurida nende seoste vorme. Piiratud tingimustel saab regressioonanalüüsi abil järeldada põhjuslikke seoseid sõltumatute ja sõltuvate muutujate vahel.

Klassifikatsioon

Klassifikatsioon on probleem tuvastada, millisesse kategooriate kogumisse (alampopulatsioonidesse) kuulub uus vaatlus, vaatlusi (või juhtumeid) sisaldava koolituskomplekti põhjal, mille kategooriasse kuulumine on teada. See on mustri tuvastamise näide.

Siinkohal on näiteks antud meilisõnumi määramine rämpsposti või rämpspostita klassidesse või diagnoosi määramine antud patsiendile vastavalt patsiendi täheldatud tunnustele (sugu, vererõhk, teatud sümptomite olemasolu või puudumine). jne.).

Soovituste süsteem

TO soovitussüsteem on teabe filtreerimissüsteemi alaklass, mis püüab ennustada 'hinnangut' või 'eelistust', mille kasutaja üksusele annaks. Soovitussüsteemid on viimastel aastatel muutunud üha populaarsemaks ja neid kasutatakse erinevates valdkondades, sealhulgas filmid, muusika, uudised, raamatud, teadusartiklid, otsingupäringud, sotsiaalsed sildid ja tooted üldiselt.

Soovitajate süsteemid koostavad soovituste loendi tavaliselt kahel viisil - koostöö- ja sisupõhise filtreerimise või isiksuspõhise lähenemise kaudu.

  1. Koostöös filtreerimine läheneb mudeli loomisele nii kasutaja varasemast käitumisest (varem ostetud või valitud asjad ja / või neile antud numbrilised hinnangud) kui ka teiste kasutajate sarnastest otsustest. Seejärel kasutatakse seda mudelit üksuste (või üksuste hinnangute) ennustamiseks, mille vastu kasutaja võib olla huvitatud.
  2. Sisupõhine filtreerimine lähenemisviisides kasutatakse üksuse diskreetsete omaduste seeriat, et soovitada täiendavaid sarnaste omadustega üksusi.

Lisaks kombineeritakse neid lähenemisviise sageli hübriidsoovitussüsteemidena.

Klastrid

Klastrid on objektide kogumi rühmitamise ülesanne nii, et samas rühmas olevad objektid (nn klastrid) oleksid üksteisega sarnasemad (mõnes või teises mõttes) kui teiste rühmade (klastrite) objektid. Niisiis, see on uurimisandmete kaevandamise peamine ülesanne ja statistiliste andmete analüüsimiseks ühine tehnika, mida kasutatakse paljudes valdkondades, sealhulgas masinõpe, mustrite tuvastamine, piltide analüüs, teabe otsimine, bioinformaatika, andmete tihendamine ja arvutigraafika.

Mõõtmete vähendamine

Mõõtmete vähendamine on vaadeldavate juhuslike muutujate arvu vähendamise protsess põhimuutujate hulga saamise kaudu. Selle võib jagada funktsioonide valimiseks ja funktsioonide väljavõtmiseks.

  1. Funktsiooni valik: Funktsioonivalik leiab algsete muutujate alamhulga (neid nimetatakse ka funktsioonideks või atribuutideks).
  2. Funktsiooni eraldamine: See muudab andmed kõrgemõõtmelises ruumis väiksema mõõtmega ruumiks. Andmete teisendamine võib olla lineaarne, nagu põhikomponentide analüüsis (PCA), kuid eksisteerib ka palju mittelineaarseid mõõtmete vähendamise tehnikaid.

Funktsiooni eraldamine

Funktsiooni eraldamine algab mõõdetud andmete esialgsest komplektist ja loob tuletatud väärtused (tunnused), mis on mõeldud informatiivseks ja mittevajalikuks, hõlbustades järgnevaid õppimis- ja üldistamisetappe ning viies mõnel juhul ka inimeste paremate tõlgendusteni. See on seotud mõõtmete vähendamisega.

Optimeerimine

Optimeerimine on parimate valik(mõne kriteeriumi osas) mõnest saadaolevast alternatiivist.

Lihtsamal juhul seisneb optimeerimisprobleem reaalse funktsiooni maksimeerimises või minimeerimises, valides süsteemselt lubatud hulga sisendväärtused ja arvutades funktsiooni väärtuse. Optimeerimise teooria ja tehnikate üldistamine teistele formulatsioonidele hõlmab suurt rakendusmatemaatika valdkonda. Üldisemalt hõlmab optimeerimine määratletud domeeni (või sisendi) korral mõne eesmärgi funktsiooni „parimate saadaolevate” väärtuste leidmist,sealhulgas mitmesuguseid erinevat tüüpi objektiivseid funktsioone ja erinevat tüüpi domeene.

Kasuta juhtumit - filmi soovitussüsteem

Probleemipüstituses: Ehitada filmisoovitussüsteem, mis soovitab filme Apache Sparki abil kasutaja eelistuste põhjal.

Meie nõuded:

Hinnakem siis filmisoovituste süsteemi loomise nõudeid:

  1. Töötle tohutul hulgal andmeid
  2. Sisend mitmest allikast
  3. Lihtne kasutada
  4. Kiire töötlemine

Nagu saame hinnatameie nõuete järgi vajame suurte andmete lühikese aja jooksul töötlemiseks parimat tööriista Big Data. Seetõttu Apache Spark on ideaalne tööriist meie filmisoovitussüsteemi rakendamiseks.

Vaatame nüüd oma süsteemi vooskeemi.

Nagu näeme, kasutab järgmine voogedastus Sparki voogesitusest. Saame voogesitada reaalajas või lugeda andmeid Hadoop HDFS-ist.

Andmekogumi hankimine:

Meie filmisoovitussüsteemi jaoks saame kasutajate hinnanguid paljudelt populaarsetelt veebisaitidelt, nagu IMDB, Rotten Tomatoes ja Times Movie Ratings. See andmekogum on saadaval paljudes vormingutes, näiteks CSV-failid, tekstifailid amuud andmebaasid. Saame andmeid veebisaitidelt otse voogesitada või need alla laadida ja salvestadameie kohalik failisüsteem või HDFS.

Andmekogum:

Alloleval joonisel on näidatud, kuidas saame populaarsetest veebisaitidest andmekogumit koguda.

Kui oleme andmed Sparki voogesitanud, näeb see välja umbes selline.

Masinõpe:

Kogu soovitussüsteem põhineb masinõppe algoritmil Vähim ruutude vaheldumine . Siin on ALS regressioonanalüüsi tüüp, kus regressiooni kasutatakse joone tõmbamiseks andmepunktide vahel nii, et igast andmepunktist kauguse ruutude summa oleks minimaalne. Seega kasutatakse seda joont funktsiooni väärtuste ennustamiseks, kui see vastab sõltumatu muutuja väärtusele.

Diagrammil olev sinine joon sobib kõige paremini regressioonijooneks. Selle rea puhul on mõõtme D väärtus minimaalne. Kõik muud punased jooned jäävad andmekogumist tervikuna alati kaugemale.

Spark MLlibi juurutamine:

  1. Kasutame ühist filtreerimist (CF), et ennustada teatud filmide kasutajate hinnanguid nende filmide hinnangute põhjal.
  2. Seejärel teeme seda koostööd teiste kasutajate hinnanguga selle konkreetse filmi jaoks.
  3. Meie masinõppe tulemuste saamiseks peame kasutama Spark SQLi DataFrame'i, andmekogumit ja SQL Service'i.

Siin on meie programmi pseudokood:

import org.apache.spark.mllib.recommendation.ALS import org.apache.spark.mllib.recommendation.Rating import org.apache.spark.SparkConf // Muude vajalike pakettide objekti importimine Film {def main (args: Massiiv [String] ) {val conf = new SparkConf (). setAppName ('Movie'). setMaster ('local [2]') val sc = new SparkContext (conf) val rawData = sc.textFile ('* Loe andmeid filmi CSV-failist * ') //rawData.first () val rawRatings = rawData.map (* Jagage rawData vahekaardi eraldajale *) val reitingud = rawRatings.map {* Kasutaja, filmi ja hinnangu kaardijuhtumite massiiv *} // data val-mudeli koolitus = ALS.train (hinnangud, 50, 5, 0,01) model.userFeatures model.userFeatures.count model.productFeatures.count val predictedRating = * Ennusta kasutajale 789 filmi 123 jaoks * val userId = * Kasutaja 789 * val K = 10 val topKRecs = model.recommendProducts (* soovitab kasutajale K konkreetse väärtuse jaoks) println (topKRecs.mkString ('')) val movies = sc.textFile ('* Loe filmiloendi andmeid *') val pealkirjad = movies.map (rida => rida.jaotus ('|'). võta ( 2)). Kaart (massiiv => (massiiv (0) .toInt, massiiv (1))). CollectAsMap () val pealkirjadRDD = filmid.map (rida => rida.split ('|'). Võta (2) ) .map (array => (array (0) .toInt, array (1))). vahemälu () pealkirjad (123) val moviesForUser = reitingud. * Otsi kasutajat 789 * val sqlContext = * SQL-i konteksti loomine * val moviesRecommended = sqlContext. * Looge soovitatud filmidest DataFrame * moviesRecommended.registerTempTable ('moviesRecommendedTable') sqlContext.sql ('Valige count (*) from moviesRecommendedTable'). foreach (println) moviesForUser. * Sorteeri hinnangud kasutajale 789 * .map (* Hinnang kaardistatakse filmi pealkirjaga *). * Hinnangu printimine * val tulemused = moviesForUser.sortBy (-_. Hinnang) .take (30) .kaart (hinnang => (pealkirjad (hinnang.toode), hinnang.hinnang))}}

Kui oleme prognoosid genereerinud, saame tulemuste RDBMS-süsteemi salvestamiseks kasutada Spark SQL-i. Lisaks saab seda kuvada veebirakenduses.

Tulemused:

Joonis: Kasutajale 77 soovitatud filmid

Hurraa! Nii oleme Apache Sparki abil edukalt loonud filmisoovituste süsteemi. Sellega oleme käsitlenud ainult ühte Spark MLlibi pakutavatest paljudest populaarsetest algoritmidest. Masinõppe kohta saame lisateavet eelseisvatest andmeteaduse algoritmide ajaveebidest.

Edasi saate jätkata Apache Sparki õppimist Sparki õpetuse, Sparki voogesituse õpetuse abilja Spark Intervjuu küsimused.Edureka on pühendunud võimalikult hea õppekogemuse pakkumisele veebis.

Vaadake meie i Kui soovite õppida Sparki ja luua karjääri Sparki valdkonnas ning koguda asjatundlikkust laiaulatusliku andmetöötluse teostamiseks, kasutades RDD, Spark Streaming, SparkSQL, MLlib, GraphX ​​ja Scala reaalses elus.