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

Ovaj blog Spark MLlib upoznat će vas s bibliotekom strojnog učenja tvrtke Apache Spark. Uključuje projekt sustava za preporuku filmova koji koristi Spark MLlib.

Iskra MLlib je komponenta strojnog učenja tvrtke Apache Spark.Jedna od glavnih atrakcija Sparka je sposobnost masivnog skaliranja računanja, a to je upravo ono što trebate za algoritme strojnog učenja. Ali ograničenje je u tome što se svi algoritmi strojnog učenja ne mogu učinkovito paralelizirati. Svaki algoritam ima svoje izazove za paralelizaciju, bilo da se radi o paralelizmu zadataka ili paralelizmu podataka.

Nakon toga Spark postaje de facto platforma za izgradnju algoritama i aplikacija strojnog učenja.Pa, možete provjeriti koje su kustosi stručnjaci iz industrije prije nego što nastave s blogom.Programeri koji rade na Spark MLlib implementiraju sve više i više algoritama strojeva na skalabilan i sažet način u okviru Spark. Kroz ovaj blog naučit ćemo koncepte Strojnog učenja, Spark MLlib, njegove uslužne programe, algoritme i cjelovit slučaj upotrebe sustava za preporuke filmova.





Na ovom blogu bit će obrađene sljedeće teme:

  1. Što je strojno učenje?
  2. Pregled Spark MLliba
  3. Spark MLlib alati
  4. MLlib algoritmi
  5. Slučaj upotrebe - sustav preporuke za filmove

Što je strojno učenje?

Razvijeno iz proučavanja prepoznavanja uzoraka i teorije računalnog učenja u umjetnoj inteligenciji, strojno učenje istražuje proučavanje i konstrukciju algoritama iz kojih se može učiti i predviđati podatke - takvi algoritmi prevladavaju slijedeći strogo statične programske upute donošenjem predviđanja ili odluka na temelju podataka , kroz izgradnju modela iz uzoraka uzoraka.



Strojno učenje - Spark MLlib - Edureka Lik: Alati za strojno učenje

Strojno učenje usko je povezano s računalnom statistikom, koja se također usredotočuje na predviđanje korištenjem računala. Snažno je povezan s matematičkom optimizacijom, koja na područje donosi domene metoda, teorije i primjene. U području analitike podataka, strojno učenje metoda je koja se koristi za osmišljavanje složenih modela i algoritama koji se podvrgavaju predviđanju koje je u komercijalnoj uporabi poznato kao prediktivna analitika.

Postoje tri kategorije zadataka strojnog učenja:



  1. Nadzirano učenje : Nadzirano učenje je mjesto gdje imate ulazne varijable (x) i izlaznu varijablu (Y) i koristite algoritam za učenje funkcije preslikavanja od ulaza do izlaza.
  2. Učenje bez nadzora : Nenadzirano učenje vrsta je algoritma strojnog učenja koja se koristi za izvlačenje zaključaka iz skupova podataka koji se sastoje od ulaznih podataka bez označenih odgovora.
  3. Učenje s pojačanjem : Računalni program komunicira s dinamičnim okruženjem u kojem mora postići određeni cilj (poput vožnje vozila ili igranja igre protiv protivnika). Program pruža povratne informacije u pogledu nagrada i kazni dok se kreće kroz svoj problematični prostor.Taj se koncept naziva učvršćivanjem.

Pregled Spark MLliba

Spark MLlib koristi se za izvođenje strojnog učenja u Apache Sparku. MLlib se sastoji od popularnih algoritama i uslužnih programa.

Pregled MLliba:

  • iskra.mllib sadrži originalni API izgrađen na vrhu RDD-ova. Trenutno je u načinu održavanja.
  • iskra.ml pruža API više razine izgrađen na vrhu DataFrames zaizgradnja ML cjevovoda. iskra.ml trenutno je primarni API za strojno učenje za Spark.

Spark MLlib alati

Spark MLlib nudi sljedeće alate:

  • ML algoritmi: ML algoritmi čine srž MLliba. Uključuju uobičajene algoritme učenja kao što su klasifikacija, regresija, grupiranje i zajedničko filtriranje.
  • Osobina: Karakterizacija uključuje ekstrakciju, transformaciju, smanjenje dimenzija i odabir značajki.
  • Cjevovodi: Cjevovodi pružaju alate za konstrukciju, procjenu i podešavanje ML cjevovoda.
  • Upornost: Postojanost pomaže u spremanju i učitavanju algoritama, modela i cjevovoda.
  • Komunalije: Komunalijeza linearnu algebru, statistiku i rukovanje podacima.

MLlib algoritmi

Popularni algoritmi i uslužni programi u Spark MLlib su:

  1. Osnovne statistike
  2. Regresija
  3. Klasifikacija
  4. Sustav preporuka
  5. Skupljanje
  6. Smanjenje dimenzija
  7. Izdvajanje značajke
  8. Optimizacija

Pogledajmo neke od njih detaljno.

Osnovne statistike

Osnovne statistike uključuje najosnovnije tehnike strojnog učenja. To uključuje:

  1. Sažetak statistike : Primjeri uključuju srednju vrijednost, varijancu, brojanje, maksimum, min i numNonZeros.
  2. Korelacije : Spearman i Pearson su neki od načina za pronalaženje korelacije.
  3. Slojevito uzorkovanje : Uključuju sampleBykey i sampleByKeyExact.
  4. Testiranje hipoteze : Pearsonov test hi-kvadrata primjer je provjere hipoteza.
  5. Stvaranje slučajnih podataka : RandomRDD, Normal i Poisson koriste se za generiranje slučajnih podataka.

Regresija

Regresija analiza je statistički postupak za procjenu odnosa među varijablama. Uključuje mnoge tehnike za modeliranje i analizu nekoliko varijabli kada je fokus na odnosu između ovisne varijable i jedne ili više neovisnih varijabli. Preciznije, regresijska analiza pomaže razumjeti kako se tipična vrijednost ovisne varijable mijenja kada se mijenja bilo koja od neovisnih varijabli, dok se ostale neovisne varijable drže fiksnima.

Regresijska analiza široko se koristi za predviđanje i predviđanje, gdje se njezina upotreba značajno preklapa sa područjem strojnog učenja. Regresijska analiza koristi se i za razumijevanje koje su od neovisnih varijabli povezane sa zavisnom varijablom i za istraživanje oblika tih odnosa. U ograničenim okolnostima, regresijska analiza može se koristiti za zaključivanje o uzročnim vezama između neovisnih i ovisnih varijabli.

Klasifikacija

Klasifikacija je problem identificiranja kojoj skupini skupova (podskupina) pripada novo opažanje, na temelju skupa podataka koji sadrže opažanja (ili slučajeve) čije je članstvo u kategoriji poznato. To je primjer prepoznavanja uzoraka.

Ovdje bi primjer bio dodjeljivanje dane e-pošte u klase 'neželjene pošte' ili 'neželjene pošte' ili dodjeljivanje dijagnoze određenom pacijentu kako je opisano promatranim karakteristikama pacijenta (spol, krvni tlak, prisutnost ili odsutnost određenih simptoma, itd.).

Sustav preporuka

DO sustav preporuka je podrazred sustava za filtriranje informacija koji pokušava predvidjeti „ocjenu“ ili „preferenciju“ koju bi korisnik dao stavci. Sustavi preporuka postaju sve popularniji posljednjih godina i koriste se u raznim područjima, uključujući filmove, glazbu, vijesti, knjige, istraživačke članke, upite za pretraživanje, društvene oznake i proizvode općenito.

Sustavi preporučivača obično daju popis preporuka na jedan od dva načina - kroz suradničko filtriranje i filtriranje na temelju sadržaja ili pristup zasnovan na osobnosti.

  1. Suradničko filtriranje pristupa izradi modela na temelju korisnikova prošloga ponašanja (stavke koje su prethodno kupljene ili odabrane i / ili numeričke ocjene tim stavkama), kao i sličnih odluka koje su donijeli drugi korisnici. Ovaj se model zatim koristi za predviđanje stavki (ili ocjena za stavke) koje bi korisnika mogle zanimati.
  2. Filtriranje na temelju sadržaja pristupi koriste niz diskretnih karakteristika predmeta kako bi se preporučili dodatni elementi sa sličnim svojstvima.

Nadalje, ovi se pristupi često kombiniraju kao sustavi hibridnih preporuka.

Skupljanje

Skupljanje je zadatak grupiranja skupa objekata na takav način da su objekti u istoj grupi (koja se naziva klaster) sličniji (u nekom ili drugom smislu) jedni drugima nego onima u drugim skupinama (klasterima). Dakle, to je glavni zadatak istraživačkog rudarstva podataka i uobičajena tehnika za statističku analizu podataka, koja se koristi u mnogim poljima, uključujući strojno učenje, prepoznavanje uzoraka, analizu slike, pronalaženje informacija, bioinformatiku, kompresiju podataka i računalnu grafiku.

Smanjenje dimenzija

Smanjenje dimenzija je postupak smanjenja broja slučajnih varijabli koje se razmatraju dobivanjem skupa glavnih varijabli. Može se podijeliti na odabir značajke i izdvajanje značajki.

  1. Odabir značajke: Odabir značajke pronalazi podskup izvornih varijabli (koje se također nazivaju značajke ili atributi).
  2. Izdvajanje značajke: To transformira podatke u visokodimenzionalnom prostoru u prostor manje dimenzija. Transformacija podataka može biti linearna, kao u Analizi glavnih komponenata (PCA), ali postoje i mnoge tehnike smanjenja nelinearne dimenzionalnosti.

Izdvajanje značajke

Izdvajanje značajke polazi od početnog skupa izmjerenih podataka i gradi izvedene vrijednosti (značajke) namijenjene da budu informativne i ne-suvišne, olakšavajući naredne korake učenja i generalizacije, a u nekim slučajevima vodeći ka boljim ljudskim interpretacijama. To je povezano sa smanjenjem dimenzionalnosti.

Optimizacija

Optimizacija je izbor najboljegelement (s obzirom na neki kriterij) iz nekog skupa dostupnih alternativa.

U najjednostavnijem slučaju, problem optimizacije sastoji se od maksimiziranja ili minimiziranja stvarne funkcije sustavnim odabirom ulaznih vrijednosti unutar dopuštenog skupa i izračunavanjem vrijednosti funkcije. Generalizacija teorije i tehnika optimizacije na druge formulacije obuhvaća veliko područje primijenjene matematike. Općenito, optimizacija uključuje pronalaženje 'najbolje dostupnih' vrijednosti neke ciljne funkcije s obzirom na definiranu domenu (ili ulaz),uključujući niz različitih vrsta objektivnih funkcija i različitih vrsta domena.

Slučaj upotrebe - sustav preporuke za filmove

Izjava o problemu: Izgraditi sustav za preporuku filmova koji preporučuje filmove na temelju korisnikovih preferencija pomoću Apache Sparka.

Naši zahtjevi:

Dakle, procijenimo zahtjeve za izgradnju našeg sustava za preporuku filmova:

  1. Obradite ogromnu količinu podataka
  2. Ulaz iz više izvora
  3. Jednostavan za korištenje
  4. Brza obrada

Kao što možemo procijenitiza naše zahtjeve potreban nam je najbolji alat za velike podatke za obradu velikih podataka u kratkom vremenu. Stoga, Apache Spark savršen je alat za implementaciju našeg sustava za preporuku filmova.

Pogledajmo sada dijagram toka za naš sustav.

Kao što vidimo, sljedeće koristi Streaming iz Spark Streaminga. Možemo strujati u stvarnom vremenu ili čitati podatke s Hadoop HDFS-a.

Dobivanje skupa podataka:

Za naš sustav za preporuku filmova možemo dobiti ocjene korisnika s mnogih popularnih web stranica kao što su IMDB, Rotten Tomatoes i Times Movie Ratings. Ovaj skup podataka dostupan je u mnogim formatima kao što su CSV datoteke, tekstualne datoteke and baze podataka. Podatke možemo prenositi uživo s web stranica ili ih preuzeti i pohranitinaš lokalni datotečni sustav ili HDFS.

Skup podataka:

Sljedeća slika prikazuje kako možemo prikupiti skup podataka s popularnih web stranica.

Jednom kad podatke pretočimo u Spark, to izgleda nekako ovako.

Strojno učenje:

Cijeli sustav preporuka temelji se na algoritmu strojnog učenja Naizmjenično najmanje kvadrata . Ovdje je ALS vrsta regresijske analize gdje se regresija koristi za crtanje crte između podatkovnih točaka na takav način da je zbroj kvadrata udaljenosti od svake podatkovne točke minimaliziran. Tako se ovaj redak zatim koristi za predviđanje vrijednosti funkcije tamo gdje zadovoljava vrijednost neovisne varijable.

java niz objekata primjer

Plava crta na dijagramu najbolje odgovara regresijskoj liniji. Za ovu liniju vrijednost dimenzije D je minimalna. Sve ostale crvene linije uvijek će biti dalje od skupa podataka u cjelini.

Implementacija Spark MLliba:

  1. Koristit ćemo suradničko filtriranje (CF) za predviđanje ocjena korisnika za određene filmove na temelju njihovih ocjena za druge filmove.
  2. Zatim to surađujemo s ocjenom drugih korisnika za taj film.
  3. Da bismo dobili sljedeće rezultate iz našeg strojnog učenja, moramo koristiti Spark SQL-ov DataFrame, Dataset i SQL Service.

Evo pseudo koda za naš program:

import org.apache.spark.mllib.recommendation.ALS import org.apache.spark.mllib.recommendation.Cating import org.apache.spark.SparkConf // Uvoz ostalih potrebnih paketa objekt Film {def main (args: Array [String] ) {val conf = new SparkConf (). setAppName ('Movie'). setMaster ('local [2]') val sc = new SparkContext (conf) val rawData = sc.textFile ('* Čitanje podataka iz CSV datoteke filma * ') //rawData.first () val rawRatings = rawData.map (* Podijeli rawData na graničniku kartice *) val ratings = rawRatings.map {* Mapa slučaja niza User, Movie and Rating *} // Obuka modela podataka val = ALS.train (ocjene, 50, 5, 0,01) model.userFeatures model.userFeatures.count model.productFeatures.count val predvitedRating = * Predviđanje za korisnika 789 za film 123 * val userId = * Korisnik 789 * val K = 10 val topKRecs = model.recommendProducts (* Preporučiti za korisnika za određenu vrijednost K *) println (topKRecs.mkString ('')) val movies = sc.textFile ('* Čitanje podataka s popisa filmova *') val title = movies.map (linija => line.split ('|'). take ( 2)). Map (array => (array (0) .toInt, array (1))). CollectAsMap () val titleRDD = movies.map (line => line.split ('|'). Take (2) ) .map (niz => (niz (0) .toInt, niz (1))). cache () naslovi (123) val filmoviForUser = ocjene. * Potražite korisnika 789 * val sqlContext = * Stvorite SQL kontekst * val filmoviPreporučuje se = sqlContext. * Napravite DataFrame od preporučenih filmova * moviesRecommended.registerTempTable ('moviesRecommendedTable') sqlContext.sql ('Odaberite broj (*) iz moviesRecommendedTable'). foreach (println) filmovi zaKorisnika. * Razvrstajte ocjene za korisnika 789 * .map (* Usporedite ocjenu s naslovom filma *). * Ispišite ocjenu * val rezultati = moviesForUser.sortBy (-_. Rating) .take (30) .map (rating => (naslovi (rating.product), rating.rating))}}

Jednom kada generiramo predviđanja, možemo koristiti Spark SQL za pohranu rezultata u RDBMS sustav. Nadalje, ovo se može prikazati na web aplikaciji.

Rezultati:

Lik: Filmovi preporučeni za korisnika 77

Ura! Stoga smo uspješno stvorili sustav za preporuku filmova koristeći Apache Spark. Ovim smo pokrili samo jedan od mnogih popularnih algoritama koje Spark MLlib nudi. O strojnom učenju saznat ćemo na nadolazećim blogovima o algoritmima Data Science.

Dalje napredujući, možete nastaviti učiti Apache Spark s vodičem za Spark, Spark Streaming Tutorial, i Spark pitanja za intervju.Edureka je posvećena pružanju najboljeg mogućeg iskustva učenja na mreži.

Pogledajte naše ja ako želite naučiti Spark i izgraditi karijeru u domeni Sparka i izgraditi stručnost za obavljanje velike obrade podataka koristeći RDD, Spark Streaming, SparkSQL, MLlib, GraphX ​​i Scala sa stvarnim životnim slučajevima.