Spark MLlib - Apache Sparkin koneoppimiskirjasto



Tämä Spark MLlib -blogi esittelee sinut Apache Sparkin Machine Learning -kirjastoon. Se sisältää Spark MLlib -ohjelmaa käyttävän elokuvasuositussysteemiprojektin.

Spark MLlib on Apache Sparkin koneoppimisen komponentti.Yksi Sparkin tärkeimmistä nähtävyyksistä on kyky laskea laskentaa massiivisesti, ja juuri sitä tarvitset koneoppimisalgoritmeille. Mutta rajoitus on, että kaikkia koneoppimisalgoritmeja ei voida tehokkaasti rinnastaa. Jokaisella algoritmilla on omat haasteensa rinnakkaistamiselle, olipa kyseessä tehtävien tai tietojen rinnakkaisuus.

Tämän sanottuaan Sparkista on tulossa tosiasiallinen alusta koneoppimisalgoritmien ja -sovellusten rakentamiseen.No, voit tarkistaa teollisuusasiantuntijoiden kuratoima ennen blogin jatkamista.Spark MLlibin parissa työskentelevät kehittäjät toteuttavat yhä useampia konealgoritmeja skaalattavasti ja ytimekkäästi Spark-kehyksessä. Tämän blogin kautta opimme koneoppimisen, Spark MLlibin, sen apuohjelmien, algoritmien ja elokuvasuositusten kokonaiskäytön käsitteet.





Seuraavat aiheet käsitellään tässä blogissa:

  1. Mikä on koneoppiminen?
  2. Spark MLlib -esittely
  3. Spark MLlib -työkalut
  4. MLlib-algoritmit
  5. Käytä tapausta - elokuvan suositusjärjestelmä

Mikä on koneoppiminen?

Keinotekoisen älykkyyden mallintunnistuksen ja laskennallisen oppimisen teorian tutkimuksesta kehittynyt koneoppiminen tutkii algoritmien tutkimista ja rakentamista, jotka voivat oppia datasta ja tehdä siitä ennusteita - tällaiset algoritmit voitetaan tiukasti staattisten ohjelmaohjeiden avulla tekemällä dataan perustuvia ennusteita tai päätöksiä , rakentamalla malli otospanoksista.



toiminnon ylikuormitus c ++: ssa

Koneoppiminen - Spark MLlib - Edureka Kuva: Koneoppimisen työkalut

Koneoppiminen liittyy läheisesti laskennallisiin tilastoihin, joissa keskitytään myös ennusteiden tekemiseen tietokoneiden avulla. Sillä on vahvat siteet matemaattiseen optimointiin, joka toimittaa menetelmät, teorian ja sovellusalueet kentälle. Tietojen analysoinnin alalla koneoppiminen on menetelmä, jolla kehitetään monimutkaisia ​​malleja ja algoritmeja, jotka soveltuvat ennusteelle, joka kaupallisessa käytössä tunnetaan ennustavana analyysinä.

Koneoppimistehtäviä on kolme luokkaa:



  1. Ohjattu oppiminen : Ohjatussa oppimisessa on syötemuuttujia (x) ja ulostulomuuttujia (Y), ja algoritmin avulla opit kartoitustoiminnon tulosta lähtöön.
  2. Valvomaton oppiminen : Valvomaton oppiminen on eräänlainen koneoppimisalgoritmi, jota käytetään päätelmien tekemiseen syötetiedoista koostuvista aineistoista ilman merkittyjä vastauksia.
  3. Vahvistusoppiminen : Tietokoneohjelma on vuorovaikutuksessa dynaamisen ympäristön kanssa, jossa sen on suoritettava tietty tavoite (kuten ajaa ajoneuvoa tai pelata peliä vastustajaa vastaan). Ohjelma saa palautetta palkinnoista ja rangaistuksista, kun se liikkuu ongelmatilassaan.Tätä käsitettä kutsutaan vahvistukseksi.

Spark MLlib -esittely

Spark MLlibiä käytetään koneoppimiseen Apache Sparkissa. MLlib koostuu suosituista algoritmeista ja apuohjelmista.

MLlib-yleiskatsaus:

  • kipinä.mllib sisältää alkuperäisen sovellusliittymän, joka on rakennettu RDD: n päälle. Se on tällä hetkellä huoltotilassa.
  • kipinä.ml tarjoaa korkeamman tason sovellusliittymän, joka on rakennettu verkkotunnuksen DataFrames päälleML-putkistojen rakentaminen. kipinä.ml on Sparkin ensisijainen koneoppimisen sovellusliittymä tällä hetkellä.

Spark MLlib -työkalut

Spark MLlib tarjoaa seuraavat työkalut:

  • ML-algoritmit: ML-algoritmit muodostavat MLlibin ytimen. Näitä ovat yleiset oppimisalgoritmit, kuten luokittelu, regressio, klusterointi ja yhteistyösuodatus.
  • Esittely: Esittely sisältää ominaisuuksien poimimisen, muunnoksen, ulottuvuuden pienentämisen ja valinnan.
  • Putket: Putkilinjat tarjoavat työkaluja ML-putkilinjojen rakentamiseen, arviointiin ja viritykseen.
  • Sitkeys: Pysyvyys auttaa algoritmien, mallien ja putkilinjojen tallentamisessa ja lataamisessa.
  • Apuohjelmat: Apuohjelmatlineaariselle algebralle, tilastoille ja datankäsittelylle.

MLlib-algoritmit

Spark MLlibin suosituimmat algoritmit ja apuohjelmat ovat:

  1. Perustilastot
  2. Regressio
  3. Luokittelu
  4. Suositusjärjestelmä
  5. Ryhmittely
  6. Ulottuvuuden pienentäminen
  7. Ominaisuuksien erottaminen
  8. Optimointi

Katsotaanpa joitain näistä yksityiskohtaisesti.

Perustilastot

Perustilastot sisältää alkeelliset koneoppimistekniikat. Nämä sisältävät:

  1. Yhteenvetotilastot : Esimerkkejä ovat keskiarvo, varianssi, määrä, max, min ja numNonZeros.
  2. Korrelaatiot : Spearman ja Pearson ovat joitain tapoja löytää korrelaatio.
  3. Kerrostettu näytteenotto : Näitä ovat sampleBykey ja sampleByKeyExact.
  4. Hypoteesin testaus : Pearsonin khi-neliötesti on esimerkki hypoteesitestauksesta.
  5. Satunnainen tietojen tuottaminen : RandomRDDs, Normal ja Poisson käytetään tuottamaan satunnaisia ​​tietoja.

Regressio

Regressio analyysi on tilastollinen prosessi muuttujien välisten suhteiden arvioimiseksi. Se sisältää monia tekniikoita useiden muuttujien mallintamiseksi ja analysoimiseksi, kun keskitytään riippuvan muuttujan ja yhden tai useamman itsenäisen muuttujan väliseen suhteeseen. Regressioanalyysi auttaa tarkemmin ymmärtämään, kuinka riippuvan muuttujan tyypillinen arvo muuttuu, kun jotakin riippumatonta muuttujaa muutetaan, kun taas muita riippumattomia muuttujia pidetään kiinteinä.

Regressioanalyysiä käytetään laajalti ennustamiseen ja ennustamiseen, jossa sen käytöllä on huomattavaa päällekkäisyyttä koneoppimisen kanssa. Regressioanalyysiä käytetään myös ymmärtämään, mitkä riippumattomat muuttujat liittyvät riippuvaan muuttujaan, ja tutkimaan näiden suhteiden muotoja. Rajoitetuissa olosuhteissa regressioanalyysiä voidaan käyttää johtopäätökseen riippumattomien ja riippuvien muuttujien välillä.

Luokittelu

Luokittelu on ongelma tunnistaa, mihin luokkaryhmiin (alaryhmiin) uusi havainto kuuluu, sellaisen tietojoukon perusteella, joka sisältää havaintoja (tai tapauksia), joiden luokkajäsenyys on tiedossa. Se on esimerkki kuvion tunnistamisesta.

Tässä esimerkki olisi tietyn sähköpostin osoittaminen roskapostiluokkiin tai ei-roskapostiluokkiin tai diagnoosin määrääminen tietylle potilaalle potilaan havaittujen ominaisuuksien (sukupuoli, verenpaine, tiettyjen oireiden esiintyminen tai puuttuminen) mukaisesti. jne.).

Suositusjärjestelmä

TO suositusjärjestelmä on tietojen suodatusjärjestelmän alaluokka, joka pyrkii ennustamaan 'luokituksen' tai 'mieltymyksen', jonka käyttäjä antaisi tuotteelle. Suosittelijärjestelmät ovat tulleet yhä suositummiksi viime vuosina, ja niitä käytetään monilla aloilla, mukaan lukien elokuvat, musiikki, uutiset, kirjat, tutkimusartikkelit, hakukyselyt, sosiaaliset tunnisteet ja tuotteet yleensä.

Suositusjärjestelmät tuottavat tyypillisesti luettelon suosituksista kahdella tavalla - yhteistyö- ja sisältöpohjaisen suodatuksen tai persoonallisuusperusteisen lähestymistavan avulla.

  1. Yhteistyösuodatus lähestymistapa mallin rakentamiseen käyttäjän aikaisemmasta käyttäytymisestä (aiemmin ostetut tai valitut tuotteet ja / tai näille tuotteille annetut numeeriset arvosanat) sekä muiden käyttäjien tekemistä vastaavista päätöksistä. Tätä mallia käytetään sitten ennustamaan kohteita (tai luokituksia tuotteille), joista käyttäjä voi olla kiinnostunut.
  2. Sisältöpohjainen suodatus lähestymistavat käyttävät sarjan erillisiä ominaisuuksia suositellakseen muita tuotteita, joilla on samanlaiset ominaisuudet.

Lisäksi nämä lähestymistavat yhdistetään usein hybridisuositusjärjestelminä.

Ryhmittely

Ryhmittely on tehtävänä ryhmittää objektijoukko siten, että saman ryhmän (kutsutaan klusteriksi) kohteet ovat samanlaisempia (jossakin mielessä tai toisessa) toisiinsa nähden kuin muissa ryhmissä (klustereissa) olevat. Joten, se on etsivän tiedonlouhinnan päätehtävä ja yleinen tekniikka tilastolliseen data-analyysiin, jota käytetään monilla aloilla, mukaan lukien koneoppiminen, mallintunnistus, kuva-analyysi, tiedonhaku, bioinformatiikka, tietojen pakkaaminen ja tietokonegrafiikka.

Ulottuvuuden pienentäminen

Ulottuvuuden pienentäminen on prosessi tarkasteltavien satunnaismuuttujien määrän vähentämiseksi saamalla joukko päämuuttujia. Se voidaan jakaa ominaisuuksien valintaan ja ominaisuuksien poimintaan.

  1. Ominaisuuden valinta: Ominaisuuden valinta etsii osajoukon alkuperäisistä muuttujista (joita kutsutaan myös ominaisuuksiksi tai määritteiksi).
  2. Ominaisuuksien erottaminen: Tämä muuttaa tiedot suurdimensionaalisesta avaruudesta tilaksi, jossa on vähemmän ulottuvuuksia. Datan muunnos voi olla lineaarinen, kuten pääkomponenttianalyysissä (PCA), mutta myös monia epälineaarisia ulottuvuuksien vähentämistekniikoita on olemassa.

Ominaisuuksien erottaminen

Ominaisuuksien erottaminen alkaa alkuperäisestä mitattujen tietojen joukosta ja rakentaa johdetut arvot (piirteet), jotka on tarkoitettu informatiivisiksi ja tarpeettomiksi, helpottamalla myöhempiä oppimis- ja yleistämisvaiheita ja johtamalla joissakin tapauksissa parempiin ihmisen tulkintoihin. Tämä liittyy ulottuvuuden vähentämiseen.

Optimointi

Optimointi on paras valinta(jonkin kriteerin osalta) joistakin käytettävissä olevista vaihtoehdoista.

Yksinkertaisimmassa tapauksessa optimointiongelma koostuu todellisen funktion maksimoimisesta tai minimoimisesta valitsemalla järjestelmällisesti tuloarvot sallitusta joukosta ja laskemalla funktion arvo. Optimointiteorian ja -tekniikoiden yleistäminen muihin formulaatioihin käsittää laajan soveltavan matematiikan alueen. Optimointi sisältää yleisemmin jonkin tavoitetoiminnon 'parhaan käytettävissä olevan' arvon löytämisen tietylle toimialueelle (tai syötteelle),mukaan lukien erilaisia ​​erityyppisiä objektiivisia toimintoja ja erityyppisiä verkkotunnuksia.

Käytä tapausta - elokuvan suositusjärjestelmä

Ongelma: Rakentaa elokuvasuositusjärjestelmä, joka suosittelee elokuvia käyttäjän mieltymysten perusteella Apache Sparkin avulla.

Vaatimuksemme:

Joten, arvioikaa vaatimukset elokuvasuositusjärjestelmän rakentamiseksi:

  1. Käsittele valtava määrä tietoa
  2. Tulo useista lähteistä
  3. Helppokäyttöinen
  4. Nopea käsittely

Kuten voimme arvioidaVaatimuksemme mukaan tarvitsemme parhaan Big Data -työkalun suurten tietojen käsittelyyn lyhyessä ajassa. Siksi Apache Spark on täydellinen työkalu elokuvasuositusjärjestelmän toteuttamiseen.

Tarkastellaan nyt järjestelmämme vuokaaviota.

Kuten näemme, seuraavat käyttävät suoratoistoa Spark-suoratoistosta. Voimme suoratoistaa reaaliajassa tai lukea tietoja Hadoop HDFS: stä.

Tietojoukon saaminen:

Elokuvisuositussysteemillemme voimme saada käyttäjäarvioita monilta suosituilta verkkosivustoilta, kuten IMDB, Rotten Tomatoes ja Times Movie Ratings. Tämä tietojoukko on saatavana monissa muodoissa, kuten CSV-tiedostot, tekstitiedostot atietokannat. Voimme joko suoratoistaa tietoja suorana verkkosivustoilta tai ladata ja tallentaa niihinpaikallinen tiedostojärjestelmämme tai HDFS.

Aineisto:

Alla oleva kuva osoittaa, kuinka voimme kerätä tietoaineistoa suosituilta verkkosivustoilta.

Kun suoratoistamme tietoja Sparkiin, se näyttää hieman tältä.

Koneoppiminen:

Koko suositusjärjestelmä perustuu koneoppimisalgoritmiin Vuorottelevat vähiten neliöt . Tässä ALS on regressioanalyysityyppi, jossa regressiota käytetään piirtämään viiva datapisteiden keskelle siten, että etäisyys neliöiden summa kustakin datapisteestä minimoidaan. Siten tätä riviä käytetään ennustamaan funktion arvot, jos se täyttää riippumattoman muuttujan arvon.

Kaavion sininen viiva on parhaiten sopiva regressioviiva. Tälle riville ulottuvuuden D arvo on vähimmäisarvo. Kaikki muut punaiset viivat ovat aina kauempana aineistosta kokonaisuutena.

Spark MLlib -toteutus:

  1. Käytämme yhteistyösuodatusta (CF) ennustamaan käyttäjien arvioita tietyille elokuville heidän muiden elokuvien arvioiden perusteella.
  2. Teemme tämän jälkeen yhteistyötä muiden käyttäjien arvioiden kanssa kyseiselle elokuvalle.
  3. Seuraavien koneoppimisen tulosten saamiseksi meidän on käytettävä Spark SQL: n DataFrame-, Dataset- ja SQL Service -palveluja.

Tässä on ohjelmamme pseudokoodi:

import org.apache.spark.mllib.recommendation.ALS import org.apache.spark.mllib.recommendation.Rating import org.apache.spark.SparkConf // Tuo muut tarvittavat paketit -objekti Elokuva {def main (args: Array [String] ) {val conf = new SparkConf (). setAppName ('Movie'). setMaster ('local [2]') val sc = new SparkContext (conf) val rawData = sc.textFile ('* Lue tiedot elokuvan CSV-tiedostosta * ') //rawData.first () val rawRatings = rawData.map (* Jaa rawData välilehden erottimessa *) val luokitukset = rawRatings.map {* Kartan tapausryhmä käyttäjistä, elokuvista ja luokituksista *} // data val -mallin kouluttaminen = ALS.train (luokitukset, 50, 5, 0,01) model.userFeatures model.userFeatures.count model.productFeatures.count val predictedRating = * Ennustaa käyttäjän 789 elokuvalle 123 * val userId = * Käyttäjä 789 * val K = 10 val topKRecs = model.recommendProducts (* Suosittele käyttäjälle K: n tietylle arvolle) println (topKRecs.mkString ('')) val movies = sc.textFile ('* Lue elokuvaluettelon tiedot *') val otsikot = movies.map (rivi => rivi.split ('|'). ota ( 2)). Map (array => (array (0) .toInt, array (1))). CollectAsMap () val titleRDD = elokuvat.map (line => line.split ('|'). Take (2) ) .map (array => (array (0) .toInt, array (1))). välimuisti () otsikot (123) val moviesForUser = luokitukset. * Etsi käyttäjää 789 * val sqlContext = * Luo SQL-konteksti * val moviesRecommended = sqlContext. * Luo suositeltavien elokuvien DataFrame * moviesRecommended.registerTempTable ('moviesRecommendedTable') sqlContext.sql ('Valitse count (*) from moviesRecommendedTable'). foreach (println) moviesForUser. * Lajittele käyttäjän 789 * .map arviot (* Kartoita luokitus elokuvan otsikkoon *). * Tulosta luokitus * val tulokset = moviesForUser.sortBy (-_. Rating) .take (30) .map (rating => (otsikot (rating.product), rating.rating))}}

Kun olemme luoneet ennusteet, voimme käyttää Spark SQL: ää tallentamaan tulokset RDBMS-järjestelmään. Lisäksi tämä voidaan näyttää verkkosovelluksessa.

Tulokset:

Kuva: Elokuvaa suositellaan käyttäjälle 77

Hurraa! Olemme siten luoneet menestyksekkäästi elokuvasuositusten järjestelmän Apache Sparkin avulla. Tällä olemme käsittäneet vain yhden Spark MLlibin tarjoamista monista suosituista algoritmeista. Opimme lisää koneoppimisesta tulevissa tietojenkäsittelyalgoritmien blogeissa.

Voit jatkaa Apache Sparkin oppimista Spark Tutorialilla, Spark Streaming Tutorialillaja Spark haastattelukysymykset.Edureka on omistautunut tarjoamaan parhaan mahdollisen oppimiskokemuksen verkossa.

Tarkista meidän i Jos haluat oppia Sparkia ja rakentaa uraa Sparkin alueella ja rakentaa asiantuntemusta laajamittaisen tietojenkäsittelyn suorittamiseksi RDD: n, Spark Streamingin, SparkSQL: n, MLlibin, GraphX: n ja Scalan avulla tosielämän käyttötapauksissa.