Spark MLlib - Machine Learning Library Of Apache Spark



Denna Spark MLlib-blogg introducerar dig till Apache Sparks maskininlärningsbibliotek. Det inkluderar ett filmrekommendationssystemprojekt med Spark MLlib.

Spark MLlib är Apache Sparks maskininlärningskomponent.En av de största attraktionerna i Spark är möjligheten att skala beräkningar massivt, och det är precis vad du behöver för maskininlärningsalgoritmer. Men begränsningen är att alla maskininlärningsalgoritmer inte kan parallelliseras effektivt. Varje algoritm har sina egna utmaningar för parallellisering, oavsett om det är uppgiftsparallellism eller dataparallellism.

hadoop utvecklarroller och ansvar

Med detta sagt blir Spark de-facto-plattformen för att bygga algoritmer och applikationer för maskininlärning.Du kan kolla in kuraterad av branschexperter innan du fortsätter med bloggen.Utvecklarna som arbetar med Spark MLlib implementerar fler och fler maskinalgoritmer på ett skalbart och koncist sätt i Spark-ramverket. Genom denna blogg kommer vi att lära oss begreppen Machine Learning, Spark MLlib, dess verktyg, algoritmer och ett komplett användningsfall för Movie Recommendation System.





Följande ämnen kommer att behandlas i den här bloggen:

  1. Vad är maskininlärning?
  2. Spark MLlib Översikt
  3. Spark MLlib-verktyg
  4. MLlib-algoritmer
  5. Use Case - Movie Recommendation System

Vad är maskininlärning?

Utvecklat från studien av mönsterigenkänning och beräkningsinlärningsteori i artificiell intelligens, maskininlärning utforskar studiet och konstruktionen av algoritmer som kan lära av och göra förutsägelser på data - sådana algoritmer övervinns enligt strikt statiska programinstruktioner genom att göra datadrivna förutsägelser eller beslut , genom att bygga en modell från provingångar.



Maskininlärning - Spark MLlib - Edureka Figur: Verktyg för maskininlärning

Maskininlärning är nära relaterad till beräkningsstatistik, som också fokuserar på förutsägelse genom användning av datorer. Det har starka band till matematisk optimering, som levererar metoder, teori och applikationsdomäner till fältet. Inom dataanalysfältet är maskininlärning en metod som används för att ta fram komplexa modeller och algoritmer som lämpar sig för en förutsägelse som vid kommersiell användning kallas prediktiv analys.

Det finns tre kategorier av maskininlärningsuppgifter:



  1. Övervakat lärande : Övervakad inlärning är där du har inputvariabler (x) och en outputvariabel (Y) och du använder en algoritm för att lära dig kartläggningsfunktionen från ingången till utgången.
  2. Oövervakat lärande : Ej övervakad inlärning är en typ av maskininlärningsalgoritm som används för att dra slutsatser från datamängder som består av indata utan märkta svar.
  3. Förstärkning lärande : Ett datorprogram interagerar med en dynamisk miljö där det måste utföra ett visst mål (som att köra ett fordon eller spela ett spel mot en motståndare). Programmet ger feedback när det gäller belöningar och straff när det navigerar i sitt problemutrymme.Detta koncept kallas förstärkningslärande.

Spark MLlib Översikt

Spark MLlib används för att utföra maskininlärning i Apache Spark. MLlib består av populära algoritmer och verktyg.

MLlib Översikt:

  • spark.mllib innehåller det ursprungliga API byggt ovanpå RDD. Den är för närvarande i underhållsläge.
  • spark.ml ger API på högre nivå byggt ovanpå DataFrames förbygga ML-rörledningar. spark.ml är det primära Machine Learning API för Spark just nu.

Spark MLlib-verktyg

Spark MLlib tillhandahåller följande verktyg:

  • ML-algoritmer: ML-algoritmer utgör kärnan i MLlib. Dessa inkluderar vanliga inlärningsalgoritmer som klassificering, regression, kluster och samverkande filtrering.
  • Funktion: Funktionen inkluderar extrahering av funktioner, transformation, dimensioneringsreduktion och val.
  • Rörledningar: Rörledningar tillhandahåller verktyg för att konstruera, utvärdera och justera ML-rörledningar.
  • Uthållighet: Persistens hjälper till att spara och ladda algoritmer, modeller och rörledningar.
  • Verktyg: Verktygför linjär algebra, statistik och datahantering.

MLlib-algoritmer

De populära algoritmerna och verktygen i Spark MLlib är:

  1. Grundläggande statistik
  2. Regression
  3. Klassificering
  4. Rekommendationssystem
  5. Kluster
  6. Dimensionalitetsreduktion
  7. Särdragsextraktion
  8. Optimering

Låt oss titta på några av dessa i detalj.

Grundläggande statistik

Grundläggande statistik innehåller de mest grundläggande maskininlärningsteknikerna. Dessa inkluderar:

  1. Sammanfattande statistik : Exempel inkluderar medelvärde, varians, antal, max, min och numNonZeros.
  2. Korrelationer : Spearman och Pearson är några sätt att hitta korrelation.
  3. Stratifierad sampling : Dessa inkluderar sampleBykey och sampleByKeyExact.
  4. Hypotes Testing : Pearson's chi-squared test är ett exempel på hypotesprovning.
  5. Slumpmässig datagenerering : RandomRDDs, Normal och Poisson används för att generera slumpmässiga data.

Regression

Regression analys är en statistisk process för att uppskatta sambandet mellan variabler. Den innehåller många tekniker för modellering och analys av flera variabler när fokus ligger på förhållandet mellan en beroende variabel och en eller flera oberoende variabler. Mer specifikt hjälper regressionsanalysen sig att förstå hur det typiska värdet på den beroende variabeln ändras när någon av de oberoende variablerna varieras, medan de andra oberoende variablerna hålls fasta.

Regressionsanalys används ofta för förutsägelse och prognoser, där dess användning har betydande överlappning med området maskininlärning. Regressionsanalys används också för att förstå vilka bland de oberoende variablerna som är relaterade till den beroende variabeln och för att utforska formerna av dessa relationer. Under begränsade omständigheter kan regressionsanalys användas för att fastställa orsakssambanden mellan de oberoende och beroende variablerna.

Klassificering

Klassificering är problemet med att identifiera till vilken av en uppsättning kategorier (underpopulationer) en ny observation tillhör, på grundval av en utbildningsuppsättning med data som innehåller observationer (eller instanser) vars kategorimedlemskap är känt. Det är ett exempel på mönsterigenkänning.

Här kan ett exempel vara att tilldela ett visst e-postmeddelande till klasserna 'skräppost' eller 'icke-skräppost' eller tilldela en diagnos till en given patient som beskrivs av observerade egenskaper hos patienten (kön, blodtryck, närvaro eller frånvaro av vissa symptom etc.).

Rekommendationssystem

TILL rekommendationssystem är en underklass av informationsfiltreringssystem som försöker förutsäga 'betyg' eller 'preferens' som en användare skulle ge ett objekt. Rekommendationssystem har blivit alltmer populära de senaste åren och används inom en rad olika områden, inklusive filmer, musik, nyheter, böcker, forskningsartiklar, sökfrågor, sociala taggar och produkter i allmänhet.

Rekommendatorsystem producerar vanligtvis en lista med rekommendationer på ett av två sätt - genom samarbets- och innehållsbaserad filtrering eller personlighetsbaserad strategi.

  1. Samarbetsfiltrering närmar sig att bygga en modell från en användares tidigare beteende (artiklar som tidigare köpts eller valt och / eller numeriska betyg ges till dessa objekt) samt liknande beslut som fattats av andra användare. Denna modell används sedan för att förutsäga objekt (eller betyg för objekt) som användaren kan ha intresse av.
  2. Innehållsbaserad filtrering metoder använder en serie diskreta egenskaper hos ett föremål för att rekommendera ytterligare objekt med liknande egenskaper.

Vidare kombineras dessa tillvägagångssätt ofta som Hybrid-rekommenderingssystem.

Kluster

Kluster är uppgiften att gruppera en uppsättning objekt på ett sådant sätt att objekt i samma grupp (kallas ett kluster) liknar varandra (i någon eller annan mening) än de i andra grupper (kluster). Så det är huvuduppgiften för utforskande datautvinning och en vanlig teknik för statistisk dataanalys, som används inom många områden, inklusive maskininlärning, mönsterigenkänning, bildanalys, informationssökning, bioinformatik, datakomprimering och datorgrafik.

Dimensionalitetsreduktion

Dimensionalitetsreduktion är processen att minska antalet slumpmässiga variabler som övervägs, genom att erhålla en uppsättning huvudvariabler. Det kan delas in i funktionsval och funktionsuttag.

  1. Funktionsval: Funktionsval hittar en delmängd av originalvariablerna (även kallade funktioner eller attribut).
  2. Särdragsextraktion: Detta förvandlar data i det högdimensionella utrymmet till ett utrymme med färre dimensioner. Datatransformationen kan vara linjär, som i Principal Component Analysis (PCA), men det finns också många olinjära dimensioneringsreduktionstekniker.

Särdragsextraktion

Särdragsextraktion startar från en första uppsättning mätdata och bygger härledda värden (funktioner) avsedda att vara informativa och icke-redundanta, vilket underlättar de efterföljande inlärnings- och generaliseringsstegen, och i vissa fall leder till bättre mänskliga tolkningar. Detta är relaterat till dimensioneringsreduktion.

Optimering

Optimering är valet av de bästaelement (med avseende på något kriterium) från någon uppsättning tillgängliga alternativ.

I det enklaste fallet består ett optimeringsproblem av att maximera eller minimera en verklig funktion genom att systematiskt välja ingångsvärden från en tillåten uppsättning och beräkna funktionens värde. Generaliseringen av optimeringsteori och tekniker till andra formuleringar omfattar ett stort område av tillämpad matematik. Mer allmänt inkluderar optimering att hitta 'bästa tillgängliga' värden för någon objektiv funktion med en definierad domän (eller ingång),inklusive en mängd olika typer av objektiva funktioner och olika typer av domäner.

Use Case - Movie Recommendation System

Problemförklaring: Att bygga ett filmrekommendationssystem som rekommenderar filmer baserat på en användares preferenser med hjälp av Apache Spark.

Våra krav:

Så låt oss bedöma kraven för att bygga vårt filmrekommendationssystem:

  1. Bearbeta enorma mängder data
  2. Ingång från flera källor
  3. Lätt att använda
  4. Snabb bearbetning

Som vi kan bedömavåra krav behöver vi det bästa Big Data-verktyget för att bearbeta stora data på kort tid. Därför Apache Spark är det perfekta verktyget för att implementera vårt filmrekommendationssystem.

Låt oss nu titta på flödesdiagrammet för vårt system.

Som vi kan se använder följande Streaming från Spark Streaming. Vi kan strömma i realtid eller läsa data från Hadoop HDFS.

Hämta datauppsättning:

För vårt filmrekommendationssystem kan vi få användarbetyg från många populära webbplatser som IMDB, Rotten Tomatoes och Times Movie Ratings. Denna dataset finns i många format som CSV-filer, textfiler aandra databaser. Vi kan antingen strömma data live från webbplatserna eller ladda ner och lagra dem ivårt lokala filsystem eller HDFS.

Dataset:

Nedanstående figur visar hur vi kan samla in dataset från populära webbplatser.

När vi väl har streamat data till Spark ser det ut så här.

Maskininlärning:

Hela rekommendationssystemet är baserat på maskininlärningsalgoritmen Växlande minsta rutor . Här är ALS en typ av regressionsanalys där regression används för att rita en linje mellan datapunkterna på ett sådant sätt att summan av kvadraten på avståndet från varje datapunkt minimeras. Således används denna linje för att förutsäga funktionens värden där den möter värdet för den oberoende variabeln.

Den blå linjen i diagrammet är den regressionslinje som passar bäst. För denna rad är värdet på dimensionen D minimalt. Alla andra röda linjer kommer alltid längre från datasetet som helhet.

Spark MLlib-implementering:

  1. Vi kommer att använda Collaborative Filtering (CF) för att förutsäga betyg för användare för vissa filmer baserat på deras betyg för andra filmer.
  2. Vi samarbetar sedan med andra användares betyg för just den filmen.
  3. För att få följande resultat från vår maskininlärning måste vi använda Spark SQL: s DataFrame, Dataset och SQL Service.

Här är pseudokoden för vårt program:

importera org.apache.spark.mllib.recommendation.ALS importera org.apache.spark.mllib.recommendation.Rating importera org.apache.spark.SparkConf // Importera andra nödvändiga paketobjekt Film {def main (args: Array [String] ) {val conf = new SparkConf (). setAppName ('Movie'). setMaster ('local [2]') val sc = new SparkContext (conf) val rawData = sc.textFile ('* Läs data från filmen CSV-fil * ') //rawData.first () val rawRatings = rawData.map (* Dela rawData på flikavgränsare *) val ratings = rawRatings.map {* Map case array of User, Movie and Rating *} // Utbildning av datavalmodellen = ALS.train (betyg, 50, 5, 0.01) model.userFeatures model.userFeatures.count model.productFeatures.count val predictedRating = * Predict for User 789 for movie 123 * val userId = * User 789 * val K = 10 val topKRecs = model.recommendProducts (* Rekommenderas för användare för det specifika värdet för K *) println (topKRecs.mkString ('')) val filmer = sc.textFile ('* Läs filmlistdata *') val titlar = film.map (line => line.split ('|'). ta ( 2)). Karta (array => (array (0) .toInt, array (1))). CollectAsMap () val titlar RDD = films.map (line => line.split ('|'). Ta (2) ) .map (array => (array (0) .toInt, array (1))). cache () titlar (123) val moviesForUser = betyg. * Sök efter användare 789 * val sqlContext = * Skapa SQL-kontext * val filmer Rekommenderas = sqlContext. * Skapa en dataframe av rekommenderade filmer * filmsRecommended.registerTempTable ('filmsRecommendedTable') sqlContext.sql ('Välj antal (*) från filmsRecommendedTable'). foreach (println) moviesForUser. * Sortera betyg för användare 789 * .map (* Kartlägg betyg till filmtitel *). * Skriv ut betyget * valresultat = filmsForUser.sortBy (-_. Betyg). Ta (30) .map (betyg => (titlar (betyg.produkt), betyg.betyg))}}

När vi väl har skapat förutsägelser kan vi använda Spark SQL för att lagra resultaten i ett RDBMS-system. Dessutom kan detta visas i en webbapplikation.

Resultat:

Figur: Filmer rekommenderade för användare 77

hurra! Vi har därmed framgångsrikt skapat ett filmrekommendationssystem med Apache Spark. Med detta har vi täckt bara en av de många populära algoritmerna som Spark MLlib har att erbjuda. Vi kommer att lära oss mer om maskininlärning i de kommande bloggarna om datavetenskapsalgoritmer.

Framåt kan du fortsätta lära dig Apache Spark med Spark Tutorial, Spark Streaming Tutorial, och Spark intervju frågor.Edureka är dedikerad till att tillhandahålla den bästa möjliga inlärningsupplevelsen online.

Kolla in vår i Om du vill lära dig Spark och bygga en karriär inom området Spark och bygga expertis för att utföra storskalig databehandling med RDD, Spark Streaming, SparkSQL, MLlib, GraphX ​​och Scala med verkliga användningsfall.