Spark MLlib - Apache Spark mašīnmācīšanās bibliotēka



Šis Spark MLlib emuārs iepazīstinās jūs ar Apache Spark mašīnmācīšanās bibliotēku. Tas ietver filmu ieteikumu sistēmas projektu, izmantojot Spark MLlib.

Spark MLlib ir Apache Spark mašīnmācīšanās sastāvdaļa.Viena no galvenajām Spark atrakcijām ir spēja masveidā mērogot skaitļošanu, un tas ir tieši tas, kas jums nepieciešams mašīnmācīšanās algoritmiem. Bet ierobežojums ir tāds, ka visus mašīnmācīšanās algoritmus nevar efektīvi paralēlizēt. Katram algoritmam ir savi paralelizācijas izaicinājumi, neatkarīgi no tā, vai tas ir uzdevumu paralelisms vai datu paralēlisms.

To sakot, Spark kļūst par de facto platformu mašīnmācīšanās algoritmu un lietojumprogrammu veidošanai.Nu, jūs varat pārbaudīt pirms emuāra izveides rūpniecības eksperti.Izstrādātāji, kas strādā pie Spark MLlib, arvien vairāk un vairāk mašīnu algoritmu mērogojami un kodolīgi ievieš Spark sistēmā. Izmantojot šo emuāru, mēs uzzināsim mašīnmācīšanās, Spark MLlib jēdzienus, tā utilītprogrammas, algoritmus un pilnīgu filmu ieteikumu sistēmas izmantošanas gadījumu.





Šajā emuārā tiks aplūkotas šādas tēmas:

  1. Kas ir mašīnmācīšanās?
  2. Spark MLlib pārskats
  3. Spark MLlib rīki
  4. MLlib algoritmi
  5. Izmantot lietu - filmu ieteikumu sistēma

Kas ir mašīnmācīšanās?

Mašīnmācība, kas attīstījusies pēc mākslīgā intelekta modeļa atpazīšanas un skaitļošanas mācīšanās teorijas izpētes, pēta tādu algoritmu izpēti un konstruēšanu, kuri var mācīties no datiem un prognozēt tos - šādus algoritmus pārvar, ievērojot stingri statiskas programmas instrukcijas, veicot ar datiem pamatotas prognozes vai lēmumus , izveidojot modeli no ievades izlases.



Mašīnmācība - Spark MLlib - Edureka Attēls: Mašīnmācīšanās rīki

Mašīnmācība ir cieši saistīta ar skaitļošanas statistiku, kas arī koncentrējas uz prognožu veidošanu, izmantojot datorus. Tam ir cieša saikne ar matemātisko optimizāciju, kas laukam sniedz metodes, teoriju un pielietojuma jomas. Datu analīzes jomā mašīnmācīšanās ir metode, ko izmanto, lai izstrādātu sarežģītus modeļus un algoritmus, kas ļauj prognozēt, kas komerciālā lietošanā ir pazīstams kā prediktīvā analīze.

Ir trīs mašīnmācīšanās uzdevumu kategorijas:



  1. Vadīta mācīšanās : Uzraudzīta mācīšanās ir vieta, kur jums ir ievades mainīgie (x) un izejas mainīgais (Y), un jūs izmantojat algoritmu, lai uzzinātu kartēšanas funkciju no ievades līdz izejai.
  2. Bez uzraudzības mācīšanās : Nepieskatīta mācīšanās ir mašīnmācīšanās algoritma veids, ko izmanto, lai izdarītu secinājumus no datu kopām, kas sastāv no ievades datiem bez iezīmētām atbildēm.
  3. Mācības pastiprināšanai : Datorprogramma mijiedarbojas ar dinamisku vidi, kurā tai jāveic noteikti mērķi (piemēram, jābrauc ar transportlīdzekli vai jāspēlē spēle pret pretinieku). Programmai tiek sniegta atgriezeniskā saite attiecībā uz atlīdzībām un sodiem, kad tā pārvietojas savā problēmu telpā.Šo jēdzienu sauc par mācīšanos pastiprināt.

Spark MLlib pārskats

Spark MLlib tiek izmantots, lai veiktu mašīnmācīšanos Apache Spark. MLlib sastāv no populāriem algoritmiem un utilītprogrammām.

MLlib pārskats:

  • dzirkstele.mllib satur sākotnējo API, kas izveidota virs RDD. Pašlaik tas ir apkopes režīmā.
  • dzirkstele.ml nodrošina augstāka līmeņa API, kas izveidota virs DataFrames domēnambūvējot ML cauruļvadus. dzirkstele.ml pašlaik ir galvenā Spark mašīnmācīšanās API.

Spark MLlib rīki

Spark MLlib nodrošina šādus rīkus:

  • ML algoritmi: ML algoritmi ir MLlib kodols. Tajos ietilpst kopīgi mācību algoritmi, piemēram, klasifikācija, regresija, kopu veidošana un filtrēšana sadarbībā.
  • Featurization: Featurization ietver iezīmju iegūšanu, pārveidošanu, izmēru samazināšanu un atlasi.
  • Cauruļvadi: Cauruļvadi nodrošina instrumentus ML cauruļvadu konstruēšanai, novērtēšanai un regulēšanai.
  • Noturība: Noturība palīdz saglabāt un ielādēt algoritmus, modeļus un cauruļvadus.
  • Komunālie pakalpojumi: Komunālie pakalpojumilineārai algebrai, statistikai un datu apstrādei.

MLlib algoritmi

Spark MLlib populārie algoritmi un utilītas ir:

  1. Pamatstatistika
  2. Regresija
  3. Klasifikācija
  4. Ieteikumu sistēma
  5. Kopu veidošana
  6. Dimensiju samazināšana
  7. Funkcijas izvilkšana
  8. Optimizācija

Apskatīsim dažus no šiem sīkāk.

Pamatstatistika

Pamatstatistika ietver visvienkāršākās mašīnmācīšanās tehnikas. Tie ietver:

  1. Kopsavilkuma statistika : Piemēri ir vidējais, dispersija, skaits, maks, min un numNonZeros.
  2. Korelācijas : Spīrmens un Pīrsons ir daži veidi, kā atrast korelāciju.
  3. Stratificēta paraugu ņemšana : Tie ietver sampleBykey un sampleByKeyExact.
  4. Hipotēžu pārbaude : Pīrsona hī kvadrāta tests ir hipotēzes pārbaudes piemērs.
  5. Datu nejauša ģenerēšana : RandomRDD, Normal un Poisson tiek izmantoti, lai ģenerētu nejaušus datus.

Regresija

Regresija analīze ir statistikas process, lai novērtētu sakarības starp mainīgajiem. Tas ietver daudzas tehnikas vairāku mainīgo modelēšanai un analīzei, kad uzmanība tiek koncentrēta uz saistību starp atkarīgo mainīgo un vienu vai vairākiem neatkarīgiem mainīgajiem. Konkrētāk, regresijas analīze palīdz saprast, kā mainās atkarīgā mainīgā tipiskā vērtība, ja mainās kāds no neatkarīgajiem mainīgajiem, bet pārējie neatkarīgie mainīgie tiek fiksēti.

Regresijas analīze tiek plaši izmantota prognozēšanai un prognozēšanai, kur tās izmantošana būtiski pārklājas ar mašīnmācīšanās jomu. Regresijas analīzi izmanto arī, lai saprastu, kuri no neatkarīgajiem mainīgajiem ir saistīti ar atkarīgo mainīgo, un izpētītu šo attiecību formas. Ierobežotos apstākļos regresijas analīzi var izmantot, lai secinātu cēloņsakarības starp neatkarīgajiem un atkarīgajiem mainīgajiem.

Klasifikācija

Klasifikācija ir problēma, nosakot, kurai no kategoriju kopām (apakšpopulācijām) pieder jauns novērojums, pamatojoties uz apmācību datu kopumu, kurā ir novērojumi (vai gadījumi), kuru piederība kategorijai ir zināma. Tas ir paraugu atpazīšanas piemērs.

java liešana dubultā uz int

Šeit piemērs varētu būt attiecīgā e-pasta ziņojuma piešķiršana “surogātpasta” vai “bez mēstules” klasēm vai diagnozes piešķiršana konkrētam pacientam, kā aprakstīts pēc pacienta novērotajām īpašībām (dzimums, asinsspiediens, noteiktu simptomu klātbūtne vai neesamība). utt.).

Ieteikumu sistēma

TO ieteikumu sistēma ir informācijas filtrēšanas sistēmas apakšklase, kuras mērķis ir paredzēt “reitingu” vai “priekšroku”, ko lietotājs piešķir priekšmetam. Pēdējos gados ieteikumu sistēmas ir kļuvušas arvien populārākas, un tās tiek izmantotas dažādās jomās, tostarp filmas, mūzika, ziņas, grāmatas, pētnieciski raksti, meklēšanas vaicājumi, sociālie tagi un produkti kopumā.

Iesniedzēju sistēmas parasti izstrādā ieteikumu sarakstu vienā no diviem veidiem - izmantojot kopīgu un uz saturu balstītu filtrēšanu vai uz personību balstītu pieeju.

  1. Sadarbības filtrēšana tuvojas modeļa izveidei, ņemot vērā lietotāja iepriekšējo rīcību (preces, kas iepriekš iegādātas vai izvēlētas, un / vai šīm precēm piešķirts skaitliskais vērtējums), kā arī citu lietotāju līdzīgus lēmumus. Pēc tam šo modeli izmanto, lai prognozētu vienumus (vai preču vērtējumus), par kuriem lietotājs varētu būt ieinteresēts.
  2. Uz saturu balstīta filtrēšana pieejas izmanto virkni diskrētu raksturlielumu, lai ieteiktu papildu priekšmetus ar līdzīgām īpašībām.

Turklāt šīs pieejas bieži tiek kombinētas kā hibrīdu ieteikumu sistēmas.

Kopu veidošana

Kopu veidošana ir uzdevums grupēt objektu kopu tā, lai vienas grupas objekti (saukti par kopu) būtu vairāk līdzīgi (kaut kādā ziņā vai citā ziņā) viens otram nekā tiem, kas ietilpst citās grupās (kopās). Tātad tas ir izpētes datu ieguves galvenais uzdevums un kopēja metode statistikas datu analīzei, ko izmanto daudzās jomās, tostarp mašīnmācīšanās, modeļu atpazīšana, attēlu analīze, informācijas iegūšana, bioinformātika, datu saspiešana un datorgrafika.

Dimensiju samazināšana

Dimensiju samazināšana ir aplūkojamo nejaušo mainīgo skaita samazināšanas process, iegūstot galveno mainīgo lielumu kopu. To var iedalīt iezīmju atlasē un funkciju iegūšanā.

  1. Funkcijas izvēle: Funkciju izvēle atrod sākotnējo mainīgo apakškopu (sauktas arī par funkcijām vai atribūtiem).
  2. Funkcijas izvilkšana: Tas pārveido augstdimensionālās telpas datus par mazāk dimensiju telpu. Datu transformācija var būt lineāra, tāpat kā pamatkomponentu analīzē (PCA), taču pastāv arī daudzas nelineāras dimensiju samazināšanas metodes.

Funkcijas izvilkšana

Funkcijas izvilkšana sākas ar sākotnējo izmērīto datu kopu un veido atvasinātās vērtības (pazīmes), kuras ir paredzētas informatīvām un liekām, atvieglojot turpmākās mācīšanās un vispārināšanas darbības, un dažos gadījumos veicinot labāku cilvēku interpretāciju. Tas ir saistīts ar izmēru samazināšanu.

Optimizācija

Optimizācija ir labāko izvēleelements (attiecībā uz kādu kritēriju) no dažu pieejamo alternatīvu kopuma.

Vienkāršākajā gadījumā optimizācijas problēma sastāv no reālās funkcijas maksimizēšanas vai samazināšanas, sistemātiski izvēloties ievades vērtības no atļautās kopas un aprēķinot funkcijas vērtību. Optimizācijas teorijas un metožu vispārinājums citiem formulējumiem ietver lielu lietišķās matemātikas jomu. Vispārīgāk, optimizācija ietver kādas mērķa funkcijas “labāko pieejamo” vērtību atrašanu, ņemot vērā noteiktu domēnu (vai ievadi),tostarp dažādu veidu objektīvās funkcijas un dažādu veidu domēni.

Izmantot lietu - filmu ieteikumu sistēma

Problēmas izklāsts: Lai izveidotu filmu ieteikumu sistēmu, kas filmas iesaka, pamatojoties uz lietotāja vēlmēm, izmantojot Apache Spark.

Mūsu prasības:

Ļaujiet mums novērtēt prasības, lai izveidotu mūsu filmu ieteikumu sistēmu:

  1. Apstrādājiet milzīgu datu apjomu
  2. Ievads no vairākiem avotiem
  3. Viegli izmantot
  4. Ātra apstrāde

Kā mēs varam novērtētpēc mūsu prasībām mums ir nepieciešams labākais Big Data rīks, lai īsā laikā apstrādātu lielus datus. Tāpēc Apache Spark ir ideāls instruments, lai ieviestu mūsu filmu ieteikumu sistēmu.

Tagad aplūkosim savas sistēmas plūsmas diagrammu.

Kā redzam, tālāk tiek izmantota straumēšana no Spark Streaming. Mēs varam straumēt reāllaikā vai lasīt datus no Hadoop HDFS.

Datu kopas iegūšana:

Mūsu filmu ieteikumu sistēmai mēs varam iegūt lietotāju vērtējumus no daudzām populārām vietnēm, piemēram, IMDB, Rotten Tomatoes un Times Movie Ratings. Šī datu kopa ir pieejama daudzos formātos, piemēram, CSV failos, teksta failos aun datubāzes. Mēs varam straumēt datus tiešraidē no vietnēm vai lejupielādēt un saglabāt tosmūsu vietējā failu sistēma vai HDFS.

Datu kopa:

Zemāk redzamais attēls parāda, kā mēs varam apkopot datu kopas no populārām vietnēm.

Kad mēs straumēsim datus Spark, tas izskatās apmēram šādi.

Mašīnmācība:

Visa ieteikumu sistēma ir balstīta uz mašīnmācīšanās algoritmu Mainot vismazākos laukumus . Šeit ALS ir regresijas analīzes veids, kurā regresiju izmanto, lai novilktu līniju starp datu punktiem tādā veidā, lai attāluma kvadrātu summa no katra datu punkta tiktu samazināta līdz minimumam. Tādējādi šo līniju izmanto, lai prognozētu funkcijas vērtības, kur tā atbilst neatkarīgā mainīgā vērtībai.

Zilā līnija diagrammā ir vislabāk piemērota regresijas līnija. Šai līnijai izmēra D vērtība ir minimāla. Visas pārējās sarkanās līnijas vienmēr būs tālāk no datu kopas kopumā.

Spark MLlib ieviešana:

  1. Mēs izmantosim sadarbības filtrēšanu (CF), lai prognozētu lietotāju vērtējumus konkrētām filmām, pamatojoties uz viņu vērtējumiem citām filmām.
  2. Pēc tam mēs sadarbojamies ar citu lietotāju vērtējumu konkrētajai filmai.
  3. Lai iegūtu šādus mūsu mašīnmācīšanās rezultātus, mums jāizmanto Spark SQL DataFrame, Dataset un SQL Service.

Šeit ir mūsu programmas pseidokods:

importēt org.apache.spark.mllib.recommendation.ALS importēt org.apache.spark.mllib.recommendation.Rating importēt org.apache.spark.SparkConf // Citu nepieciešamo pakotņu objektu importēšana Filma {def main (args: Masīvs [String] ) {val conf = new SparkConf (). setAppName ('Movie'). setMaster ('local [2]') val sc = new SparkContext (conf) val rawData = sc.textFile ('* Lasīt datus no filmas CSV faila * ') //rawData.first () val rawRatings = rawData.map (* Sadalīt rawData cilnes atdalītājā *) val reitingi = rawRatings.map {* Lietotāja, filmas un vērtējuma kartes gadījumu masīvs *} // Datu val modeļa apmācība = ALS.train (vērtējumi, 50, 5, 0,01) model.userFeatures model.userFeatures.count model.productFeatures.count val predictedRating = * Paredzēt lietotājam 789 filmai 123 * val userId = * Lietotājs 789 * val K = 10 val topKRecs = model.recommendProducts (* Ieteikt lietotājam konkrētai K * vērtībai) println (topKRecs.mkString ('')) val movies = sc.textFile ('* Lasīt filmu saraksta datus *') val nosaukumi = movies.map (line => line.split ('|'). ņemt ( 2)). Karte (masīvs => (masīvs (0) .toInt, masīvs (1))). CollectAsMap () val nosaukumiRDD = filmas.map (līnija => line.split ('|'). Ņemt (2) ) .map (array => (masīvs (0) .toInt, masīvs (1))). kešatmiņa () nosaukumi (123) val moviesForUser = reitingi. * Meklēt lietotāju 789 * val sqlContext = * Izveidot SQL kontekstu * val moviesRecommended = sqlContext. * Izveidojiet ieteicamo filmu datu rāmi * moviesRecommended.registerTempTable ('moviesRecommendedTable') sqlContext.sql ('Select count (*) from moviesRecommendedTable'). foreach (println) moviesForUser. * Kārtojiet vērtējumus lietotājam 789 * .map (* Novērtējiet vērtējumu pēc filmas nosaukuma *). * Izdrukājiet vērtējumu * val results = moviesForUser.sortBy (-_. Rating) .take (30) .map (vērtējums => (nosaukumi (vērtējums.produkts), vērtējums.reiting))}}

Kad esam izveidojuši prognozes, varam izmantot Spark SQL, lai rezultātus saglabātu RDBMS sistēmā. Turklāt to var parādīt tīmekļa lietojumprogrammā.

Rezultāti:

Attēls: 77. lietotājam ieteiktās filmas

Urā! Tādējādi mēs esam veiksmīgi izveidojuši filmu ieteikumu sistēmu, izmantojot Apache Spark. Ar to mēs esam apskatījuši tikai vienu no daudzajiem populārajiem Spark MLlib algoritmiem. Mēs uzzināsim vairāk par mašīnmācīšanos nākamajos emuāros par Datu zinātnes algoritmiem.

Turpinot, jūs varat turpināt apgūt Apache Spark, izmantojot Spark Tutorial, Spark Streaming Tutorialun dzirksteles intervijas jautājumi.Edureka ir apņēmusies nodrošināt vislabāko iespējamo mācību pieredzi tiešsaistē.

Vai pārbaudiet mūsu i Ja vēlaties apgūt Spark un veidot karjeru Spark jomā, kā arī iegūt zināšanas, lai veiktu liela mēroga datu apstrādi, izmantojot RDD, Spark Streaming, SparkSQL, MLlib, GraphX ​​un Scala, ar reālās dzīves gadījumiem.