„Spark MLlib“ - mašininio mokymosi „Apache Spark“ biblioteka



Šis „Spark MLlib“ tinklaraštis supažindins jus su „Apache Spark“ mašininio mokymosi biblioteka. Tai apima filmų rekomendacijų sistemos projektą, kuriame naudojama „Spark MLlib“.

„Spark MLlib“ yra „Apache Spark“ mašininio mokymosi komponentas.Viena pagrindinių „Spark“ atrakcijų yra galimybė masiškai apskaičiuoti skaičiavimus, ir tai yra būtent tai, ko jums reikia mašininio mokymosi algoritmams. Tačiau apribojimas yra tas, kad visų mašininio mokymosi algoritmų negalima veiksmingai lygiagrečiai suderinti. Kiekvienas algoritmas turi savo lygiagretumo iššūkius, nesvarbu, ar tai būtų užduočių lygiagretumas, ar duomenų lygiagretumas.

Tai pasakius, „Spark“ tampa de facto mašininio mokymosi algoritmų ir programų kūrimo platforma.Na, galite patikrinti prieš kuriant tinklaraštį, kuravo pramonės ekspertai.Kūrėjai, dirbantys „Spark MLlib“, vis daugiau ir daugiau mašinų algoritmų keičiamai ir glaustai įgyvendina „Spark“ sistemoje. Šiame tinklaraštyje sužinosime mašininio mokymosi, „Spark MLlib“ sąvokas, jos komunalines paslaugas, algoritmus ir visišką filmų rekomendavimo sistemos naudojimo atvejį.



Šiame tinklaraštyje bus aptariamos šios temos:

  1. Kas yra mašininis mokymasis?
  2. „Spark MLlib“ apžvalga
  3. „Spark MLlib Tools“
  4. „MLlib“ algoritmai
  5. Naudokite atvejį - filmo rekomendavimo sistemą

Kas yra mašininis mokymasis?

Iš dirbtinio intelekto modelio atpažinimo ir skaičiavimo mokymosi teorijos tyrimo mašinomis mokomasi tirti ir konstruoti algoritmus, kurie gali mokytis iš duomenų ir prognozuoti juos - tokie algoritmai įveikiami laikantis griežtų statinių programos nurodymų, priimant duomenimis pagrįstas prognozes ar sprendimus , kuriant modelį iš imties įvesties.



Mašinų mokymasis - „Spark MLlib“ - „Edureka“ Paveikslėlis: Mašinų mokymosi priemonės

Mašinų mokymasis yra glaudžiai susijęs su skaičiavimo statistika, kuri taip pat orientuota į prognozių sudarymą naudojant kompiuterius. Jis turi tvirtą ryšį su matematiniu optimizavimu, kuris pateikia metodus, teoriją ir taikymo sritis laukui. Duomenų analizės srityje mašininis mokymasis yra metodas, naudojamas kuriant sudėtingus modelius ir algoritmus, kurie tinka prognozavimui, kuris komerciniame naudojime yra žinomas kaip nuspėjamoji analizė.

Yra trys mašininio mokymosi užduočių kategorijos:



  1. Vadovaujamasi mokymuisi : Prižiūrimas mokymasis yra tas, kuriame turite įvesties kintamuosius (x) ir išvesties kintamuosius (Y), o jūs naudojate algoritmą, kad išmoktumėte susiejimo funkciją nuo įvesties iki išvesties.
  2. Neprižiūrimas mokymasis : Neprižiūrimas mokymasis yra mašininio mokymosi algoritmo tipas, naudojamas išvadoms iš duomenų rinkinių, susidedančių iš įvesties duomenų be paženklintų atsakymų, daryti.
  3. Sustiprinimo mokymasis : Kompiuterio programa sąveikauja su dinamiška aplinka, kurioje ji turi atlikti tam tikrą tikslą (pvz., Vairuoti transporto priemonę ar žaisti žaidimą prieš varžovą). Programai pateikiamas atsiliepimas apie atlygius ir bausmes, kai ji naršo savo probleminėje erdvėje.Ši sąvoka vadinama mokymu sustiprinti.

„Spark MLlib“ apžvalga

„Spark MLlib“ naudojamas mašininiam mokymuisi atlikti „Apache Spark“. „MLlib“ sudaro populiarūs algoritmai ir komunalinės paslaugos.

„MLlib“ apžvalga:

  • kibirkštis.mllib yra originali API, sukurta ant RDD. Šiuo metu jis veikia palaikymo režimu.
  • kibirkštis.ml teikia aukštesnio lygio API, sukurtą ant „DataFrames“, skirtostiesiant ML vamzdynus. kibirkštis.ml yra pagrindinė „Spark“ mašininio mokymosi API.

„Spark MLlib Tools“

„Spark MLlib“ teikia šias priemones:

  • ML algoritmai: ML algoritmai sudaro MLlib šerdį. Tai apima įprastus mokymosi algoritmus, tokius kaip klasifikavimas, regresija, grupavimas ir filtravimas bendradarbiaujant.
  • Ypatybės: Featurization apima funkcijų išskyrimą, transformavimą, matmenų mažinimą ir pasirinkimą.
  • Vamzdynai: Vamzdynai teikia įrankius ML vamzdynams konstruoti, vertinti ir derinti.
  • Atkaklumas: Atkaklumas padeda išsaugoti ir įkelti algoritmus, modelius ir vamzdynus.
  • Komunalinės paslaugos: Komunalinės paslaugoslinijinei algebrai, statistikai ir duomenų tvarkymui.

„MLlib“ algoritmai

Populiariausi „Spark MLlib“ algoritmai ir komunalinės paslaugos yra šios:

  1. Pagrindinė statistika
  2. Regresija
  3. klasifikacija
  4. Rekomendacijų sistema
  5. Grupavimas
  6. Matmenų mažinimas
  7. Funkcijos ištraukimas
  8. Optimizavimas

Pažvelkime į kai kuriuos iš jų išsamiai.

Pagrindinė statistika

Pagrindinė statistika apima pagrindines mašininio mokymosi technikas. Jie apima:

  1. Santraukos statistika : Pavyzdžiai: vidurkis, dispersija, skaičius, maks., Min. Ir numNonZeros.
  2. Koreliacijos : Spearmanas ir Pearsonas yra keletas būdų rasti koreliaciją.
  3. Stratifikuotas mėginių ėmimas : Tai apima „sampleBykey“ ir „sampleByKeyExact“.
  4. Hipotezės bandymas : Pearsono chi kvadrato testas yra hipotezių tikrinimo pavyzdys.
  5. Atsitiktinių duomenų generavimas : Atsitiktiniams duomenims generuoti naudojami „RandomRDD“, „Normal“ ir „Poisson“.

Regresija

Regresija analizė yra statistinis procesas, skirtas įvertinti santykius tarp kintamųjų. Tai apima daug kelių kintamųjų modeliavimo ir analizės metodų, kai pagrindinis dėmesys skiriamas priklausomo kintamojo ir vieno ar daugiau nepriklausomų kintamųjų santykiui. Konkrečiau, regresijos analizė padeda suprasti, kaip keičiasi tipinė priklausomo kintamojo vertė, kai keičiamas kuris nors vienas iš nepriklausomų kintamųjų, o kiti nepriklausomi kintamieji laikomi fiksuoti.

Regresijos analizė yra plačiai naudojama prognozavimui ir prognozavimui, kai jos naudojimas iš esmės sutampa su mašininio mokymosi sritimi. Regresijos analizė taip pat naudojama norint suprasti, kurie iš nepriklausomų kintamųjų yra susiję su priklausomuoju kintamuoju, ir ištirti šių sąsajų formas. Ribotomis aplinkybėmis regresinė analizė gali būti naudojama siekiant nustatyti priežastinius ryšius tarp nepriklausomų ir priklausomų kintamųjų.

klasifikacija

klasifikacija yra problema nustatyti, kuriai iš kategorijų (pogrupių) rinkinio priklauso naujas stebėjimas, remiantis mokymo rinkiniu, kuriame yra stebėjimų (ar atvejų), kurių narystė kategorijoje yra žinoma. Tai modelio atpažinimo pavyzdys.

Čia pavyzdys gali būti priskirti nurodytą el. Laišką į „šlamšto“ ar „ne šlamšto“ klases arba diagnozės priskyrimą tam tikram pacientui, kaip aprašyta pagal pastebėtas paciento ypatybes (lytis, kraujospūdis, tam tikrų simptomų buvimas ar nebuvimas). ir pan.).

Rekomendacijų sistema

Į rekomendacijų sistema yra informacijos filtravimo sistemos poklasis, kuriuo siekiama numatyti „reitingą“ ar „pirmenybę“, kurį vartotojas suteiks daiktui. Pastaraisiais metais rekomendacinės sistemos tampa vis populiaresnės ir yra naudojamos įvairiose srityse, įskaitant filmus, muziką, naujienas, knygas, mokslinius straipsnius, paieškos užklausas, socialines žymas ir produktus apskritai.

Rekomenduojančios sistemos rekomendacijų sąrašą paprastai rengia vienu iš dviejų būdų - taikydamos bendradarbiavimo ir turinio filtravimą arba asmenybe pagrįstą metodą.

  1. Bendras filtravimas modelio kūrimas grindžiamas ankstesniu vartotojo elgesiu (anksčiau įsigytais ar pasirinktais daiktais ir (arba) skaitiniais įvertinimais, skirtais tiems daiktams), taip pat panašiais kitų vartotojų priimtais sprendimais. Šis modelis naudojamas numatyti elementus (arba daiktų įvertinimus), kuriais vartotojas gali susidomėti.
  2. Turinio filtravimas metodai naudoja daugybę atskirų daikto charakteristikų, norėdami rekomenduoti papildomus panašių savybių daiktus.

Be to, šie metodai dažnai derinami kaip hibridinės rekomendavimo sistemos.

Grupavimas

Grupavimas yra užduotis grupuoti objektų rinkinį taip, kad tos pačios grupės objektai (vadinami klasteriais) būtų panašesni (tam tikra ar kita prasme) vienas į kitą, nei į kitų grupių (grupių) objektus. Taigi tai yra pagrindinis tiriamųjų duomenų gavybos uždavinys ir įprasta statistinių duomenų analizės technika, naudojama daugelyje sričių, įskaitant mašininį mokymąsi, modelių atpažinimą, vaizdų analizę, informacijos paiešką, bioinformatiką, duomenų glaudinimą ir kompiuterinę grafiką.

Matmenų mažinimas

Matmenų mažinimas yra nagrinėjamų atsitiktinių kintamųjų skaičiaus mažinimo procesas, gaunant pagrindinių kintamųjų rinkinį. Ją galima suskirstyti į funkcijų pasirinkimą ir funkcijų išskyrimą.

  1. Funkcijos pasirinkimas: Funkcijos pasirinkimas suranda pirminių kintamųjų pogrupį (dar vadinamą funkcijomis ar atributais).
  2. Funkcijos ištraukimas: Tai transformuoja duomenis aukšto matmens erdvėje į mažiau matmenų erdvę. Duomenų transformacija gali būti linijinė, kaip ir pagrindinių komponentų analizėje (PCA), tačiau egzistuoja ir daugelis netiesinių matmenų mažinimo būdų.

Funkcijos ištraukimas

Funkcijos ištraukimas prasideda nuo pradinio matuojamų duomenų rinkinio ir sukuria išvestines vertes (ypatybes), kurios yra informatyvios ir nereikalingos, palengvindamos tolesnius mokymosi ir apibendrinimo veiksmus, o kai kuriais atvejais padedančios geriau interpretuoti žmones. Tai susiję su matmenų mažinimu.

Optimizavimas

Optimizavimas yra geriausiųjų pasirinkimaselementas (atsižvelgiant į tam tikrą kriterijų) iš kai kurių galimų alternatyvų rinkinio.

Paprasčiausiu atveju optimizavimo problema susideda iš realios funkcijos maksimizavimo arba sumažinimo, sistemingai parenkant įvesties vertes iš leistino rinkinio ir apskaičiuojant funkcijos vertę. Optimizavimo teorijos ir metodų apibendrinimas kitoms formuluotėms apima didelę taikomosios matematikos sritį. Apskritai, optimizavimas apima tam tikrų tikslinių funkcijų „geriausių prieinamų“ verčių paiešką atsižvelgiant į apibrėžtą sritį (arba įvestį),įskaitant įvairias skirtingų tipų objektyvias funkcijas ir skirtingų tipų sritis.

Naudokite atvejį - filmo rekomendavimo sistemą

Problemos pareiškimas: Sukurti filmų rekomendavimo sistemą, kuri rekomenduoja filmus pagal vartotojo pageidavimus naudojant „Apache Spark“.

Mūsų reikalavimai:

Taigi, įvertinkime reikalavimus, kaip sukurti mūsų filmų rekomendacijų sistemą:

  1. Apdorokite didžiulį duomenų kiekį
  2. Įvestis iš kelių šaltinių
  3. Paprasta naudoti
  4. Greitas apdorojimas

Kaip mes galime įvertintiPagal mūsų reikalavimus mums reikia geriausio „Big Data“ įrankio, kad per trumpą laiką apdorotume didelius duomenis. Todėl „Apache Spark“ yra puiki priemonė įgyvendinti mūsų filmų rekomendavimo sistemą.

Dabar pažvelkime į savo sistemos srauto schemą.

Kaip matome, toliau naudojamas srautas iš „Spark Streaming“. Mes galime transliuoti realiuoju laiku arba skaityti duomenis iš „Hadoop HDFS“.

Gaunamas duomenų rinkinys:

Mūsų filmų rekomendavimo sistemai galime gauti naudotojų įvertinimus iš daugelio populiarių svetainių, tokių kaip IMDB, „Rotten Tomatoes“ ir „Times Movie Ratings“. Šį duomenų rinkinį galima įsigyti daugeliu formatų, tokių kaip CSV failai, tekstiniai failai aantrosios duomenų bazės. Mes galime tiesiogiai srautu perduoti duomenis iš svetainių arba juos atsisiųsti ir laikytimūsų vietinė failų sistema arba HDFS.

skirtumas tarp nepaisymo ir perkrovos

Duomenų rinkinys:

Žemiau pateiktame paveikslėlyje parodyta, kaip galime rinkti duomenų rinkinį iš populiarių svetainių.

Kai duomenys bus perduoti į „Spark“, jie atrodo maždaug taip.

Mašininis mokymasis:

Visa rekomendacijų sistema yra paremta mašininio mokymosi algoritmu Kintamos mažiausios aikštės . Čia ALS yra regresijos analizės tipas, kai regresija naudojama nubrėžti liniją tarp duomenų taškų tokiu būdu, kad atstumo nuo kiekvieno duomenų taško kvadratų suma būtų kuo mažesnė. Taigi ši eilutė naudojama numatyti funkcijos reikšmes, kai ji atitinka nepriklausomo kintamojo vertę.

Mėlyna linija diagramoje yra geriausiai tinkanti regresijos linija. Šioje eilutėje matmens D vertė yra mažiausia. Visos kitos raudonos linijos visada bus toliau nuo viso duomenų rinkinio.

„Spark MLlib“ įgyvendinimas:

  1. Norėdami nustatyti konkrečių filmų naudotojų įvertinimus pagal jų kitų filmų reitingus, naudosime bendradarbiavimo filtravimą (CF).
  2. Tada mes bendradarbiaujame su kitų naudotojų įvertinimu pagal tą konkretų filmą.
  3. Norėdami gauti šiuos „Machine Learning“ rezultatus, turime naudoti „Spark SQL DataFrame“, „Dataset“ ir „SQL Service“.

Štai mūsų programos pseudo kodas:

importuoti org.apache.spark.mllib.recommendation.ALS importuoti org.apache.spark.mllib.recommendation.Rating importuoti org.apache.spark.SparkConf // Importuoti kitus reikalingus paketų objektus Filmas {def main (args: Masyvas [String] ) {val conf = new SparkConf (). setAppName ('Movie'). setMaster ('local [2]') val sc = new SparkContext (conf) val rawData = sc.textFile ('* Skaityti duomenis iš filmo CSV failo * ') //rawData.first () val rawRatings = rawData.map (* „Split rawData“ skirtuko ribotuve *) val reitingai = rawRatings.map {* Žemėlapio naudotojo, filmo ir įvertinimo masyvas *} // Duomenų val modelio mokymas = ALS.train (reitingai, 50, 5, 0,01) model.userFeatures model.userFeatures.count model.productFeatures.count val predictedRating = * Prognozuoti 789 vartotojo filmą 123 * val userId = * Vartotojas 789 * val K = 10 val topKRecs = model.recommendProducts (* Rekomenduoti vartotojui konkrečiai K * vertei) println (topKRecs.mkString ('')) val movies = sc.textFile ('* Skaityti filmų sąrašo duomenis *') val title = movies.map (eilutė => line.split ('|'). paimkite ( 2)). Žemėlapis (masyvas => (masyvas (0) .toInt, masyvas (1))). CollectAsMap () val pavadinimaiRDD = filmai.map (eilutė => line.split ('|'). Imtis (2) ) .map (masyvas => (masyvas (0) .toInt, masyvas (1))). talpyklos () pavadinimai (123) val moviesForUser = reitingai. * Ieškoti vartotojo 789 * val sqlContext = * Sukurti SQL kontekstą * val filmaiRekomenduojama = sqlContext. * Sukurkite rekomenduojamų filmų „DataFrame“ * moviesRecommended.registerTempTable ('moviesRecommendedTable') sqlContext.sql ('Select count (*) from moviesRecommendedTable'). foreach (println) moviesForUser. * Rūšiuoti „User 789“ įvertinimus * .map (* Įvertinkite įvertinimą pagal filmo pavadinimą *). * Atspausdinkite įvertinimą * val rezultatai = moviesForUser.sortBy (-_. Įvertinimas) .take (30). Žemėlapis (įvertinimas => (pavadinimai (įvertinimas.produktas, įvertinimas.reitingas))}}

Sugeneravę prognozes, galime naudoti „Spark SQL“, kad rezultatus išsaugotumėte RDBMS sistemoje. Be to, tai gali būti rodoma žiniatinklio programoje.

Rezultatai:

Paveikslėlis: Filmai, rekomenduojami 77 vartotojui

Valio! Taigi sėkmingai sukūrėme filmų rekomendavimo sistemą naudodami „Apache Spark“. Tai apėmė tik vieną iš daugelio populiarių „Spark MLlib“ siūlomų algoritmų. Daugiau apie mašininį mokymąsi sužinosime būsimuose tinklaraščiuose apie duomenų mokslo algoritmus.

Toliau galite toliau mokytis „Apache Spark“ naudodami „Spark Tutorial“, „Spark Streaming Tutorial“ir „Spark Interview“ klausimai.„Edureka“ siekia suteikti kuo geresnę mokymosi patirtį internete.

Ar patikrinkite mūsų i Jei norite išmokti „Spark“ ir kurti karjerą „Spark“ srityje bei sukaupti kompetenciją, kad būtų galima atlikti didelio masto duomenų apdorojimą naudojant RDD, „Spark Streaming“, „SparkSQL“, „MLlib“, „GraphX“ ir „Scala“ su realiais gyvenimo atvejais.