Spark MLlib - Az Apache Spark gépi tanulási könyvtára

Ez a Spark MLlib blog bemutatja az Apache Spark Machine Learning könyvtárát. Ez magában foglalja a Spark MLlib használatával készült Filmajánló Rendszer projektet.

Spark MLlib az Apache Spark Machine Learning komponense.A Spark egyik fő vonzereje a számítás tömeges skálázásának képessége, és pontosan erre van szükség a gépi tanulási algoritmusokhoz. De a korlát az, hogy az összes gépi tanulási algoritmust nem lehet hatékonyan párhuzamosítani. Mindegyik algoritmusnak megvannak a maga kihívásai a párhuzamosításra, legyen szó feladat párhuzamosságról vagy adat párhuzamosságról.



Ennek ellenére a Spark a gépi tanulási algoritmusok és alkalmazások építésének de facto platformjává válik.Nos, megnézheti a az iparszakértők gondozásában, mielőtt folytatná a blogot.A Spark MLlib-en dolgozó fejlesztők egyre több gépi algoritmust alkalmaznak méretezhető és tömör módon a Spark keretrendszerben. Ezen a blogon keresztül megismerhetjük a gépi tanulás, a Spark MLlib fogalmait, segédprogramjait, algoritmusait és a Filmajánló Rendszer teljes felhasználási esetét.



A blog a következő témákkal foglalkozik:

  1. Mi az a gépi tanulás?
  2. Spark MLlib áttekintés
  3. Spark MLlib Tools
  4. MLlib algoritmusok
  5. Használjon esetet - filmajánló rendszer

Mi az a gépi tanulás?

A mesterséges intelligenciában a mintafelismerés és a számítási tanulás elméletének tanulmányozása eredményeként a gépi tanulás olyan algoritmusok tanulmányozását és felépítését vizsgálja, amelyek tanulhatnak az adatokból és előrejelzéseket tehetnek ezekről az algoritmusokról - szigorúan statikus programutasítások követésével, adatközpontú előrejelzések vagy döntések meghozatalával. , a minta bemenetekből egy modell felépítésével.



Gépi tanulás - Spark MLlib - Edureka Ábra: Gépi tanulási eszközök

A gépi tanulás szorosan kapcsolódik a számítási statisztikához, amely a számítógépek használatával történő előrejelzésre is összpontosít. Szoros kapcsolatban áll a matematikai optimalizálással, amely módszereket, elméletet és alkalmazási területeket juttat el a terephez. Az adatelemzés területén a gépi tanulás olyan módszer, amelyet olyan komplex modellek és algoritmusok kidolgozására használnak, amelyek alkalmasak egy előrejelzésre, amelyet kereskedelmi használatban prediktív elemzésnek neveznek.

A gépi tanulási feladatoknak három kategóriája van:



  1. Felügyelt tanulás : A felügyelt tanulás során bemeneti változókkal (x) és kimeneti változóval (Y) rendelkezik, és algoritmus segítségével megtanulja a leképezési függvényt a bemenettől a kimenetig.
  2. Felügyelet nélküli tanulás : A felügyelet nélküli tanulás egyfajta gépi tanulási algoritmus, amelyet arra használnak, hogy címkézett válaszok nélküli bemeneti adatokból álló adatkészletekből következtetéseket vonjon le.
  3. Megerősítő tanulás : A számítógépes program kölcsönhatásba lép egy dinamikus környezettel, amelyben bizonyos célt kell teljesítenie (például járművet vezetnie vagy játékot játszania az ellenféllel szemben). A program visszajelzéseket kap jutalmak és büntetések tekintetében, miközben navigál a problématerületén. Ezt a fogalmat megerősítő tanulásnak nevezzük.

Spark MLlib áttekintés

A Spark MLlib gépi tanulás végrehajtására szolgál az Apache Spark alkalmazásban. Az MLlib népszerű algoritmusokat és segédprogramokat tartalmaz.

MLlib áttekintés:

  • szikra.mllib az RDD-k tetejére épített eredeti API-t tartalmazza. Jelenleg karbantartási módban van.
  • szikra.ml magasabb szintű API-t biztosít a DataFrames tetejére ML csővezetékek építése. szikra.ml jelenleg a Spark elsődleges Machine Learning API-ja.

Spark MLlib Tools

A Spark MLlib a következő eszközöket kínálja:

  • ML algoritmusok: Az MLlib magját az ML algoritmusok alkotják. Ide tartoznak olyan általános tanulási algoritmusok, mint a besorolás, a regresszió, a klaszterezés és az együttműködésen alapuló szűrés.
  • Jellemzés: A kiemelés magában foglalja a funkciók kibontását, átalakítását, a méret csökkentését és a kiválasztást.
  • Csővezetékek: A csővezetékek eszközöket nyújtanak az ML csővezetékek összeállításához, kiértékeléséhez és hangolásához.
  • Kitartás: A perzisztencia segít algoritmusok, modellek és csővezetékek mentésében és betöltésében.
  • Segédprogramok: segédprogramok a lineáris algebra, a statisztika és az adatkezelés szempontjából.

MLlib algoritmusok

A Spark MLlib népszerű algoritmusai és segédprogramjai a következők:

  1. Alapstatisztika
  2. Regresszió
  3. Osztályozás
  4. Ajánlási rendszer
  5. Csoportosítás
  6. Dimenzionalitás csökkentés
  7. Feature Extraction
  8. Optimalizálás

Nézzünk meg ezek közül néhányat részletesen.

Alapstatisztika

Alapstatisztika magában foglalja a gépi tanulás legalapvetőbb technikáit. Ezek tartalmazzák:

  1. Összefoglaló statisztikák : Ilyenek például az átlag, a variancia, a szám, a max, a min és a numNonZeros.
  2. Összefüggések : Spearman és Pearson néhány módszer a korreláció megtalálására.
  3. Rétegelt mintavétel : Ezek közé tartozik a sampleBykey és a sampleByKeyExact.
  4. Hipotézis tesztelés : Pearson khi-négyzet tesztje a hipotézis tesztelésének egyik példája.
  5. Véletlenszerű adatgenerálás : RandomRDD-k, Normal és Poisson-t használnak véletlenszerű adatok előállításához.

Regresszió

Regresszió Az elemzés egy statisztikai folyamat a változók közötti kapcsolatok becslésére. Számos technikát tartalmaz több változó modellezésére és elemzésére, amikor a hangsúly egy függő változó és egy vagy több független változó közötti kapcsolatra irányul. Pontosabban, a regresszióanalízis segít megérteni, hogyan változik a függő változó tipikus értéke, ha bármelyik független változó változik, míg a többi független változó rögzítve marad.

A regresszióanalízist széles körben használják az előrejelzéshez és az előrejelzéshez, ahol annak használata jelentős átfedésben van a gépi tanulás területével. A regresszióanalízist arra is felhasználják, hogy megértsék, hogy a független változók közül melyik kapcsolódik a függő változóhoz, és feltárják e kapcsolatok formáit. Korlátozott körülmények között regresszió-analízissel lehet következtetni a kauzális összefüggésekre a független és a függő változók között.

Osztályozás

Osztályozás az a probléma, hogy egy megfigyeléseket (vagy példányokat) tartalmazó adatkészlet alapján meghatározzuk, hogy mely kategóriák (alcsoportok) halmazához tartozik egy új megfigyelés, amelynek kategóriatagsága ismert. Ez a mintafelismerés példája.

Itt egy példa lehet egy adott e-mail hozzárendelése „spam” vagy „nem spam” osztályokba, vagy diagnózis rendelése egy adott beteghez, a beteg megfigyelt jellemzőinek (nem, vérnyomás, bizonyos tünetek jelenléte vagy hiánya) leírása alapján. stb.).

Ajánlási rendszer

NAK NEK ajánlási rendszer az információszűrő rendszer egy alosztálya, amely meg kívánja jósolni azt a „minősítést” vagy „preferenciát”, amelyet a felhasználó egy tételnek adna. Az ajánló rendszerek az utóbbi években egyre népszerűbbek, és számos területen használják őket, ideértve a filmeket, zenét, híreket, könyveket, kutatási cikkeket, keresési lekérdezéseket, közösségi címkéket és általában a termékeket.

Az ajánló rendszerek általában kétféle módon készítik el az ajánlások listáját - együttműködési és tartalom-alapú szűrés vagy személyiség-alapú megközelítés révén.

  1. Együttműködő szűrés megközelítést alkalmaz a modell felépítéséhez a felhasználó múltbeli viselkedéséből (korábban megvásárolt vagy kiválasztott elemek és / vagy az adott elemeknek adott számértékek), valamint más felhasználók hasonló döntéseiből. Ezt a modellt ezután olyan elemek (vagy elemek értékelése) előrejelzésére használják, amelyekben a felhasználó érdeklődhet.
  2. Tartalomalapú szűrés megközelítések egy tétel diszkrét jellemzőinek sorozatát használják fel további hasonló tulajdonságú elemek ajánlására.

Ezeket a megközelítéseket gyakran kombinálják hibrid ajánló rendszerként.

Csoportosítás

Csoportosítás az a feladat, hogy egy objektumkészletet úgy csoportosítson, hogy az ugyanabban a csoportban lévő objektumok (úgynevezett klaszter) jobban hasonlítsanak (bizonyos értelemben vagy másképpen) egymásra, mint a más csoportokba (klaszterekbe). Tehát ez a feltáró adatbányászat fő feladata, és a statisztikai adatok elemzésének közös technikája, amelyet számos területen alkalmaznak, ideértve a gépi tanulást, a mintafelismerést, a képelemzést, az információ visszakeresését, a bioinformatikát, az adattömörítést és a számítógépes grafikát.

Dimenzionalitás csökkentés

Dimenzionalitás csökkentés a vizsgált véletlenszerű változók számának csökkentése, fő változók halmazának megszerzésével. Fel lehet osztani a jellemzők kiválasztására és a funkciók kibontására.

  1. Funkcióválasztás: A funkcióválasztás megtalálja az eredeti változók egy részét (más néven jellemzőket vagy attribútumokat).
  2. Funkció kibontása: Ez átalakítja a nagydimenziós térben lévő adatokat kevesebb dimenziósá. Az adattranszformáció lineáris lehet, mint a fő komponens elemzésben (PCA), de számos nemlineáris dimenziós redukciós technika is létezik.

Feature Extraction

Feature Extraction a mért adatok kezdeti sorozatából indul ki, és származtatott értékeket (jellemzőket) épít, amelyek informatívak és nem redundánsak, megkönnyítik a későbbi tanulási és általánosítási lépéseket, és egyes esetekben jobb emberi értelmezéshez vezetnek. Ez összefügg a dimenzió csökkentésével.

Optimalizálás

Optimalizálás a legjobbak kiválasztásaelem (valamilyen kritérium vonatkozásában) a rendelkezésre álló alternatívák néhány halmazából.

A legegyszerűbb esetben az optimalizálási probléma abból áll, hogy maximalizálja vagy minimalizálja a valós függvényeket azzal, hogy szisztematikusan választ egy bemeneti értéket egy megengedett halmazon belül, és kiszámítja a függvény értékét. Az optimalizálási elmélet és technikák általánosítása más formulációkra az alkalmazott matematika nagy területét foglalja magában. Általánosságban elmondható, hogy az optimalizálás magában foglalja valamilyen célfüggvény „elérhető legjobb” értékeinek megtalálását egy adott tartomány (vagy bemenet) mellett, beleértve a különféle típusú objektív funkciókat és a különböző típusú tartományokat.

Használjon esetet - filmajánló rendszer

Probléma nyilatkozat: Olyan filmajánló rendszer felépítése, amely filmeket javasol a felhasználó preferenciái alapján az Apache Spark használatával.

Követelményeink:

Vizsgáljuk meg tehát a filmajánló rendszer kiépítésének követelményeit:

  1. Hatalmas mennyiségű adat feldolgozása
  2. Bevitel több forrásból
  3. Könnyen kezelhető
  4. Gyors feldolgozás

Ahogy értékelni tudjukkövetelményeink szerint a legjobb Big Data eszközre van szükségünk a nagy adatok rövid időn belüli feldolgozásához. Ezért Apache Spark tökéletes eszköz filmajánló rendszerünk megvalósításához.

Most nézzük meg a rendszerünk folyamatábráját.

Mint láthatjuk, az alábbiak a Starkolást a Spark Streamingből használják. Valós időben streamelhetünk, vagy adatokat olvashatunk a Hadoop HDFS-től.

Adatkészlet beszerzése:

Filmajánló rendszerünkhöz számos népszerű webhelyről szerezhetünk felhasználói értékeléseket, mint például az IMDB, a Rotten Tomatoes és a Times Movie Ratings. Ez az adatkészlet számos formátumban áll rendelkezésre, például CSV-fájlok, szöveges fájlok aés adatbázisok. Vagy streamelhetjük az adatokat élőben a weboldalakról, vagy letölthetjük és tárolhatjuk őkethelyi fájlrendszerünk vagy HDFS.

Adatkészlet:

Az alábbi ábra bemutatja, hogyan gyűjthetünk adatsort a népszerű webhelyekről.

Miután az adatokat a Sparkba továbbítottuk, kissé így néz ki.

Gépi tanulás:

Az egész ajánlási rendszer a Machine Learning algoritmuson alapszik Legkevesebb négyzetek váltakozása . Itt az ALS egyfajta regresszióanalízis, ahol a regresszió segítségével egy vonalat rajzolnak az adatpontok között oly módon, hogy az egyes adatpontoktól kapott távolság négyzetének összege minimális legyen. Így ezt a sort felhasználjuk a függvény értékeinek előrejelzésére, ahol megfelel a független változó értékének.

A diagram kék vonala a legjobban illeszkedő regressziós vonal. Ennél a sornál a D dimenzió értéke minimális. Az összes többi piros vonal mindig távolabb lesz az adatkészlettől.

Spark MLlib megvalósítás:

  1. Az együttműködésen alapuló szűrést (CF) fogjuk használni, hogy megjósoljuk az egyes filmek felhasználói értékelését más filmek értékelése alapján.
  2. Ezt követően együttműködünk a többi felhasználó értékelésével az adott filmnél.
  3. A gépi tanulás következő eredményeihez a Spark SQL DataFrame, Dataset és SQL Service szolgáltatásait kell használnunk.

Itt van a program ál kódja:

hogyan hajtható végre a hashmap a java-ban
import org.apache.spark.mllib.recommendation.ALS import org.apache.spark.mllib.recommendation.Rating import org.apache.spark.SparkConf // Egyéb szükséges csomagok objektumának importálása Film {def main (args: Array [String] ) {val conf = new SparkConf (). setAppName ('Movie'). setMaster ('local [2]') val sc = new SparkContext (conf) val rawData = sc.textFile ('* Adatok olvasása a Movie CSV fájlból * ') //rawData.first () val rawRatings = rawData.map (* A rawData felosztása a fülhatárolón *) val rating = rawRatings.map {* Felhasználó, film és értékelés térképes tömbje *} // Az adat val modell képzése = ALS.train (minősítések, 50, 5, 0,01) model.userFeatures model.userFeatures.count model.productFeatures.count val predictedRating = * Jóslás a 789-es felhasználó számára a 123 film esetében topKRecs = model.recommendProducts (* Ajánlom a felhasználónak a K * adott értékéhez) println (topKRecs.mkString ('')) val movies = sc.textFile ('* Olvassa el a filmlista adatait *') val title = filmek.map (line => line.split ('|'). take ( 2)). Map (tömb => (tömb (0) .toInt, tömb (1))). CollectAsMap () val címekRDD = filmek.map (vonal => vonal.split ('|'). Vegye (2) ) .map (tömb => (tömb (0) .toInt, tömb (1))). gyorsítótár () címek (123) val moviesForUser = értékelések. * Felhasználó keresése * val sqlContext = * SQL-környezet létrehozása * val filmek Ajánlott = sqlContext. * Készítsen DataFrame-et az ajánlott filmekből * moviesRecommended.registerTempTable ('moviesRecommendedTable') sqlContext.sql ('Count (*) from moviesRecommendedTable'). foreach (println) moviesForUser. * Rendezze a 789-es felhasználó * .map értékeléseit (* Az értékelést hozzárendelje a film címéhez *). * Az értékelés kinyomtatása * val results = moviesForUser.sortBy (-_. Rating) .take (30) .map (rating => (címek (rating.product), rating.rating))}}

Miután előállítottunk előrejelzéseket, a Spark SQL segítségével tárolhatjuk az eredményeket egy RDBMS rendszerben. Ez tovább megjeleníthető egy webalkalmazásban.

Eredmények:

Ábra: A 77-es felhasználónak ajánlott filmek

Hurrá! Így sikeresen létrehoztunk egy filmajánló rendszert az Apache Spark segítségével. Ezzel a Spark MLlib által kínált számos népszerű algoritmus közül csak az egyiket ismertettük. A gépi tanulásról többet fogunk megtudni a Data Science Algorithms következő soros blogjaiban.

Továbblépve folytathatja az Apache Spark tanulását a Spark Tutorial, a Spark Streaming Tutorial segítségévelés Spark Interjúkérdések.Az Edureka elkötelezett amellett, hogy a lehető legjobb online élményt nyújtsa.

Nézze meg a mi én Ha meg akarja tanulni a Sparkot, és karriert szeretne kialakítani a Spark területén, valamint szakértelmet szerezzen az RDD, a Spark Streaming, a SparkSQL, az MLlib, a GraphX ​​és a Scala felhasználásával történő nagyméretű adatfeldolgozás megvalósításához, valós életben.