Spark MLlib - knjižnica strojnega učenja Apache Spark



Ta spletni dnevnik Spark MLlib vam bo predstavil knjižnico strojnega učenja Apache Spark. Vključuje projekt sistema za priporočanje filmov z uporabo Spark MLlib.

Spark MLlib je komponenta strojnega učenja Apache Spark.Ena glavnih atrakcij Sparka je sposobnost obsežnega prilagajanja računanja in ravno to potrebujete za algoritme strojnega učenja. Toda omejitev je v tem, da vseh algoritmov strojnega učenja ni mogoče učinkovito vzporediti. Vsak algoritem ima svoje izzive za paralelizacijo, ne glede na to, ali gre za paralelizem nalog ali paralelizem podatkov.

Ob tem Spark postaja dejanska platforma za izdelavo algoritmov in aplikacij strojnega učenja.No, lahko si ogledate pred nadaljevanjem spletnega dnevnika pripravili strokovnjaki iz industrije.Razvijalci, ki delajo na Spark MLlib, v okviru Spark izvajajo vedno več strojnih algoritmov na prilagodljiv in jedrnat način. Preko tega spletnega dnevnika bomo spoznali koncepte strojnega učenja, Spark MLlib, njegove pripomočke, algoritme in celoten primer uporabe sistema za priporočanje filmov.





V tem blogu bodo obravnavane naslednje teme:

  1. Kaj je strojno učenje?
  2. Pregled Spark MLlib
  3. Spark MLlib Tools
  4. MLlib algoritmi
  5. Primer uporabe - sistem priporočil za filme

Kaj je strojno učenje?

Strojno učenje, razvito iz preučevanja prepoznavanja vzorcev in teorije računalniškega učenja v umetni inteligenci, raziskuje preučevanje in konstruiranje algoritmov, ki se lahko učijo iz podatkov in predvidevajo podatke - takšni algoritmi premagajo sledenje strogo statičnim programskim navodilom z napovedmi ali odločitvami na podlagi podatkov z gradnjo modela iz vzorčnih vložkov.



Strojno učenje - Spark MLlib - Edureka Slika: Orodja za strojno učenje

Strojno učenje je tesno povezano z računsko statistiko, ki se osredotoča tudi na predvidevanje z uporabo računalnikov. Močno je povezan z matematično optimizacijo, ki na področje dostavlja metode, teorijo in področja uporabe. Na področju podatkovne analitike je strojno učenje metoda, ki se uporablja za oblikovanje kompleksnih modelov in algoritmov, ki omogočajo napovedovanje, ki je v komercialni uporabi znano kot napovedna analitika.

Obstajajo tri kategorije nalog strojnega učenja:



  1. Nadzorovano učenje : Nadzorovano učenje je, če imate vhodne spremenljivke (x) in izhodno spremenljivko (Y) in uporabljate algoritem za učenje funkcije preslikave od vhoda do izhoda.
  2. Nenadzorovano učenje : Nenadzorovano učenje je vrsta algoritma strojnega učenja, ki se uporablja za sklepanje iz naborov podatkov, sestavljenih iz vhodnih podatkov, brez označenih odzivov.
  3. Okrepitveno učenje : Računalniški program komunicira z dinamičnim okoljem, v katerem mora izpolniti določen cilj (na primer vožnja vozila ali igranje tekme proti nasprotniku). Program med povratnim navigacijo po svojem problematičnem prostoru dobi povratne informacije glede nagrad in kazni.Ta koncept se imenuje učenje okrepitve.

Pregled Spark MLlib

Spark MLlib se uporablja za strojno učenje v Apache Spark. MLlib je sestavljen iz priljubljenih algoritmov in pripomočkov.

Pregled MLlib:

  • iskra.mllib vsebuje originalni API, zgrajen na vrhu RDD-jev. Trenutno je v načinu vzdrževanja.
  • iskra.ml ponuja API na višji ravni, zgrajen na vrhu DataFrames zagradnja cevovodov ML. iskra.ml je trenutno primarni API za strojno učenje za Spark.

Spark MLlib Tools

Spark MLlib ponuja naslednja orodja:

  • ML algoritmi: ML algoritmi tvorijo jedro MLlib. Sem spadajo običajni algoritmi učenja, kot so klasifikacija, regresija, združevanje v skupine in filtriranje v sodelovanju.
  • Opis: Funkcionalizacija vključuje ekstrakcijo, transformacijo, zmanjšanje dimenzij in izbiro lastnosti.
  • Cevovodi: Cevovodi ponujajo orodja za konstruiranje, ocenjevanje in uravnavanje ML cevovodov.
  • Vztrajnost: Vztrajnost pomaga pri shranjevanju in nalaganju algoritmov, modelov in cevovodov.
  • Pripomočki: Pripomočkiza linearno algebro, statistiko in obdelavo podatkov.

MLlib algoritmi

Priljubljeni algoritmi in pripomočki v programu Spark MLlib so:

  1. Osnovne statistike
  2. Regresija
  3. Razvrstitev
  4. Sistem priporočil
  5. Grozdanje
  6. Zmanjšanje dimenzij
  7. Izvleček funkcije
  8. Optimizacija

Oglejmo si nekatere od njih podrobno.

Osnovne statistike

Osnovne statistike vključuje najosnovnejše tehnike strojnega učenja. Tej vključujejo:

  1. Povzetek statistike : Primeri vključujejo povprečje, varianco, štetje, največ, min in številoNonZeros.
  2. Korelacije : Spearman in Pearson je nekaj načinov za iskanje korelacije.
  3. Stratificirano vzorčenje : Sem spadajo sampleBykey in sampleByKeyExact.
  4. Preizkušanje hipotez : Pearsonov test hi-kvadrat je primer preverjanja hipotez.
  5. Naključno ustvarjanje podatkov : RandomRDD, Normal in Poisson se uporabljajo za ustvarjanje naključnih podatkov.

Regresija

Regresija analiza je statistični postopek za ocenjevanje razmerij med spremenljivkami. Vključuje številne tehnike za modeliranje in analizo več spremenljivk, kadar je poudarek na razmerju med odvisno spremenljivko in eno ali več neodvisnimi spremenljivkami. Natančneje, regresijska analiza pomaga razumeti, kako se tipična vrednost odvisne spremenljivke spreminja, kadar se katera od neodvisnih spremenljivk spreminja, medtem ko so druge neodvisne spremenljivke fiksne.

Regresijska analiza se pogosto uporablja za napovedovanje in napovedovanje, kjer se njena uporaba znatno prekriva s področjem strojnega učenja. Regresijska analiza se uporablja tudi za razumevanje, katere neodvisne spremenljivke so povezane z odvisno spremenljivko, in za raziskovanje oblik teh razmerij. V omejenih okoliščinah lahko z regresijsko analizo sklepamo na vzročne zveze med neodvisno in odvisno spremenljivko.

Razvrstitev

Razvrstitev je problem prepoznavanja, kateri od nabora kategorij (podskupin) pripada novo opazovanje, na podlagi niza podatkov, ki vsebujejo opažanja (ali primere), katerih pripadnost kategoriji je znana. Je primer prepoznavanja vzorcev.

Tu bi bil primer dodelitev določenega e-poštnega naslova v razrede »neželene pošte« ali »neželena pošta« ali določitev diagnoze določenemu bolniku, kot je opisano z opaženimi značilnostmi bolnika (spol, krvni tlak, prisotnost ali odsotnost nekaterih simptomov, itd.).

Sistem priporočil

TO sistem priporočil je podrazred sistema za filtriranje informacij, ki skuša napovedati 'oceno' ali 'prednost', ki bi jo uporabnik dal elementu. Sistemi priporočil postajajo v zadnjih letih vse bolj priljubljeni in se uporabljajo na različnih področjih, vključno s filmi, glasbo, novicami, knjigami, raziskovalnimi članki, iskalnimi poizvedbami, socialnimi oznakami in izdelki na splošno.

Sistemi priporočil običajno pripravijo seznam priporočil na enega od dveh načinov - s sodelovalnim in vsebinskim filtriranjem ali z osebnostnim pristopom.

  1. Sodelujoče filtriranje pristopi k oblikovanju modela na podlagi uporabnikovega preteklega vedenja (pred tem kupljeni ali izbrani predmeti in / ali številčne ocene, ki jih prejmejo ti predmeti) ter podobnih odločitev drugih uporabnikov. Ta model se nato uporablja za napovedovanje elementov (ali ocen elementov), ​​ki jih uporabnik morda zanima.
  2. Vsebinsko filtriranje pristopi uporabljajo vrsto ločenih značilnosti predmeta, da priporočijo dodatne elemente s podobnimi lastnostmi.

Poleg tega se ti pristopi pogosto kombinirajo kot sistemi hibridnih priporočil.

Grozdanje

Grozdanje je naloga združevanja nabora predmetov na način, da so predmeti v isti skupini (imenovani grozd) bolj podobni (v nekem ali drugem smislu) drug drugemu kot tistim v drugih skupinah (grozdih). To je torej glavna naloga raziskovalnega rudarjenja podatkov in skupna tehnika za statistično analizo podatkov, ki se uporablja na številnih področjih, vključno s strojnim učenjem, prepoznavanjem vzorcev, analizo slik, iskanjem informacij, bioinformatiko, stiskanjem podatkov in računalniško grafiko.

Zmanjšanje dimenzij

Zmanjšanje dimenzij je postopek zmanjšanja števila obravnavanih naključnih spremenljivk s pridobivanjem nabora glavnih spremenljivk. Razdelimo ga lahko na izbor funkcij in ekstrakcijo funkcij.

  1. Izbira funkcije: Izbira funkcije najde podmnožico prvotnih spremenljivk (imenovanih tudi lastnosti ali atributi).
  2. Izvleček funkcije: To pretvori podatke v visokodimenzionalnem prostoru v prostor manj dimenzij. Preoblikovanje podatkov je lahko linearno, tako kot pri analizi glavnih komponent (PCA), vendar obstajajo tudi številne tehnike za zmanjševanje nelinearne dimenzionalnosti.

Izvleček funkcije

Izvleček funkcije izhaja iz začetnega nabora izmerjenih podatkov in gradi izpeljane vrednosti (značilnosti), ki naj bi bile informativne in nepotrebne, kar olajša nadaljnje korake učenja in posploševanja ter v nekaterih primerih vodi do boljših človeških interpretacij. To je povezano z zmanjšanjem dimenzionalnosti.

Optimizacija

Optimizacija je izbor najboljšihelement (glede na določeno merilo) iz nekaterih sklopov razpoložljivih alternativ.

V najpreprostejšem primeru je optimizacijski problem maksimiranje ali minimiziranje realne funkcije s sistematičnim izbiranjem vhodnih vrednosti znotraj dovoljenega nabora in izračunavanjem vrednosti funkcije. Posplošitev teorije in tehnik optimizacije na druge formulacije obsega veliko področje uporabne matematike. Na splošno optimizacija vključuje iskanje 'najboljših razpoložljivih' vrednosti neke ciljne funkcije glede na določeno domeno (ali vhod),vključno z različnimi vrstami objektivnih funkcij in različnimi vrstami domen.

Primer uporabe - sistem priporočil za filme

Izjava o težavi: Zgraditi sistem priporočanja filmov, ki priporoča filme na podlagi uporabnikovih želja z uporabo Apache Spark.

Naše zahteve:

Torej, ocenimo zahteve za izdelavo našega sistema priporočanja filmov:

  1. Obdelajte ogromno podatkov
  2. Vnos iz več virov
  3. Enostaven za uporabo
  4. Hitra obdelava

Kot lahko ocenimoZa naše potrebe potrebujemo najboljše orodje za velike podatke za obdelavo velikih podatkov v kratkem času. Zato, Apache Spark je popolno orodje za izvajanje našega sistema za priporočanje filmov.

Poglejmo si diagram poteka našega sistema.

Kot lahko vidimo, v nadaljevanju uporabljamo pretakanje iz pretočnega iskanja Spark. Lahko predvajamo v realnem času ali beremo podatke iz Hadoop HDFS.

Pridobivanje nabora podatkov:

Za naš sistem priporočanja filmov lahko uporabniške ocene dobimo na številnih priljubljenih spletnih mestih, kot so IMDB, Rotten Tomatoes in Times Movie Ratings. Ta nabor podatkov je na voljo v številnih oblikah, kot so datoteke CSV, besedilne datoteke adruge baze podatkov. Podatke lahko neposredno predvajamo s spletnih strani ali jih prenesemo in shranimonaš lokalni datotečni sistem ali HDFS.

Nabor podatkov:

Spodnja slika prikazuje, kako lahko zbiramo nabor podatkov s priljubljenih spletnih mest.

Ko podatke pretočimo v Spark, je videti nekako takole.

Strojno učenje:

Celoten sistem priporočil temelji na algoritmu strojnega učenja Izmenični najmanjši kvadratki . Tu je ALS vrsta regresijske analize, pri kateri se z regresijo nariše črta med podatkovnimi točkami na tak način, da je vsota kvadratov razdalje od posamezne podatkovne točke čim manjša. Tako se ta vrstica nato uporablja za napovedovanje vrednosti funkcije, kjer ustreza vrednosti neodvisne spremenljivke.

Modra črta na diagramu je najbolj primerna regresijska črta. V tej vrstici je vrednost dimenzije D najmanjša. Vse ostale rdeče črte bodo vedno oddaljene od nabora podatkov kot celote.

Izvedba Spark MLlib:

  1. S pomočjo sodelovalnega filtriranja (CF) bomo predvideli ocene uporabnikov za določene filme na podlagi njihovih ocen za druge filme.
  2. Nato to sodelujemo z oceno drugih uporabnikov za ta film.
  3. Da bi dobili naslednje rezultate iz našega strojnega učenja, moramo uporabiti DataFrame, Dataset in SQL Service Spark SQL.

Tu je psevdo koda za naš program:

import org.apache.spark.mllib.recommendation.ALS import org.apache.spark.mllib.recommendation.Rating rejting import org.apache.spark.SparkConf // Uvoz drugih potrebnih paketov 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 ('* Branje podatkov iz datoteke CSV filma * ') //rawData.first () val rawRatings = rawData.map (* Razdeli rawData na ločevalniku zavihka *) val rating = rawRatings.map {* Primer zemljevida uporabnikov, filmov in ocen *} // Usposabljanje za podatkovni model val = ALS.train (ocene, 50, 5, 0,01) model.userFeatures model.userFeatures.count model.productFeatures.count val predvidenoRating = * Predvidevanje za uporabnika 789 za film 123 * val userId = * Uporabnik 789 * val K = 10 val topKRecs = model.reкоменndProducts (* Priporočite uporabniku za določeno vrednost K *) println (topKRecs.mkString ('')) val movies = sc.textFile ('* Preberi podatke s seznama filmov *') val title = movies.map (vrstica => line.split ('|'). take ( 2)). Map (array => (array (0) .toInt, array (1))). CollectAsMap () val nasloviRDD = movies.map (line => line.split ('|'). Take (2) ) .map (array => (array (0) .toInt, array (1))). cache () naslovi (123) val moviesForUser = ratings. * Iskanje uporabnika 789 * val sqlContext = * Ustvari kontekst SQL * filmi val Priporočeno = sqlContext. * Naredite DataFrame priporočenih filmov * moviesRecommended.registerTempTable ('moviesRecommendedTable') sqlContext.sql ('Izberite število (*) iz moviesRecommendedTable'). foreach (println) filmiForUser. * Razvrstite ocene za uporabnika 789 * .map (* Oceno preslikajte na naslov filma *). * Natisnite oceno * val rezultati = moviesForUser.sortBy (-_. Rating) .take (30) .map (rating => (naslovi (rating.product), rating.rating))}}

Ko ustvarimo napovedi, lahko s pomočjo Spark SQL shranimo rezultate v sistem RDBMS. Poleg tega je to mogoče prikazati v spletni aplikaciji.

Rezultati:

Slika: Filmi, priporočeni za uporabnika 77

Hura! Tako smo z uporabo Apache Spark uspešno ustvarili sistem priporočanja filmov. S tem smo pokrili le enega izmed mnogih priljubljenih algoritmov, ki jih ponuja Spark MLlib. Več o strojnem učenju bomo izvedeli v prihajajočih blogih o algoritmih Data Science Algorithms.

c ++ operater obsega

V prihodnosti lahko nadaljujete z učenjem Apache Spark z Vadnico za Spark, Vadnico za pretakanje Spark, in Spark Intervju vprašanja.Edureka je namenjena zagotavljanju najboljše možne učne izkušnje na spletu.

Oglejte si našo jaz če se želite naučiti Sparka in si ustvariti kariero na področju Sparka ter pridobiti strokovno znanje za izvajanje obsežne obdelave podatkov z uporabo RDD, Spark Streaming, SparkSQL, MLlib, GraphX ​​in Scala z dejanskimi primeri uporabe.