MLlib - Biblioteca d'aprenentatge automàtic d'Apache Spark



Aquest blog Spark MLlib us presentarà la biblioteca d’Apache Spark’s Machine Learning. Inclou un projecte de sistema de recomanació de pel·lícules que utilitza Spark MLlib.

Spark MLlib és el component d’aprenentatge automàtic d’Apache Spark.Un dels principals atractius d’Spark és la capacitat d’escalar massivament el càlcul, i això és exactament el que necessiteu per als algoritmes d’aprenentatge automàtic. Però la limitació és que tots els algoritmes d’aprenentatge automàtic no es poden paral·lelitzar eficaçment. Cada algorisme té els seus propis desafiaments per a la paral·lelització, tant si es tracta de paral·lelisme de tasques com de dades.

Dit això, Spark s'està convertint en la plataforma de facto per a la creació d'algorismes i aplicacions d'aprenentatge automàtic.Bé, podeu consultar el comissariada per Experts de la Indústria abans de continuar amb el bloc.Els desenvolupadors que treballen a Spark MLlib estan implementant cada vegada més algoritmes de màquina de manera escalable i concisa en el marc Spark. A través d’aquest bloc, aprendrem els conceptes d’Aprenentatge Automàtic, Spark MLlib, les seves utilitats, algorismes i un cas d’ús complet del sistema de recomanació de pel·lícules.





En aquest bloc es tractaran els temes següents:

  1. Què és l'aprenentatge automàtic?
  2. Visió general de Spark MLlib
  3. Eines Spark MLlib
  4. Algoritmes MLlib
  5. Cas d’ús: sistema de recomanació de pel·lícules

Què és l'aprenentatge automàtic?

Evolucionat a partir de l’estudi del reconeixement de patrons i la teoria de l’aprenentatge computacional en intel·ligència artificial, l’aprenentatge automàtic explora l’estudi i la construcció d’algoritmes que poden aprendre i fer prediccions sobre les dades; aquests algorismes es superen seguint instruccions estrictament estàtiques del programa mitjançant la presa de decisions o prediccions basades en dades , mitjançant la construcció d'un model a partir d'entrades de mostra.



Aprenentatge automàtic - Spark MLlib - Edureka Figura: Eines d’aprenentatge automàtic

L’aprenentatge automàtic està estretament relacionat amb les estadístiques computacionals, que també se centren en la predicció mitjançant l’ús d’ordinadors. Té forts vincles amb l'optimització matemàtica, que proporciona mètodes, teoria i dominis d'aplicació al camp. Dins del camp de l’anàlisi de dades, l’aprenentatge automàtic és un mètode utilitzat per idear models i algoritmes complexos que es presten a una predicció que en ús comercial es coneix com a analítica predictiva.

Hi ha tres categories de tasques d’aprenentatge automàtic:



  1. Aprenentatge supervisat : L'aprenentatge supervisat és on teniu variables d'entrada (x) i una variable de sortida (Y) i utilitzeu un algorisme per aprendre la funció de mapatge des de l'entrada fins a la sortida.
  2. Aprenentatge sense supervisió : L'aprenentatge no supervisat és un tipus d'algorisme d'aprenentatge automàtic que s'utilitza per extreure inferències a partir de conjunts de dades que consisteixen en dades d'entrada sense respostes etiquetades.
  3. Aprenentatge de reforç : Un programa d’ordinador interactua amb un entorn dinàmic en el qual ha d’aconseguir un objectiu determinat (com conduir un vehicle o jugar un joc contra un oponent). Al programa se li proporciona informació en termes de recompenses i càstigs a mesura que navega pel seu espai de problemes.Aquest concepte s’anomena aprenentatge de reforç.

Visió general de Spark MLlib

Spark MLlib s'utilitza per realitzar l'aprenentatge automàtic a Apache Spark. MLlib consisteix en utilitats i algoritmes populars.

Visió general de MLlib:

  • spark.mllib conté l'API original construïda a sobre dels RDD. Actualment es troba en mode de manteniment.
  • spark.ml proporciona API de nivell superior basades en DataFrames per aconstrucció de canonades ML. spark.ml és l’API d’aprenentatge automàtic principal de Spark en aquest moment.

Eines Spark MLlib

Spark MLlib proporciona les eines següents:

diferència entre classe i interfície a Java
  • Algorismes ML: Els algoritmes ML formen el nucli de MLlib. Aquests inclouen algoritmes d’aprenentatge comuns, com ara classificació, regressió, agrupació i filtratge col·laboratiu.
  • Caracterització: La caracterització inclou l'extracció, la transformació, la reducció de la dimensionalitat i la selecció.
  • Conductes: Les canonades proporcionen eines per construir, avaluar i ajustar les canonades ML.
  • Persistència: La persistència ajuda a guardar i carregar algoritmes, models i canonades.
  • Utilitats: Utilitatsper a l'àlgebra lineal, estadístiques i tractament de dades.

Algoritmes MLlib

Els algoritmes i utilitats populars a Spark MLlib són:

  1. Estadístiques bàsiques
  2. Regressió
  3. Classificació
  4. Sistema de recomanacions
  5. Agrupació
  6. Reducció de la dimensionalitat
  7. Extracció de funcions
  8. Optimització

Vegem alguns d'aquests en detall.

Estadístiques bàsiques

Estadístiques bàsiques inclou les tècniques d’aprenentatge automàtic més bàsiques. Això inclou:

  1. Resum estadístic : Els exemples inclouen mitjana, variància, recompte, màxim, mínim i numNonZeros.
  2. Correlacions : Spearman i Pearson són algunes maneres de trobar correlació.
  3. Mostreig estratificat : Inclouen sampleBykey i sampleByKeyExact.
  4. Proves d’hipòtesis : El test chi-quadrat de Pearson és un exemple de prova d’hipòtesis.
  5. Generació de dades aleatòries : RandomRDDs, Normal i Poisson s’utilitzen per generar dades aleatòries.

Regressió

Regressió l’anàlisi és un procés estadístic per estimar les relacions entre variables. Inclou moltes tècniques per modelar i analitzar diverses variables quan es centra la relació entre una variable dependent i una o més variables independents. Més específicament, l’anàlisi de regressió ajuda a entendre com canvia el valor típic de la variable dependent quan varia qualsevol de les variables independents, mentre que les altres variables independents es mantenen fixes.

L’anàlisi de regressió s’utilitza àmpliament per a la predicció i predicció, on el seu ús té una superposició substancial amb el camp de l’aprenentatge automàtic. L’anàlisi de regressió també s’utilitza per entendre quines variables independents estan relacionades amb la variable dependent i explorar les formes d’aquestes relacions. En circumstàncies restringides, es pot utilitzar l'anàlisi de regressió per inferir relacions causals entre les variables independents i dependents.

Classificació

Classificació és el problema d’identificar a quin d’un conjunt de categories (subpoblacions) pertany una nova observació, sobre la base d’un conjunt formatiu de dades que conté observacions (o instàncies) de la qual es coneix la pertinença a la categoria. És un exemple de reconeixement de patrons.

Aquí, un exemple seria assignar un correu electrònic determinat a classes de 'correu brossa' o 'no brossa' o assignar un diagnòstic a un pacient determinat tal com es descriu per les característiques observades del pacient (gènere, pressió arterial, presència o absència de certs símptomes, etc.).

Sistema de recomanacions

A sistema de recomanació és una subclasse de sistemes de filtratge d'informació que pretén predir la 'qualificació' o 'preferència' que un usuari donaria a un article. Els sistemes de recomanacions s’han popularitzat cada cop més en els darrers anys i s’utilitzen en diverses àrees, incloses pel·lícules, música, notícies, llibres, articles de recerca, consultes de cerca, etiquetes socials i productes en general.

Els sistemes de recomanació solen produir una llista de recomanacions d'una o dues maneres: mitjançant el filtratge col·laboratiu i basat en el contingut o l'enfocament basat en la personalitat.

  1. Filtrat col·laboratiu s’enfoca en la creació d’un model a partir del comportament passat d’un usuari (articles comprats o seleccionats prèviament i / o qualificacions numèriques donades a aquests articles), així com decisions similars preses per altres usuaris. A continuació, aquest model s’utilitza per predir articles (o puntuacions d’articles) en què l’usuari pugui tenir interès.
  2. Filtrat basat en el contingut els enfocaments utilitzen una sèrie de característiques discretes d’un article per tal de recomanar articles addicionals amb propietats similars.

A més, aquests enfocaments es combinen sovint com a sistemes híbrids de recomanació.

Agrupació

Agrupació és la tasca d’agrupar un conjunt d’objectes de manera que els objectes del mateix grup (anomenats clúster) siguin més semblants (en un sentit o un altre) entre si que als d’altres grups (clústers). Per tant, és la tasca principal de l’exploració de dades exploratòria i una tècnica comuna per a l’anàlisi estadística de dades, que s’utilitza en molts camps, inclosos l’aprenentatge automàtic, el reconeixement de patrons, l’anàlisi d’imatges, la recuperació d’informació, la bioinformàtica, la compressió de dades i els gràfics per ordinador.

Reducció de la dimensionalitat

Reducció de la dimensionalitat és el procés de reducció del nombre de variables aleatòries considerades mitjançant l'obtenció d'un conjunt de variables principals. Es pot dividir en selecció de funcions i extracció de funcions.

  1. Selecció de funcions: La selecció de funcions troba un subconjunt de les variables originals (també anomenades funcions o atributs).
  2. Extracció de funcions: Això transforma les dades de l'espai d'alta dimensió en un espai de menys dimensions. La transformació de dades pot ser lineal, com a l'anàlisi de components principals (PCA), però també existeixen moltes tècniques de reducció de dimensionalitat no lineals.

Extracció de funcions

Extracció de funcions parteix d’un conjunt inicial de dades mesurades i crea valors derivats (característiques) destinats a ser informatius i no redundants, facilitant els següents passos d’aprenentatge i generalització i, en alguns casos, conduint a millors interpretacions humanes. Això està relacionat amb la reducció de la dimensionalitat.

Optimització

Optimització és la selecció dels millorselement (pel que fa a algun criteri) a partir d'algun conjunt d'alternatives disponibles.

En el cas més senzill, un problema d'optimització consisteix a maximitzar o minimitzar una funció real triant sistemàticament els valors d'entrada d'un conjunt permès i calculant el valor de la funció. La generalització de la teoria i tècniques d’optimització a altres formulacions comprèn una àmplia àrea de matemàtiques aplicades. Més generalment, l'optimització inclou trobar valors 'millors disponibles' d'alguna funció objectiva donat un domini (o entrada) definit,incloent una varietat de diferents tipus de funcions objectives i diferents tipus de dominis.

Cas d’ús: sistema de recomanació de pel·lícules

Plantejament del problema: Per crear un sistema de recomanació de pel·lícules que recomani pel·lícules en funció de les preferències de l'usuari mitjançant Apache Spark.

Els nostres requisits:

Per tant, avaluem els requisits per construir el nostre sistema de recomanació de pel·lícules:

  1. Processar una gran quantitat de dades
  2. Entrada de diverses fonts
  3. Fàcil d'usar
  4. Processament ràpid

Com podem valorarels nostres requisits, necessitem la millor eina de Big Data per processar dades de grans dimensions en poc temps. Per tant, Apache Spark és l'eina perfecta per implementar el nostre sistema de recomanació de pel·lícules.

Vegem ara el diagrama de flux del nostre sistema.

Com podem veure, el següent fa servir Streaming des de Spark Streaming. Podem transmetre en temps real o llegir dades de Hadoop HDFS.

Obtenció del conjunt de dades:

Per al nostre sistema de recomanació de pel·lícules, podem obtenir puntuacions dels usuaris de molts llocs web populars com IMDB, Rotten Tomatoes i Times Movie Ratings. Aquest conjunt de dades està disponible en molts formats, com ara fitxers CSV, fitxers de text ai bases de dades. Podem transmetre les dades en directe des dels llocs web o descarregar-les i emmagatzemar-les ael nostre sistema de fitxers local o HDFS.

Conjunt de dades:

La figura següent mostra com podem recopilar dades de llocs web populars.

Un cop transmetem les dades a Spark, es veu així.

Aprenentatge automàtic:

Tot el sistema de recomanacions es basa en l'algorisme d'aprenentatge automàtic Alternant mínims quadrats . Aquí, l’ELA és un tipus d’anàlisi de regressió on s’utilitza la regressió per dibuixar una línia entre els punts de dades de manera que es minimitzi la suma dels quadrats de la distància de cada punt de dades. Per tant, aquesta línia s'utilitza per predir els valors de la funció on compleix el valor de la variable independent.

La línia blava del diagrama és la línia de regressió més adequada. Per a aquesta línia, el valor de la dimensió D és mínim. La resta de línies vermelles sempre estaran més allunyades del conjunt de dades.

Implementació de Spark MLlib:

  1. Utilitzarem el filtratge col·laboratiu (CF) per predir les valoracions dels usuaris per a determinades pel·lícules en funció de les valoracions d’altres pel·lícules.
  2. A continuació, col·laborem amb la valoració d'altres usuaris per a la pel·lícula en concret.
  3. Per obtenir els resultats següents del nostre Machine Learning, hem d’utilitzar el DataFrame, el conjunt de dades i el servei SQL de Spark SQL.

Aquí teniu el pseudocodi del nostre programa:

import org.apache.spark.mllib.recommendation.ALS import org.apache.spark.mllib.recommendation.Rating import org.apache.spark.SparkConf // Importa altres paquets necessaris objecte Pel·lícula {def main (args: Array [String]) ) {val conf = new SparkConf (). setAppName ('Movie'). setMaster ('local [2]') val sc = new SparkContext (conf) val rawData = sc.textFile ('* Llegir dades del fitxer CSV de la pel·lícula * ') //rawData.first () val rawRatings = rawData.map (* Dividir rawData al delimitador de pestanyes *) val ratings = rawRatings.map {* Matriu de majúscules i minúscules d'usuari, pel·lícula i classificació *} // Formació del model de dades val = ALS.train (valoracions, 50, 5, 0,01) model.userFeatures model.userFeatures.count model.productFeatures.count val predictedRating = * Predir per a l'usuari 789 per a la pel·lícula 123 * val userId = * usuari 789 * val K = 10 val topKRecs = model.recommendProducts (* Recomanat per a l'usuari pel valor particular de K *) println (topKRecs.mkString ('')) val movies = sc.textFile ('* Llegir dades de la llista de pel·lícules *') val titles = movies.map (línia => línia.split ('|'). prendre ( 2)). Map (array => (array (0) .toInt, array (1))). CollectAsMap () val titlesRDD = movies.map (line => line.split ('|'). Take (2) ) .map (array => (array (0) .toInt, array (1))). cache () títols (123) val moviesForUser = qualificacions. * Cerca usuari 789 * val sqlContext = * Crea context SQL * val movies Recomanat = sqlContext. * Feu un DataFrame de pel·lícules recomanades * moviesRecommended.registerTempTable ('moviesRecommendedTable') sqlContext.sql ('Selecciona el recompte (*) de moviesRecommendedTable'). foreach (println) moviesForUser. * Ordeneu les puntuacions de l’usuari 789 * .map (* Assigneu la puntuació al títol de la pel·lícula *). * Imprimiu la valoració * val results = moviesForUser.sortBy (-_. Rating) .take (30) .map (rating => (titles (rating.product), rating.rating))}}

Un cop generem prediccions, podem utilitzar Spark SQL per emmagatzemar els resultats en un sistema RDBMS. A més, es pot mostrar en una aplicació web.

Resultats:

Figura: Pel·lícules recomanades per a l'usuari 77

Hurra! Per tant, hem creat amb èxit un sistema de recomanació de pel·lícules amb Apache Spark. Amb això, hem cobert només un dels molts algoritmes populars que Spark MLlib pot oferir. Aprendrem més informació sobre l’aprenentatge automàtic als propers blocs sobre algorismes de ciència de dades.

Avançant, podeu continuar aprenent Apache Spark amb Spark Tutorial, Spark Streaming Tutorial, i preguntes d’entrevistes Spark.Edureka es dedica a proporcionar la millor experiència d'aprenentatge possible en línia.

Consulteu el nostre jo Si voleu aprendre Spark i construir una carrera en el domini de Spark i adquirir experiència per realitzar processaments de dades a gran escala mitjançant RDD, Spark Streaming, SparkSQL, MLlib, GraphX ​​i Scala amb casos d’ús reals.