Spark MLlib - Machine Learning Library Of Apache Spark



Denne Spark MLlib-bloggen vil introdusere deg for Apache Sparks maskinlæringsbibliotek. Den inkluderer et Movie Recommendation System-prosjekt ved bruk av Spark MLlib.

Spark MLlib er Apache Sparks maskinlæringskomponent.En av de største attraksjonene i Spark er muligheten til å skalere beregning massivt, og det er akkurat det du trenger for maskinlæringsalgoritmer. Men begrensningen er at alle maskinlæringsalgoritmer ikke kan parallelliseres effektivt. Hver algoritme har sine egne utfordringer for parallellisering, enten det er oppgaveparallellisme eller dataparallellisme.

Når det er sagt, blir Spark de facto plattformen for å bygge algoritmer og applikasjoner for maskinlæring.Du kan sjekke ut kuratert av bransjeeksperter før du fortsetter med bloggen.Utviklerne som jobber med Spark MLlib implementerer stadig flere maskinalgoritmer på en skalerbar og kortfattet måte i Spark-rammeverket. Gjennom denne bloggen vil vi lære begrepene Machine Learning, Spark MLlib, dets verktøy, algoritmer og en komplett brukssak for Movie Recommendation System.





Følgende emner vil bli dekket i denne bloggen:

  1. Hva er maskinlæring?
  2. Spark MLlib Oversikt
  3. Spark MLlib Tools
  4. MLlib algoritmer
  5. Bruk sak - Filmanbefalingssystem

Hva er maskinlæring?

Utviklet fra studiet av mønstergjenkjenning og beregningslæringsteori i kunstig intelligens, utforsker maskinlæring studiet og konstruksjonen av algoritmer som kan lære av og komme med spådommer på data - slike algoritmer overvinnes etter strengt statiske programinstruksjoner ved å ta datadrevne spådommer eller beslutninger , gjennom å bygge en modell fra prøveinnganger.



Maskinlæring - Spark MLlib - Edureka Figur: Machine Learning verktøy

Maskinlæring er nært knyttet til beregningsstatistikk, som også fokuserer på prediksjon ved bruk av datamaskiner. Den har sterke bånd til matematisk optimalisering, som leverer metoder, teori og applikasjonsdomener til feltet. Innen feltet dataanalyse er maskinlæring en metode som brukes til å utvikle komplekse modeller og algoritmer som egner seg til en prediksjon som i kommersiell bruk er kjent som prediktiv analyse.

Det er tre kategorier av maskinlæringsoppgaver:



  1. Veiledet læring : Overvåket læring er der du har inputvariabler (x) og en outputvariabel (Y), og du bruker en algoritme for å lære kartleggingsfunksjonen fra input til output.
  2. Uovervåket læring : Uovervåket læring er en type maskinlæringsalgoritme som brukes til å trekke slutninger fra datasett som består av inngangsdata uten merkede svar.
  3. Forsterkningslæring : Et dataprogram samhandler med et dynamisk miljø der det må utføre et bestemt mål (for eksempel å kjøre et kjøretøy eller spille et spill mot en motstander). Programmet gir tilbakemelding når det gjelder belønninger og straffer når det navigerer i problemområdet.Dette konseptet kalles forsterkningslæring.

Spark MLlib Oversikt

Spark MLlib brukes til å utføre maskinlæring i Apache Spark. MLlib består av populære algoritmer og verktøy.

MLlib Oversikt:

  • spark.mllib inneholder den opprinnelige API-en bygget på RDD-er. Den er for tiden i vedlikeholdsmodus.
  • spark.ml gir API på høyere nivå bygget på toppen av DataFrames forkonstruere ML-rørledninger. spark.ml er det primære Machine Learning API for Spark for øyeblikket.

Spark MLlib Tools

Spark MLlib tilbyr følgende verktøy:

  • ML-algoritmer: ML-algoritmer utgjør kjernen i MLlib. Disse inkluderer vanlige læringsalgoritmer som klassifisering, regresjon, klynging og samarbeidsfiltrering.
  • Funksjon: Funksjoner inkluderer ekstraksjon av funksjoner, transformasjon, dimensjonsreduksjon og utvalg.
  • Rørledninger: Rørledninger gir verktøy for å konstruere, evaluere og justere ML-rørledninger.
  • Standhaftighet: Persistence hjelper til med å lagre og laste algoritmer, modeller og rørledninger.
  • Verktøy: Verktøyfor lineær algebra, statistikk og datahåndtering.

MLlib algoritmer

De populære algoritmene og verktøyene i Spark MLlib er:

  1. Grunnleggende statistikk
  2. Regresjon
  3. Klassifisering
  4. Anbefalingssystem
  5. Gruppering
  6. Dimensjonalitetsreduksjon
  7. Funksjonsekstraksjon
  8. Optimalisering

La oss se på noen av disse i detalj.

Grunnleggende statistikk

Grunnleggende statistikk inkluderer de mest grunnleggende maskinlæringsteknikkene. Disse inkluderer:

  1. Oppsummeringsstatistikk : Eksempler inkluderer gjennomsnitt, varians, count, max, min og numNonZeros.
  2. Korrelasjoner : Spearman og Pearson er noen måter å finne sammenheng på.
  3. Stratifisert prøvetaking : Disse inkluderer sampleBykey og sampleByKeyExact.
  4. Hypotesetesting : Pearson’s chi-squared test er et eksempel på hypotesetesting.
  5. Tilfeldig datagenerering : RandomRDDs, Normal og Poisson brukes til å generere tilfeldige data.

Regresjon

Regresjon analyse er en statistisk prosess for å estimere sammenhengen mellom variabler. Den inkluderer mange teknikker for modellering og analyse av flere variabler når fokuset er på forholdet mellom en avhengig variabel og en eller flere uavhengige variabler. Mer spesifikt hjelper regresjonsanalyse en å forstå hvordan den typiske verdien av den avhengige variabelen endres når en av de uavhengige variablene varieres, mens de andre uavhengige variablene holdes faste.

Regresjonsanalyse er mye brukt til prediksjon og prognoser, der bruken av den har betydelig overlapping med maskinlæring. Regresjonsanalyse brukes også for å forstå hvilke av de uavhengige variablene som er relatert til den avhengige variabelen, og for å utforske formene til disse relasjonene. Under begrensede omstendigheter kan regresjonsanalyse brukes til å utlede årsaksforhold mellom de uavhengige og avhengige variablene.

Klassifisering

Klassifisering er problemet med å identifisere hvilken av et sett av kategorier (underpopulasjoner) en ny observasjon hører til, på grunnlag av et opplæringssett med data som inneholder observasjoner (eller forekomster) hvis medlemskap i kategorien er kjent. Det er et eksempel på mønstergjenkjenning.

Her vil et eksempel være å tildele en gitt e-post til 'spam' eller 'ikke-spam' klasser eller tildele en diagnose til en gitt pasient som beskrevet av observerte egenskaper hos pasienten (kjønn, blodtrykk, tilstedeværelse eller fravær av visse symptomer, etc.).

Anbefalingssystem

TIL anbefalingssystem er en underklasse av informasjonsfiltreringssystem som søker å forutsi 'rangering' eller 'preferanse' som en bruker vil gi et element. Anbefalingssystemer har blitt stadig mer populære de siste årene, og brukes i en rekke områder, inkludert filmer, musikk, nyheter, bøker, forskningsartikler, søk, sosiale koder og produkter generelt.

Anbefalingssystemer produserer vanligvis en liste over anbefalinger på en av to måter - gjennom samarbeidende og innholdsbasert filtrering eller personlighetsbasert tilnærming.

  1. Samarbeidsfiltrering nærmer seg å bygge en modell fra en brukers tidligere oppførsel (varer som tidligere er kjøpt eller valgt og / eller numerisk rangering gitt til disse elementene), samt lignende beslutninger tatt av andre brukere. Denne modellen brukes deretter til å forutsi varer (eller rangeringer for varer) som brukeren kan ha interesse av.
  2. Innholdsbasert filtrering tilnærminger bruker en serie av diskrete egenskaper til et element for å anbefale tilleggsartikler med lignende egenskaper.

Videre kombineres disse tilnærmingene ofte som Hybrid Recommender Systems.

Gruppering

Gruppering er oppgaven med å gruppere et sett med objekter på en slik måte at objekter i samme gruppe (kalt en klynge) er mer like (i en eller annen forstand) til hverandre enn de i andre grupper (klynger). Så det er hovedoppgaven med utforskende datautvinning, og en vanlig teknikk for statistisk dataanalyse, brukt på mange felt, inkludert maskinlæring, mønstergjenkjenning, bildeanalyse, informasjonsinnhenting, bioinformatikk, datakomprimering og datagrafikk.

Dimensjonalitetsreduksjon

Dimensjonalitetsreduksjon er prosessen med å redusere antall tilfeldige variabler som vurderes, via å skaffe et sett med hovedvariabler. Det kan deles inn i funksjonsvalg og funksjonsutvinning.

  1. Valg av funksjoner: Funksjonsvalg finner et delsett av de opprinnelige variablene (også kalt funksjoner eller attributter).
  2. Funksjonsekstraksjon: Dette transformerer dataene i det høydimensjonale rommet til et rom med færre dimensjoner. Datatransformasjonen kan være lineær, som i Principal Component Analysis (PCA), men det finnes også mange ikke-lineære dimensjonalitetsteknikker.

Funksjonsekstraksjon

Funksjonsekstraksjon starter fra et innledende sett med måledata og bygger avledede verdier (funksjoner) ment å være informative og ikke-overflødige, noe som letter de påfølgende lærings- og generaliseringstrinnene, og i noen tilfeller fører til bedre menneskelige tolkninger. Dette er relatert til dimensjonsreduksjon.

Optimalisering

Optimalisering er utvalget av de besteelement (med hensyn til noen kriterier) fra noen sett med tilgjengelige alternativer.

I det enkleste tilfellet består et optimaliseringsproblem av å maksimere eller minimere en reell funksjon ved systematisk å velge inngangsverdier fra et tillatt sett og beregne verdien av funksjonen. Generaliseringen av optimaliseringsteori og teknikker til andre formuleringer omfatter et stort område med anvendt matematikk. Mer generelt inkluderer optimalisering å finne “best tilgjengelige” verdier for en objektiv funksjon gitt et definert domene (eller input),inkludert en rekke forskjellige typer objektive funksjoner og forskjellige typer domener.

Bruk sak - Filmanbefalingssystem

Problemstilling: Å bygge et filmanbefalingssystem som anbefaler filmer basert på brukerens preferanser ved hjelp av Apache Spark.

Våre krav:

Så la oss vurdere kravene for å bygge vårt filmanbefalingssystem:

  1. Behandle enorm mengde data
  2. Inndata fra flere kilder
  3. Lett å bruke
  4. Rask behandling

Som vi kan vurderevåre krav, trenger vi det beste Big Data-verktøyet for å behandle store data på kort tid. Derfor Apache Spark er det perfekte verktøyet for å implementere vårt filmanbefalingssystem.

La oss nå se på flytdiagrammet for systemet vårt.

Som vi ser, bruker følgende Streaming fra Spark Streaming. Vi kan streame i sanntid eller lese data fra Hadoop HDFS.

Få datasett:

For vårt filmanbefalingssystem kan vi få brukervurderinger fra mange populære nettsteder som IMDB, Rotten Tomatoes og Times Movie Ratings. Dette datasettet er tilgjengelig i mange formater som CSV-filer, tekstfiler and databaser. Vi kan enten streame dataene direkte fra nettstedene eller laste ned og lagre dem ivårt lokale filsystem eller HDFS.

hva er komponentene til Java-plattformen?

Datasett:

Figuren nedenfor viser hvordan vi kan samle datasett fra populære nettsteder.

Når vi strømmer dataene inn i Spark, ser det litt slik ut.

Maskinlæring:

Hele anbefalingssystemet er basert på maskinlæringsalgoritme Alternerende minste firkanter . Her er ALS en type regresjonsanalyse der regresjon brukes til å tegne en linje midt i datapunktene på en slik måte at summen av kvadratene til avstanden fra hvert datapunkt minimeres. Dermed blir denne linjen deretter brukt til å forutsi verdiene til funksjonen der den oppfyller verdien av den uavhengige variabelen.

Den blå linjen i diagrammet er den best egnede regresjonslinjen. For denne linjen er verdien av dimensjonen D minimum. Alle andre røde linjer vil alltid være lenger fra datasettet som helhet.

Spark MLlib Implementering:

  1. Vi vil bruke Collaborative Filtering (CF) til å forutsi rangeringene for brukere for bestemte filmer basert på deres rangeringer for andre filmer.
  2. Vi samarbeider deretter dette med andre brukeres rangering for den aktuelle filmen.
  3. For å få følgende resultater fra maskinlæringen vår, må vi bruke Spark SQL’s DataFrame, Dataset og SQL Service.

Her er pseudokoden for programmet vårt:

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 ('* Read Data from Movie CSV file * ') //rawData.first () val rawRatings = rawData.map (* Del rawData på tabulatoravgrenser *) val ratings = rawRatings.map {* Map case array of User, Movie and Rating *} // Training the data val model = ALS.train (rangeringer, 50, 5, 0.01) model.userFeatures model.userFeatures.count model.productFeatures.count val predictedRating = * Forutsi for bruker 789 for film 123 * val userId = * bruker 789 * val K = 10 val topKRecs = model.recommendProducts (* Anbefaler for bruker for den spesielle verdien av K *) println (topKRecs.mkString ('')) val films = sc.textFile ('* Read Movie List Data *') val titler = films.map (line => line.split ('|'). ta ( 2)). Kart (array => (array (0) .toInt, array (1))). CollectAsMap () val titlerRDD = films.map (line => line.split ('|'). Ta (2) ) .map (array => (array (0) .toInt, array (1))). cache () titler (123) val moviesForUser = rangeringer. * Søk etter bruker 789 * val sqlContext = * Lag SQL Context * val filmer = sqlContext. * Lag en DataFrame av anbefalte filmer * filmsRecommended.registerTempTable ('filmsRecommendedTable') sqlContext.sql ('Select count (*) from moviesRecommendedTable'). foreach (println) moviesForUser. * Sorter rangeringene for bruker 789 * .map (* Kartlegg rangering til filmtittel *). * Skriv ut karakteren * val results = filmsForUser.sortBy (-_. Rating). Ta (30) .map (rating => (titler (rating.product), rating.rating))}}

Når vi genererer spådommer, kan vi bruke Spark SQL til å lagre resultatene i et RDBMS-system. Videre kan dette vises i en webapplikasjon.

Resultater:

Figur: Filmer anbefalt for bruker 77

Hurra! Vi har dermed opprettet et filmanbefalingssystem med Apache Spark. Med dette har vi dekket bare en av de mange populære algoritmene Spark MLlib har å tilby. Vi vil lære mer om maskinlæring i de kommende bloggene om datavitenskap algoritmer.

Fremover kan du fortsette å lære Apache Spark med Spark Tutorial, Spark Streaming Tutorialog Spark Interview Spørsmål.Edureka er dedikert til å tilby en best mulig læringsopplevelse online.

Sjekk ut vår Jeg f du ønsker å lære Spark og bygge en karriere innen Spark og bygge ekspertise for å utføre storskala databehandling ved hjelp av RDD, Spark Streaming, SparkSQL, MLlib, GraphX ​​og Scala med virkelige brukssaker.