Spark MLlib - Machine Learning Library Of Apache Spark



Denne Spark MLlib-blog introducerer dig til Apache Sparks Machine Learning-bibliotek. Det inkluderer et filmanbefalingssystemprojekt, der bruger Spark MLlib.

Spark MLlib er Apache Sparks maskineindlæringskomponent.En af de største attraktioner i Spark er evnen til at skalere beregning massivt, og det er præcis, hvad du har brug for til maskinindlæringsalgoritmer. Men begrænsningen er, at alle maskinlæringsalgoritmer ikke effektivt kan paralleliseres. Hver algoritme har sine egne udfordringer til parallelisering, hvad enten det er opgaveparallelisme eller dataparallelisme.

Når det er sagt, bliver Spark de facto-platformen til opbygning af algoritmer og applikationer til maskinindlæring.Nå, du kan tjekke ud kurateret af brancheeksperter, inden de fortsætter med bloggen.Udviklerne, der arbejder med Spark MLlib, implementerer flere og flere maskinalgoritmer på en skalerbar og kortfattet måde i Spark-rammen. Gennem denne blog lærer vi begreberne Machine Learning, Spark MLlib, dets hjælpeprogrammer, algoritmer og et komplet brugstilfælde af Movie Recommendation System.





Følgende emner vil blive dækket i denne blog:

  1. Hvad er maskinindlæring?
  2. Spark MLlib Oversigt
  3. Spark MLlib-værktøjer
  4. MLlib algoritmer
  5. Brug sag - Filmanbefalingssystem

Hvad er maskinindlæring?

Udviklet fra studiet af mønstergenkendelse og beregningslæringsteori inden for kunstig intelligens udforsker maskinindlæring studiet og konstruktionen af ​​algoritmer, der kan lære af og forudsige data - sådanne algoritmer overvindes ved at følge strengt statiske programinstruktioner ved at lave datadrevne forudsigelser eller beslutninger , gennem opbygning af en model fra prøveinput.



Machine Learning - Spark MLlib - Edureka Figur: Machine Learning værktøjer

Maskinindlæring er tæt knyttet til beregningsstatistik, som også fokuserer på forudsigelse ved brug af computere. Det har stærke bånd til matematisk optimering, som leverer metoder, teori og anvendelsesdomæner til marken. Inden for dataanalyse er maskinindlæring en metode, der bruges til at udtænke komplekse modeller og algoritmer, der egner sig til en forudsigelse, som i kommerciel brug er kendt som forudsigende analyse.

Der er tre kategorier af maskinlæringsopgaver:



hvornår du skal bruge dette. i java
  1. Overvåget læring : Overvåget læring er, hvor du har inputvariabler (x) og en outputvariabel (Y), og du bruger en algoritme til at lære kortlægningsfunktionen fra input til output.
  2. Uovervåget læring : Uovervåget læring er en type maskinlæringsalgoritme, der bruges til at trække slutninger fra datasæt bestående af inputdata uden mærkede svar.
  3. Forstærkningslæring : Et computerprogram interagerer med et dynamisk miljø, hvor det skal udføre et bestemt mål (såsom at køre et køretøj eller spille et spil mod en modstander). Programmet giver feedback med hensyn til belønninger og straffe, når det navigerer i dets problemrum.Dette koncept kaldes forstærkningslæring.

Spark MLlib Oversigt

Spark MLlib bruges til at udføre maskinlæring i Apache Spark. MLlib består af populære algoritmer og hjælpeprogrammer.

MLlib Oversigt:

  • spark.mllib indeholder den originale API bygget oven på RDD'er. Den er i øjeblikket i vedligeholdelsestilstand.
  • spark.ml giver API på højere niveau bygget oven på DataFrames forkonstruktion af ML-rørledninger. spark.ml er den primære Machine Learning API for Spark i øjeblikket.

Spark MLlib-værktøjer

Spark MLlib leverer følgende værktøjer:

  • ML-algoritmer: ML-algoritmer udgør kernen i MLlib. Disse inkluderer almindelige indlæringsalgoritmer som klassificering, regression, klyngedannelse og samarbejdsfiltrering.
  • Funktion: Featurization inkluderer funktionsekstraktion, transformation, dimensioneringsreduktion og valg.
  • Rørledninger: Rørledninger giver værktøjer til konstruktion, evaluering og indstilling af ML-rørledninger.
  • Udholdenhed: Persistence hjælper med at gemme og indlæse algoritmer, modeller og rørledninger.
  • Hjælpeprogrammer: Hjælpeprogrammertil lineær algebra, statistik og datahåndtering.

MLlib algoritmer

De populære algoritmer og hjælpeprogrammer i Spark MLlib er:

  1. Grundlæggende statistik
  2. Regression
  3. Klassifikation
  4. Anbefalingssystem
  5. Klyngedannelse
  6. Dimensionalitetsreduktion
  7. Ekstraktion af funktioner
  8. Optimering

Lad os se nærmere på nogle af disse.

Grundlæggende statistik

Grundlæggende statistik inkluderer de mest basale maskinlæringsteknikker. Disse inkluderer:

  1. Resumé Statistik : Eksempler inkluderer gennemsnit, varians, antal, max, min og numNonZeros.
  2. Korrelationer : Spearman og Pearson er nogle måder at finde sammenhæng på.
  3. Stratificeret prøveudtagning : Disse inkluderer sampleBykey og sampleByKeyExact.
  4. Hypotese testning : Pearson's chi-squared test er et eksempel på hypotesetest.
  5. Tilfældig datagenerering : RandomRDDs, Normal og Poisson bruges til at generere tilfældige data.

Regression

Regression analyse er en statistisk proces til estimering af sammenhængen mellem variabler. Det inkluderer mange teknikker til modellering og analyse af flere variabler, når fokus er på forholdet mellem en afhængig variabel og en eller flere uafhængige variabler. Mere specifikt hjælper regressionsanalyse med at forstå, hvordan den typiske værdi af den afhængige variabel ændres, når en af ​​de uafhængige variabler varieres, mens de andre uafhængige variabler holdes faste.

Regressionsanalyse bruges i vid udstrækning til forudsigelse og prognoser, hvor dens anvendelse har betydelig overlapning inden for maskinlæring. Regressionsanalyse bruges også til at forstå, hvilke af de uafhængige variabler der er relateret til den afhængige variabel, og til at udforske formerne for disse sammenhænge. Under begrænsede omstændigheder kan regressionsanalyse bruges til at udlede årsagsforhold mellem de uafhængige og afhængige variabler.

Klassifikation

Klassifikation er problemet med at identificere, hvilken af ​​et sæt kategorier (underpopulationer) en ny observation hører til på basis af et træningssæt med data, der indeholder observationer (eller forekomster), hvis medlemskab af kategori er kendt. Det er et eksempel på mønstergenkendelse.

Her ville et eksempel være at tildele en given e-mail til 'spam' eller 'ikke-spam' klasser eller tildele en diagnose til en given patient som beskrevet af observerede karakteristika for patienten (køn, blodtryk, tilstedeværelse eller fravær af visse symptomer, etc.).

Anbefalingssystem

TIL anbefaling system er en underklasse af informationsfiltreringssystem, der søger at forudsige den 'rating' eller 'præference', som en bruger ville give et element. Anbefalingssystemer er blevet mere og mere populære i de senere år og bruges i en række områder, herunder film, musik, nyheder, bøger, forskningsartikler, søgeforespørgsler, sociale tags og produkter generelt.

Anbefalersystemer producerer typisk en liste med anbefalinger på en af ​​to måder - gennem samarbejds- og indholdsbaseret filtrering eller den personlighedsbaserede tilgang.

  1. Samarbejdsfiltrering nærmer sig at opbygge en model ud fra en brugers tidligere opførsel (varer, der tidligere er købt eller valgt og / eller numeriske vurderinger givet til disse varer) samt lignende beslutninger truffet af andre brugere. Denne model bruges derefter til at forudsige varer (eller ratings for varer), som brugeren kan have interesse i.
  2. Indholdsbaseret filtrering fremgangsmåder anvender en række diskrete egenskaber ved en vare for at anbefale yderligere varer med lignende egenskaber.

Desuden kombineres disse tilgange ofte som hybridanbefalingssystemer.

Klyngedannelse

Klyngedannelse er opgaven med at gruppere et sæt objekter på en sådan måde, at objekter i den samme gruppe (kaldet en klynge) er mere ens (i en eller anden forstand) til hinanden end dem i andre grupper (klynger). Så det er hovedopgaven med sonderende dataudvinding og en fælles teknik til statistisk dataanalyse, der anvendes inden for mange områder, herunder maskinindlæring, mønstergenkendelse, billedanalyse, informationssøgning, bioinformatik, datakomprimering og computergrafik.

Dimensionalitetsreduktion

Dimensionalitetsreduktion er processen med at reducere antallet af tilfældige variabler, der overvejes, via opnåelse af et sæt hovedvariabler. Det kan opdeles i valg af funktioner og ekstraktion af funktioner.

  1. Valg af funktion: Funktionsvalg finder et undersæt af de originale variabler (også kaldet funktioner eller attributter).
  2. Funktion ekstraktion: Dette transformerer dataene i det højdimensionelle rum til et rum med færre dimensioner. Datatransformationen kan være lineær, som i Principal Component Analysis (PCA), men der findes også mange ikke-lineære dimensioneringsreduktionsteknikker.

Ekstraktion af funktioner

Ekstraktion af funktioner starter fra et indledende sæt målte data og bygger afledte værdier (funktioner) beregnet til at være informative og ikke-overflødige, hvilket letter de efterfølgende lærings- og generaliseringstrin og i nogle tilfælde fører til bedre menneskelige fortolkninger. Dette er relateret til dimensionalitetsreduktion.

Optimering

Optimering er udvælgelsen af ​​de bedsteelement (med hensyn til nogle kriterier) fra nogle sæt tilgængelige alternativer.

I det enkleste tilfælde består et optimeringsproblem af at maksimere eller minimere en reel funktion ved systematisk at vælge inputværdier inden for et tilladt sæt og beregne funktionens værdi. Generaliseringen af ​​optimeringsteori og teknikker til andre formuleringer omfatter et stort område af anvendt matematik. Mere generelt inkluderer optimering at finde “bedste tilgængelige” værdier for en objektiv funktion givet et defineret domæne (eller input),herunder en række forskellige typer objektive funktioner og forskellige typer domæner.

Brug sag - Filmanbefalingssystem

Problemformulering: At oprette et filmanbefalingssystem, der anbefaler film baseret på en brugers præferencer ved hjælp af Apache Spark.

Vores krav:

Så lad os vurdere kravene til at opbygge vores filmanbefalingssystem:

  1. Behandl enorm mængde data
  2. Input fra flere kilder
  3. Let at bruge
  4. Hurtig behandling

Som vi kan vurderevores krav, har vi brug for det bedste Big Data-værktøj til at behandle store data på kort tid. Derfor Apache Spark er det perfekte værktøj til at implementere vores filmanbefalingssystem.

Lad os nu se på flowdiagrammet for vores system.

Som vi kan se, bruger følgende streaming fra gniststreaming. Vi kan streame i realtid eller læse data fra Hadoop HDFS.

Henter datasæt:

Til vores filmanbefalingssystem kan vi få brugerbedømmelser fra mange populære websteder som IMDB, Rotten Tomatoes og Times Movie Ratings. Dette datasæt er tilgængeligt i mange formater såsom CSV-filer, tekstfiler and databaser. Vi kan enten streame dataene live fra webstederne eller downloade og gemme dem ivores lokale filsystem eller HDFS.

Datasæt:

Nedenstående figur viser, hvordan vi kan indsamle datasæt fra populære websteder.

Når vi først har streamet dataene til Spark, ser det lidt sådan ud.

Maskinelæring:

Hele anbefalingssystemet er baseret på Machine Learning-algoritmen Alternerende mindste firkanter . Her er ALS en type regressionsanalyse, hvor regression bruges til at tegne en linje midt i datapunkterne på en sådan måde, at summen af ​​kvadraterne for afstanden fra hvert datapunkt minimeres. Således bruges denne linje derefter til at forudsige funktionens værdier, hvor den opfylder værdien af ​​den uafhængige variabel.

Den blå linje i diagrammet er den bedst egnede regressionslinie. For denne linje er værdien af ​​dimensionen D minimum. Alle andre røde linjer vil altid være længere væk fra datasættet som helhed.

Spark MLlib-implementering:

  1. Vi bruger Collaborative Filtering (CF) til at forudsige klassificeringerne for brugere for bestemte film baseret på deres ratings for andre film.
  2. Vi samarbejder derefter med andre brugeres vurdering for den pågældende film.
  3. For at få følgende resultater fra vores Machine Learning er vi nødt til at bruge Spark SQL's DataFrame, Dataset og SQL Service.

Her er pseudokoden til vores program:

import org.apache.spark.mllib.recommendation.ALS import org.apache.spark.mllib.recommendation.Rating import org.apache.spark.SparkConf // Importer andre nødvendige pakker 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 ('* Læs data fra filmen CSV-fil * ') //rawData.first () val rawRatings = rawData.map (* Opdel rawData på fanebladet *) val ratings = rawRatings.map {* Map case array of User, Movie and Rating *} // Træning af datavalmodellen = ALS.train (ratings, 50, 5, 0.01) model.userFeatures model.userFeatures.count model.productFeatures.count val predictedRating = * Forudsig for bruger 789 til film 123 * val userId = * User 789 * val K = 10 val topKRecs = model.recommendProducts (* Anbefal til bruger for den særlige værdi af K *) println (topKRecs.mkString ('')) val film = sc.textFile ('* Læs filmlistedata *') val titler = film.map (line => line.split ('|'). tag ( 2)). Kort (array => (array (0) .toInt, array (1))). CollectAsMap () val titlerRDD = film.map (line => line.split ('|'). Tag (2) ) .map (array => (array (0) .toInt, array (1))). cache () titler (123) val filmForUser = ratings. * Søg efter bruger 789 * val sqlContext = * Opret SQL-kontekst * val film = sqlContext. * Opret en dataframe af anbefalede film * filmRecommended.registerTempTable ('filmsRecommendedTable') sqlContext.sql ('Vælg antal (*) fra filmRecommendedTable'). foreach (println) filmForUser. * Sorter klassificeringerne for bruger 789 * .map (* Kort klassificeringen til filmtitel *). * Udskriv klassificeringen * valresultater = filmForUser.sortBy (-_. Vurdering) .tag (30) .map (rating => (titler (rating.product), rating.rating))}}

Når vi genererer forudsigelser, kan vi bruge Spark SQL til at gemme resultaterne i et RDBMS-system. Yderligere kan dette vises i en webapplikation.

Resultater:

Figur: Film anbefalet til bruger 77

Hurra! Vi har således med succes oprettet et filmanbefalingssystem ved hjælp af Apache Spark. Med dette har vi kun dækket en af ​​de mange populære algoritmer, som Spark MLlib har at tilbyde. Vi lærer mere om maskinindlæring i de kommende blogs om datavidenskabsalgoritmer.

Fremadrettet kan du fortsætte med at lære Apache Spark med Spark Tutorial, Spark Streaming Tutorialog Spark Interview Spørgsmål.Edureka er dedikeret til at levere den bedst mulige læringsoplevelse online.

Tjek vores jeg f du ønsker at lære Spark og opbygge en karriere inden for området Spark og opbygge ekspertise til at udføre databehandling i stor skala ved hjælp af RDD, Spark Streaming, SparkSQL, MLlib, GraphX ​​og Scala med brugssager i det virkelige liv.