Spark MLlib - Machine Learning Library Ng Apache Spark



Ang Spark MLlib blog na ito ay magpapakilala sa iyo sa library ng Learning Learning ng Apache Spark. Nagsasama ito ng isang proyekto ng Rekomendasyon sa Pelikula na proyekto gamit ang Spark MLlib.

Spark MLlib ay ang bahagi ng Pag-aaral ng Makina ng Apache Spark.Ang isa sa mga pangunahing atraksyon ng Spark ay ang kakayahang sukatin ang pagkalkula nang napakalaki, at iyon mismo ang kailangan mo para sa mga algorithm ng pag-aaral ng machine. Ngunit ang limitasyon ay ang lahat ng mga algorithm sa pag-aaral ng makina ay hindi maaaring maging epektibo sa parallelized. Ang bawat algorithm ay may kanya-kanyang hamon para sa parallelization, ito man ay parallelization ng gawain o parallelismo ng data.

Nasabi na, ang Spark ay nagiging de-facto platform para sa pagbuo ng mga algorithm at application ng pag-aaral ng machine.Kaya, maaari mong suriin ang na-curate ng Mga Dalubhasa sa industriya bago magpatuloy sa blog.Ang mga nag-develop na nagtatrabaho sa Spark MLlib ay nagpapatupad ng higit pa at maraming mga machine algorithm sa isang nasusukat at maigsi na pamamaraan sa balangkas ng Spark. Sa pamamagitan ng blog na ito, malalaman natin ang mga konsepto ng Machine Learning, Spark MLlib, mga utility, algorithm at isang kumpletong kaso ng paggamit ng Movie Rekendation System.





Ang mga sumusunod na paksa ay saklaw sa blog na ito:

  1. Ano ang Learning ng Machine?
  2. Pangkalahatang-ideya ng Spark MLlib
  3. Spark MLlib Tools
  4. Mga Algorithm ng MLlib
  5. Gumamit ng Kaso - Sistema ng Rekumenda ng Pelikula

Ano ang Learning ng Machine?

Nabuo mula sa pag-aaral ng pagkilala sa pattern at pagkalkula ng teorya sa pag-aaral sa artipisyal na katalinuhan, sinisiyasat ng pag-aaral ng makina ang pag-aaral at pagtatayo ng mga algorithm na maaaring matuto mula at gumawa ng mga hula sa data - ang mga naturang algorithm ay nalampasan ang pagsunod sa mahigpit na static na mga tagubilin sa programa sa pamamagitan ng paggawa ng mga hula o desisyon na hinihimok ng data. , sa pamamagitan ng pagbuo ng isang modelo mula sa mga sample na input.



Pag-aaral ng Makina - Spark MLlib - Edureka Larawan: Mga tool sa Pag-aaral ng Machine

Ang pag-aaral ng makina ay malapit na nauugnay sa mga istatistika ng computational, na nakatuon din sa paggawa ng hula sa pamamagitan ng paggamit ng mga computer. Mayroon itong matibay na ugnayan sa pag-optimize sa matematika, na naghahatid ng mga pamamaraan, teorya at mga domain ng aplikasyon sa patlang. Sa loob ng larangan ng analytics ng data, ang pag-aaral ng makina ay isang pamamaraan na ginamit upang mag-isip ng mga kumplikadong mga modelo at algorithm na nagpapahiram sa kanilang sarili sa isang hula na sa komersyal na paggamit ay kilala bilang hinuhulaan na analytics.

Mayroong tatlong mga kategorya ng mga gawain sa pag-aaral ng Machine:



ano ang halimbawa sa java
  1. Pinangangasiwaang Pag-aaral : Ang pinangangasiwaang pag-aaral ay kung saan mayroon kang mga variable ng pag-input (x) at isang variable ng output (Y) at gumagamit ka ng isang algorithm upang malaman ang pag-andar ng pagmamapa mula sa input hanggang sa output.
  2. Hindi suportadong Pag-aaral : Ang hindi suportadong pag-aaral ay isang uri ng algorithm ng pag-aaral ng machine na ginamit upang gumuhit ng mga hinuha mula sa mga dataset na binubuo ng input data nang walang mga naka-label na tugon.
  3. Pagpapalakas ng Pag-aaral : Ang isang programa sa computer ay nakikipag-ugnay sa isang pabago-bagong kapaligiran kung saan dapat itong magsagawa ng isang tiyak na layunin (tulad ng pagmamaneho ng sasakyan o paglalaro laban sa isang kalaban). Ang programa ay binibigyan ng puna sa mga tuntunin ng mga gantimpala at parusa sa pag-navigate nito sa puwang ng problema.Ang konseptong ito ay tinatawag na pampatibay na pag-aaral.

Pangkalahatang-ideya ng Spark MLlib

Ginagamit ang Spark MLlib upang maisagawa ang pag-aaral ng makina sa Apache Spark. Ang MLlib ay binubuo ng mga tanyag na algorithm at utility.

Pangkalahatang-ideya ng MLlib:

  • spark.mllib naglalaman ng orihinal na API na itinayo sa tuktok ng mga RDD. Kasalukuyan itong nasa maintenance mode.
  • spark.ml nagbibigay ng mas mataas na antas ng API na itinayo sa tuktok ng DataFrames para sapagbubuo ng mga pipeline ng ML. spark.ml ay ang pangunahing Machine Learning API para sa Spark sa ngayon.

Spark MLlib Tools

Nagbibigay ang Spark MLlib ng mga sumusunod na tool:

  • Mga ML Algorithm: Bumubuo ang ML Algorithms ng core ng MLlib. Kasama rito ang mga karaniwang algorithm sa pag-aaral tulad ng pag-uuri, pagbabalik, pag-cluster at pagsasama-sama ng pagsala.
  • Pagtatampok: Kasama sa Featureization ang pagkuha ng tampok, pagbabago, pagbabawas ng dimensionalidad at pagpili.
  • Mga Pipeline: Nagbibigay ang mga pipeline ng mga tool para sa pagbuo, pagsusuri at pag-tune ng ML Pipelines.
  • Pagpupumilit: Ang pagtitiyaga ay tumutulong sa pag-save at paglo-load ng mga algorithm, modelo at Pipelines.
  • Mga utility: Mga utilitypara sa linear algebra, istatistika at paghawak ng data.

Mga Algorithm ng MLlib

Ang mga tanyag na algorithm at kagamitan sa Spark MLlib ay:

  1. Pangunahing Istatistika
  2. Pag-urong
  3. Pag-uuri
  4. Sistema ng Rekomendasyon
  5. Pag-cluster
  6. Pagbawas sa Dimensionality
  7. Tampok na Pagkuha
  8. Pag-optimize

Tingnan natin nang detalyado ang ilan sa mga ito.

Pangunahing Istatistika

Pangunahing Istatistika may kasamang pinaka-pangunahing mga diskarte sa pag-aaral ng machine. Kabilang dito ang:

  1. Mga Istatistika ng Buod : Kasama sa mga halimbawa ang mean, variance, count, max, min at numNonZeros.
  2. Mga ugnayan : Ang Spearman at Pearson ay ilang mga paraan upang makahanap ng ugnayan.
  3. Stratified Sampling : Kasama rito ang sampleBykey at sampleByKeyExact.
  4. Pagsubok sa Hypothesis : Ang chi-square na pagsubok ni Pearson ay isang halimbawa ng pagsubok sa teorya.
  5. Random Generation ng Data : Ginagamit ang RandomRDDs, Normal at Poisson upang makabuo ng random data.

Pag-urong

Pag-urong Ang pagtatasa ay isang proseso ng pang-istatistika para sa pagtantya ng mga ugnayan sa mga variable. May kasamang maraming mga diskarte para sa pagmomodelo at pag-aaral ng maraming mga variable kung ang pokus ay sa ugnayan sa pagitan ng isang umaasang variable at isa o higit pang mga independiyenteng variable. Mas partikular, ang pagsusuri sa pagbabalik ay makakatulong sa isang maunawaan kung paano nagbabago ang tipikal na halaga ng umaasa na variable kapag ang anumang isa sa mga independiyenteng variable ay iba-iba, habang ang iba pang mga independiyenteng variable ay gaganapin.

Ang pagsusuri sa pag-urong ay malawakang ginagamit para sa hula at pagtataya, kung saan ang paggamit nito ay may malaking overlap sa larangan ng pag-aaral ng makina. Ginagamit din ang pagsusuri sa pag-urong upang maunawaan kung alin sa mga independiyenteng mga variable na nauugnay sa umaasa na variable, at upang tuklasin ang mga anyo ng mga ugnayan na ito. Sa mga pinaghigpitan na pangyayari, maaaring magamit ang pagsusuri sa pag-urong upang mahihinuha ang mga ugnayan na sanhi sanhi ng mga independyente at umaasang variable.

Pag-uuri

Pag-uuri ay ang problema ng pagkilala sa alin sa isang hanay ng mga kategorya (mga sub-populasyon) na kabilang ang isang bagong pagmamasid, batay sa isang hanay ng pagsasanay ng data na naglalaman ng mga obserbasyon (o mga pagkakataon) na ang pagiging miyembro ng kategorya ay kilala. Ito ay isang halimbawa ng pagkilala sa pattern.

Dito, isang halimbawa ay magtatalaga ng isang naibigay na email sa mga klase na 'spam' o 'non-spam' o magtalaga ng isang diagnosis sa isang naibigay na pasyente tulad ng inilarawan ng naobserbahang mga katangian ng pasyente (kasarian, presyon ng dugo, pagkakaroon o kawalan ng ilang mga sintomas, at iba pa).

Sistema ng Rekomendasyon

SA sistema ng rekomendasyon ay isang subclass ng system ng pag-filter ng impormasyon na naglalayong hulaan ang 'rating' o 'kagustuhan' na ibibigay ng isang gumagamit sa isang item. Ang mga sistema ng tagapayo ay naging patok sa mga nagdaang taon, at ginagamit sa iba't ibang mga lugar kabilang ang mga pelikula, musika, balita, libro, artikulo sa pagsasaliksik, mga query sa paghahanap, mga social tag, at mga produkto sa pangkalahatan.

Karaniwang gumagawa ang mga system ng tagapagrekomenda ng isang listahan ng mga rekomendasyon sa isa sa dalawang paraan - sa pamamagitan ng pakikipagtulungan at pag-filter na batay sa nilalaman o diskarte na batay sa personalidad.

  1. Pagtutulungan ng Pagsasama lumapit sa pagbuo ng isang modelo mula sa dating pag-uugali ng isang gumagamit (mga item na dati ay binili o napili at / o mga numerong rating na ibinigay sa mga item na iyon) pati na rin mga katulad na desisyon na ginawa ng ibang mga gumagamit. Ginagamit ang modelong ito upang hulaan ang mga item (o mga rating para sa mga item) na maaaring may interes ang gumagamit.
  2. Pagsala na Batay sa Nilalaman ang mga diskarte ay gumagamit ng isang serye ng mga discrete na katangian ng isang item upang magrekomenda ng mga karagdagang item na may mga katulad na katangian.

Dagdag dito, ang mga pamamaraang ito ay madalas na pinagsama bilang Mga Hybrid na Tagapayo ng Sistema.

Pag-cluster

Pag-cluster ay ang gawain ng pagpapangkat ng isang hanay ng mga bagay sa paraang ang mga bagay sa parehong pangkat (tinatawag na isang kumpol) ay higit na magkatulad (sa ilang kahulugan o iba pa) sa bawat isa kaysa sa mga nasa ibang mga pangkat (kumpol). Kaya, ito ay ang pangunahing gawain ng exploratory data mining, at isang pangkaraniwang pamamaraan para sa pagtatasa ng statistic data, na ginagamit sa maraming mga larangan, kabilang ang machine machine, pagkilala sa pattern, pagtatasa ng imahe, pagkuha ng impormasyon, bioinformatics, compression ng data at graphics ng computer.

Pagbawas sa Dimensionality

Pagbawas sa Dimensionality ay ang proseso ng pagbawas ng bilang ng mga random na variable na isinasaalang-alang, sa pamamagitan ng pagkuha ng isang hanay ng mga pangunahing variable. Maaari itong hatiin sa pagpili ng tampok at pagkuha ng tampok.

  1. Pagpili ng Tampok: Ang pagpipilian ng tampok ay nakakahanap ng isang subset ng mga orihinal na variable (tinatawag ding mga tampok o katangian).
  2. Tampok na Pagkuha: Binabago nito ang data sa mataas na dimensional na puwang sa isang puwang ng mas kaunting mga sukat. Ang pagbabago ng data ay maaaring maging linear, tulad ng Principal Component Analysis (PCA), ngunit maraming mga diskarte sa pagbawas ng hindi linya na dimensionalidad na mayroon din.

Tampok na Pagkuha

Tampok na Pagkuha nagsisimula mula sa isang paunang hanay ng sinusukat na data at nagtatayo ng mga hinahangad na halaga (mga tampok) na inilaan upang maging kaalaman at hindi kalabisan, pinapabilis ang kasunod na mga hakbang sa pag-aaral at paglalahat, at sa ilang mga kaso na humahantong sa mas mahusay na interpretasyon ng tao. Nauugnay ito sa pagbawas ng dimensionality.

Pag-optimize

Pag-optimize ay ang pagpili ng pinakamahusayelemento (na patungkol sa ilang pamantayan) mula sa ilang hanay ng mga magagamit na mga kahalili.

Sa pinakasimpleng kaso, ang isang problema sa pag-optimize ay binubuo ng pag-maximize o pag-minimize ng isang tunay na pag-andar sa pamamagitan ng sistematikong pagpili ng mga halaga ng pag-input mula sa loob ng isang pinahihintulutang set at pagkalkula ng halaga ng pagpapaandar. Ang paglalahat ng teorya sa pag-optimize at mga diskarte sa iba pang mga formulation comprises isang malaking lugar ng inilapat matematika. Sa pangkalahatan, kasama sa pag-optimize ang paghahanap ng mga 'pinakamahusay na magagamit' na halaga ng ilang layunin na pagpapaandar na binigyan ng isang tinukoy na domain (o input),kabilang ang iba't ibang mga iba't ibang uri ng mga layunin na pag-andar at iba't ibang mga uri ng mga domain.

Gumamit ng Kaso - Sistema ng Rekumenda ng Pelikula

Pahayag ng Suliranin: Upang bumuo ng isang Sistema ng Rekumenda ng Pelikula na nagrerekomenda ng mga pelikula batay sa mga kagustuhan ng isang gumagamit gamit ang Apache Spark.

Ang aming mga Kinakailangan:

Kaya, suriin natin ang mga kinakailangan upang mabuo ang aming system ng rekomendasyon sa pelikula:

  1. Iproseso ang malaking halaga ng data
  2. Input mula sa maraming mga mapagkukunan
  3. Madaling gamitin
  4. Mabilis na pagproseso

Tulad ng maaari nating suriinang aming mga kinakailangan, kailangan namin ang pinakamahusay na tool ng Big Data upang maproseso ang malaking data sa maikling panahon. Samakatuwid, Apache Spark ay ang perpektong tool upang ipatupad ang aming System ng Rekumenda ng Pelikula.

Tingnan natin ngayon ang Flow Diagram para sa aming system.

Tulad ng nakikita natin, ang sumusunod ay gumagamit ng Streaming mula sa Spark Streaming. Maaari kaming mag-stream sa real time o mabasa ang data mula sa Hadoop HDFS.

Pagkuha ng Dataset:

Para sa aming System ng Rekumenda ng Pelikula, makakakuha kami ng mga rating ng gumagamit mula sa maraming mga tanyag na website tulad ng IMDB, Bulok na Kamatis at Mga Pagraranggo ng Pelikula sa Times. Magagamit ang dataset na ito sa maraming mga format tulad ng mga CSV file, mga text file and mga database. Maaari naming mai-stream ang data nang live mula sa mga website o i-download at iimbak ang mga ito saang aming lokal na file system o HDFS.

Dataset:

Ipinapakita ng figure sa ibaba kung paano namin makokolekta ang dataset mula sa mga tanyag na website.

Kapag na-stream na namin ang data sa Spark, mukhang ganito ito.

Pag-aaral ng Machine:

Ang buong sistema ng rekomendasyon ay batay sa algorithm ng Pag-aaral ng Machine Mga alternatibong Least Squares . Dito, ang ALS ay isang uri ng pagsusuri sa pag-urong kung saan ang pagbabalik ay ginagamit upang gumuhit ng isang linya sa gitna ng mga puntos ng data sa isang paraan upang ang kabuuan ng mga parisukat ng distansya mula sa bawat data point ay nai-minimize. Kaya, ang linya na ito ay ginagamit pagkatapos upang mahulaan ang mga halaga ng pagpapaandar kung saan natutugunan nito ang halaga ng independiyenteng variable.

Ang asul na linya sa diagram ay ang pinakamahusay na linya ng pagbabalik. Para sa linyang ito, ang halaga ng dimensyon D ay minimum. Lahat ng iba pang mga pulang linya ay palaging magiging malayo mula sa dataset bilang isang kabuuan.

Pagpapatupad ng Spark MLlib:

  1. Gagamitin namin ang Collaborative Filtering (CF) upang mahulaan ang mga rating para sa mga gumagamit para sa mga partikular na pelikula batay sa kanilang mga rating para sa iba pang mga pelikula.
  2. Pagkatapos ay nakikipagtulungan namin ito sa rating ng ibang mga gumagamit para sa partikular na pelikula.
  3. Upang makuha ang mga sumusunod na resulta mula sa aming Pag-aaral sa Machine, kailangan naming gumamit ng DataFrame, Dataset at SQL Serbisyo ng Spark SQL.

Narito ang pseudo code para sa aming programa:

import org.apache.spark.mllib.recommendation.ALS import org.apache.spark.mllib.recommendation.Rating import org.apache.spark.SparkConf // Mag-import ng iba pang kinakailangang mga pakete ng object Movie {def main (args: Array [String] ) {val conf = new SparkConf (). setAppName ('Movie'). setMaster ('local [2]') val sc = new SparkContext (conf) val rawData = sc.textFile ('* Basahin ang Data mula sa Movie CSV file * ') //rawData.first () val rawRatings = rawData.map (* Hatiin ang rawData sa delimiter ng tab *) mga rating ng val = rawRatings.map {* Ang hanay ng kaso ng mapa ng User, Pelikula at Rating *} // Pagsasanay ng modelo ng data val = ALS.train (mga rating, 50, 5, 0.01) modelo. Modelo ng taggamit ng tampok. GumagamitFeature.count model.productFeature.count val hinulaang Rating = * Hulaan para sa User 789 para sa pelikula 123 * val userId = * User 789 * val K = 10 val topKRecs = model.recommendProducts (* Magrekomenda para sa Gumagamit para sa partikular na halaga ng K *) println (topKRecs.mkString (')) val films = sc.textFile ('* Basahin ang Data ng Listahan ng Pelikula *') mga pamagat ng val = pelikula.map (line => line.split ('|'). kumuha ng ( 2)). Mapa (array => (array (0) .toInt, array (1))). CollectAsMap () val headingRDD = films.map (line => line.split ('|'). Take (2) ) .map (array => (array (0) .toInt, array (1))). cache () na mga pamagat (123) val filmsForUser = mga rating. * Paghahanap para sa User 789 * val sqlContext = * Lumikha ng SQL Context * val filmsRecommended = sqlContext. * Gumawa ng isang DataFrame ng mga inirekumendang pelikula * filmsRecommended.registerTempTable ('filmsRecommendedTable') sqlContext.sql ('Piliin ang bilang (*) mula sa mga pelikulaRecommendedTable'). paunahan (println) ang mga pelikulaForUser. * Pagbukud-bukurin ang mga rating para sa User 789 * .map (* Mapa ang rating sa pamagat ng pelikula *). * I-print ang rating * mga resulta ng val = mga pelikulaForUser.sortBy (-_. Rating). Kumuha (30). Mapa (rating => (mga pamagat (rating.product), rating.rating))}}

Sa sandaling makabuo kami ng mga hula, maaari naming gamitin ang Spark SQL upang maiimbak ang mga resulta sa isang sistemang RDBMS. Dagdag dito, maaari itong ipakita sa isang web application.

Mga Resulta:

Larawan: Inirekumenda ang mga pelikula para sa User 77

Hurray! Sa gayon ay matagumpay kaming nakalikha ng isang Sistema ng Rekumenda ng Pelikula gamit ang Apache Spark. Sa pamamagitan nito, nasakop namin ang isa lamang sa maraming mga tanyag na algorithm na inaalok ng Spark MLlib. Malalaman pa ang nalalaman tungkol sa Pag-aaral ng Machine sa mga paparating na blog sa Data Science Algorithms.

Nagpapatuloy, maaari mong ipagpatuloy ang pag-aaral ng Apache Spark sa Spark Tutorial, Spark Streaming Tutorial, at Mga Katanungan ng Spark Interview.Ang Edureka ay nakatuon patungo sa pagbibigay ng pinakamahusay na karanasan sa pag-aaral na posibleng online.

Suriin ang aming ako f nais mong malaman ang Spark at bumuo ng isang karera sa domain ng Spark at bumuo ng kadalubhasaan upang maisagawa ang malakihang Pagproseso ng Data gamit ang RDD, Spark Streaming, SparkSQL, MLlib, GraphX ​​at Scala na may mga tunay na use-life case.