View
0
Download
0
Category
Preview:
Citation preview
SVEUČILIŠTE U ZAGREBUFAKULTET ELEKTROTEHNIKE I RAČUNARSTVA
ZAVRŠNI RAD br. 5161
Usporedba raspodijeljenihpreporučitelja
Patrik Mihaljević
Zagreb, lipanj 2017.
iii
Sadrûaj
1. Uvod 1
2. Raspodijeljeni preporu�itelj 22.1. Sustavi preporuke . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
2.1.1. Ciljevi sustava preporuke . . . . . . . . . . . . . . . . . . . . . . 22.1.2. Osnovni algoritam preporuke temeljen na suradnji korisnika . . 3
2.2. Raspodijeljeni sustavi . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
3. Koriötene tehnologije 53.1. Apache Spark . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53.2. Apache Flink . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63.3. Apache Mahout . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
4. ALS algoritam preporu�ivanja 84.1. Analiza ALS-a . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
5. Evaluacija sustava preporuke 105.1. Ciljevi evaluacije . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
5.1.1. Mjerenje to�nosti procjene . . . . . . . . . . . . . . . . . . . . . 105.2. Priprema podataka . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
6. Implementacija usporedbe 136.1. Parametri ALS algoritma . . . . . . . . . . . . . . . . . . . . . . . . . . 136.2. Implementacija na okruûenju Apache Mahout . . . . . . . . . . . . . . 146.3. Implementacija na okruûenju Apache Spark i Apache Flink . . . . . . . 14
7. Rezultati evaluacije 167.1. Rezultati u lokalnom na�inu rada . . . . . . . . . . . . . . . . . . . . . 167.2. Rezultati na ra�unalnom grozdu . . . . . . . . . . . . . . . . . . . . . . 18
8. Zaklju�ak 20
iv
Literatura 21
v
1. Uvod
Prikupljanje podataka vröi se preteûito iz razloga da neöto saznamo iz njih te upravoto znanje iskoristimo za bolju buduÊnost.
U ovom radu bit Êe uspore�ena implementacija istog algoritma preporu�ivanja natri razli�ita programska okruûenja za raspodijeljenu obradu podataka: Apache Spark,Apache Mahout i Apache Flink.
Drugo poglavlje objaönjava pojam "raspodijeljeni preporu�itelj", öto to�no taj po-jam govori o sustavu koji opisuje, gdje se sve koriste takvi sustavi te koji su glavni ciljevinjihove uporabe. Nakon öto bude jasno öto je to raspodijeljeni preporu�itelj i �emu onsluûi, upoznat Êemo najpoznatija okruûenja na kojima se takvi sustavi naj�eöÊe imple-mentiraju. U �etvrtom poglavlju, poglavlju koje govori o algoritmu preporu�ivanja,bit Êe objaönjeno kako taj algoritam radi iz matemati�ke perspektive. Peto poglavljeopisuje kako se ovakvi sustavi evaluiraju nakon öto znamo njihovu implementaciju, nakoje sve detalje treba pripaziti kod evaluacije te kako pripremiti podatke potrebne zaevaluaciju. äesto i sedmo poglavlje govore o implementaciji evaluacije i donose rezultateusporedbe za navedena tri okruûenja.
1
2. Raspodijeljeni preporu�itelj
2.1. Sustavi preporukeSustavi preporuke podrazred su sustava filtriranja informacija koji nastoje predvidjetiocjenu koju Êe korisnik dati nekoj stavci. U zadnje vrijeme ovakvi sustavi su postali jakopopularni, a njihovu primjenu pronalazimo u svim podru�jima ljudskoga ûivota, uklju-�ujuÊi filmove, glazbu, vijesti, knjige, istraûiva�ke �lanke, druötvene oznake i proizvodeopÊenito. Tako�er, danas postoje sustavi preporuke koji Vam, na primjer preporu�ujusuradnike u poslu.[2]
Sustavi preporuke mogu se podijeliti u dvije osnovne kategorije: online i o�inepreporu�itelje. Online preporu�itelji su ona vrsta preporu�itelja koji rade preporukuu stvarnom vremenu na osnovu povratne informacije korisnika. Na primjer, kada sekorisniku preporu�e odre�eni proizvodi moûe se saznati informacija o tome je li korisnikpogledao preporu�eni proizvod ili nije te upravo tu informaciju uzeti u obzir kod vröenjasljedeÊih preporuka. Dok je za postojanje online sustava preporuke nuûan korisnik,o�ine sustavi preporuke ga ne trebaju. Oni rade naj�eöÊe sa starijim podacima te naosnovu takvih podataka rade preporuku.
2.1.1. Ciljevi sustava preporukeKoju sljedeÊu knjigu kupiti na Amazonu1 ili koji sljedeÊi film preporu�iti u videoteciMAXtv-a samo su jednostavni primjeri problema u kojima se pokazuje djeliÊ snage iefikasnosti sustava preporuke.
Iz gore navedenih primjera moûe se zaklju�iti da je glavni cilj sustava preporukenapraviti relevantnu preporuku baziranu na prikupljenim informacijama.
Dobar primjer sustava preporuke je sustav implementiran u tv videoteci koju nudebrojni tv operateri. Primarni cilj takvog sustava je poveÊanje broja iznajmljenih fil-mova. Sustavi preporuke, nakon svega, koriste trgovcima kako bi poveÊali svoju dobit.Preporukom paûljivo odabranog filma korisnicima, sustav preporuke paûnju korisnika
1https://www.amazom.co.uk - Amazon
2
usmjeravaju na, upravo njima, relevantne proizvode. Tako poveÊavaju broj iznajmlje-nih filmova te samu dobit za trgovca. Iako su sustavi preporuke implementirani u raznesfere ljudskoga ûivota, moûe se reÊi da postoje tri glavna cilja takvih sustava:[1]
– relevantnost: najo�itiji cilj sustava preporuke je relevantne proizvode preporu�itiodre�enom korisniku
– novitet: od zna�ajne je vaûnosti da sustav korisniku preporu�i stavke koje ko-risnik joö nije vidio
– poveÊanje raznolikosti preporuke: postizanjem ovog cilja osigurava se da sustavkorisniku ne dosa�uje ponovnim preporukama sli�nih proizvoda.
2.1.2. Osnovni algoritam preporuke temeljen na suradnji ko-risnika
Preporu�iteljski sustavi temeljeni na suradnji korisnika preporu�uju objekte koji bi bilizanimljivi sli�nim korisnicima. Procijena korisnisti e(c, o) objekta o za korisnika c sera�una na osnovu njegove korisnosti korisnicima cÕ œ C Õ koji su sli�ni (sli�nih profila)korisniku c na sljedeÊi na�in:
S · U = E (2.1)
S
WWWU
s11 · · · s1n... s
ix
...s
n1 · · · snn
T
XXXV ·
S
WWWU
u11 · · · u1m... u
xj
...u
n1 · · · unm
T
XXXV =
S
WWWU
e11 · · · e1m... e
ij
...e
n1 · · · enm
T
XXXV (2.2)
Vrijednost six
predstavlja koliko je korisniku ci
sli�an korisnik cx
, vrijednost uxj
ko-liko je korisniku c
x
koristan objekt oj
, a vrijednost eij
predstavlja procijenjenu korisnostobjekta o
j
korisniku ci
.[5]
2.2. Raspodijeljeni sustaviRaspodijeljeni sustav je model u kojem komponente koje se nalaze na umreûenim ra�u-nalima me�usobno komuniciraju i koordiniraju svoje postupke. Ra�unala su mreûnimsu�eljima povezana u ra�unalni grozd. Ra�unalni grozd moûe se predo�iti kao skupusko povezanih ra�unala koja rade zajedno tako da se mogu gledati kao jedno ra�u-nalo. Naj�eöÊe je organiziran kako prikazuje slika 2.1, jedno ra�unalo (kontrolni �vor)vröi raspodjelu posla po ostalim ra�unalima (radni �vorovi) te tako ima nadzor nadsvim resursima ra�unalnog grozda. Oni se koriste kako bi poveÊali performanse i/ili
3
dostupnost sustava naspram one kada se koristi samo jedno ra�unalo. Komponenteraspodijeljenog sustava me�usobno djeluju kako bi postigli zajedni�ki cilj.
Raspodijeljena ra�unanja se tako�er odnose na koriötenje raspodijeljenih sustavaza rjeöavanje ra�unalnih problema. U raspodijeljenom ra�unalstvu jedan problem jepodijeljen na viöe zadataka od kojih je svaki rijeöen s jednim ili viöe ra�unala.
Slika 2.1: Pojednostavljeni prikaz naj�eöÊe organizacije ra�unalnog grozda
4
3. Koriötene tehnologije
3.1. Apache SparkApache Spark je programski okvir otvorenog koda namijenjen za raspodijeljenu obradupodataka. Izvorno je razvijen u AMPLabu2. Kasnije, osnova programskog koda je doni-rana ASF3 zakladi, koji ga odrûavaju sve do danas. Spark pruûa su�elje za programira-nje cijelih ra�unalnih grozdova s implicitnom podatkovnom paralelnoöÊu i tolerancijomna pogreöke.
Apache Spark je brzi, RAM orijentiran sustav za obradu podataka s elegantnim iizraûajnim API-jem za razvoj koji omoguÊuje ra�unalnim znanstvenicima u�inkovituobradu proto�nih, strojno u�enih ili SQL optereÊenja koja zahtijevaju brz iterativanpristup skupovima podataka. Apache Spark podrûava dva na�ina obrade: obradu pohrpama (engl. batch processing) i obradu toka podataka (engl. stream processing).
Slika 3.1: Sastavni dijelovi Apache Spark programskog okvira
2AMPLab je laboratorij fokusiran za analizu velikih koli�ina podataka. Nalazi se u sklopu Berke-
leyja, Sveu�iliöte u Californiji
3ASF (engl. Apache Software Foundation) je decentralizirana zajednica programera koji svoje
proizvode zaötiÊuju Apache licencom.
5
Slika 3.1 prikazuje glavne dijelove od koji se sastoji Spark. Iako je Spark veÊi-nom napisan u programskom jeziku Scala, iz slike se moûe uo�iti da jezgra Sparkadaje podröku i drugim programskim jezicima (Java, Python i R). Spark omoguÊujekoriötenje niza biblioteka od kojih su na slici istaknute �etiri najbitnije: SparkSQLza setove podataka, MLlib za strojno u�enje, GraphX za grafovno paralelno izvröa-vanje i SparkStreaming biblioteku za obradu proto�nih struktura podataka. Sve ovebiblioteke korisnik moûe jednostavno kombinirati unutar iste aplikacije. U ovom radubit Êe koriötena samo MLlib biblioteka jer se u njoj nalaze implementacije algoritamapreporu�ivanja.
3.2. Apache FlinkApache Flink je programski okvir otvorenog koda za raspodijeljenu proto�nu paralelnuobradu podataka koja:
– pruûa to�ne rezultate, �ak i u slu�aju izvanrednih ili kasnih dolazaka podataka.
– je otporna na greöke i moûe se bez poteökoÊa oporaviti od neuspjeha, a istodobnoosigurati "to�no-jednom" obradu podataka.
– se obavlja u velikoj koli�ini, pokrenuta na tisuÊe �vorova sa odli�nom propusnostii karakteristikama kaönjenja.
Slika 3.2: Sastavni dijelovi Apache Flink programskog okvira [4]
Obrada podataka moûe biti po hrpama (engl. batch) ili u slijedu podataka (engl.stream). Apache Flink daje upravo ta dva tipa aplikacijskog programskog su�elja.
6
Aplikacijsko programsko su�elje za obradu podataka u hrpama moûe se koristiti uJavi, Scali i Pythonu, dok su�elje za slijednu obradu podataka pruûa samo podrökuza Javu i Scalu. Dobro je znati da je u programskom okviru Apache Flink obradapodataka po hrpama specijalni slu�aj slijedne obrade podataka. To je lako predo�itiako hrpe podataka zamislimo kao kona�an slijed podataka.
Iz slike 3.2 vidimo da aplikacijsko programsko su�elje pruûa biblioteke za laköe ma-nipuliranje podacima. Na dnu slike moûe se primijetiti da se Apache Flink ne moranuûno pokretati samo na ra�unalnom grozdu. Moûe se koristiti na lokalnom ra�unalu,Apache Hadoop Yarn-u i drugim, na slici, navedenim sustavima. Za usporedbu s osta-lim preporu�iteljima bit Êe koriötena samo FlinkML biblioteka jer su u njoj sadrûaneimplementacije algoritama preporu�ivanja. BuduÊi da Flink ne pruûa sustav skladi-ötenja podataka, pruûa konektore na najpopularnije sustave poput Amazon Kinesis,Apache Kafka, HDFS, Apache Cassandra i ElasticSearch.
3.3. Apache MahoutApache Mahout je programsko okruûenje najviöe koriöteno za strojno u�enje. Imple-mentiran je nad Apache Hadoop-om i koristi dobro poznatu MapReduce paradigmu.Mahout pruûa alate za obradu podataka takve da pokuöavaju automatski pronaÊi smis-lene obrasce u danim velikim skupovima podataka. Glavne zna�ajke okruûenja Mahoutsu:
– raspodijeljeni preporu�itelj - analizira ponaöanje korisnika i predlaûe mu noveproizvode
– grupiranje - uzima predmete u odre�enom razredu i organizira ih u grupe kojeim prirodno pripadaju tako da su stavke iste grupe jako sli�ne jedna drugoj
– razvrstavanje - analizira postojeÊe kategorizacije i zatim dodjeljuje neklasifici-rane stavke u odgovarajuÊu kategoriju
– pronalazak �estih stavki - analizira stavke u grupama (npr. proizvode u koöarici)i identificira koje se stavke obi�no prikazuju zajedno
7
4. ALS algoritam preporu�ivanja
ALS (eng. Alternating Least Squares) algoritam je jedan od stabilnijih algoritamaza izra�un parametra preporu�ivanja. Za razliku od ostalih algoritama puno se �eöÊekoristi upravo zbog svoje stabilnosti. Funkcionira tako da matricu Q, koja predstavljavezu izme�u korisnika i proizvoda, faktorizira u matrice X i Y gdje je matrica Xkorisnika-karakteristika matrica, a matrica Y karakteristika-proizvod matrica.
ALS predstavlja druga�iji pristup optimizaciji funkcije gubitaka4. Klju�no je pri-mjetiti da se neki nekonveksni optimizacijski problem, poput funkcije gubitaka, moûepretvoriti u "jednostavan" kvadratni ra�un samo ako se fiksira jedna od dvije nepoz-nanice. ALS radi upravo to, alternirajuÊi fiksira jednu od te dvije nepoznanice. Kadajednu fiksira, drugu ra�una i obratno.
minX,Y
ÿ
k,p
(rk,p
≠ xTk
yp
)2 + ⁄3 ÿ
k
nk
||xk
||2 +ÿ
p
np
||yp
||24
Slika 4.1: Kvadratna funkcija gubitaka koriötena u ALS algoritmu.Greöka iznad cilja uzrokuje iste gubitke kao i greöka ispod ûeljenog cilja.
⁄ - parametar regularizacije; nk
- broj ocijenjenih proizvoda od strane
korisnika k; np
- broj ocijena za proizvod p
4.1. Analiza ALS-aNeka je Q
kp
matrica odnosa korisnika k i proizvoda p definirana na sljedeÊi na�in:
Qkp
=
Y_]
_[
r ako je korisnik k ocijenio proizvod p
0 ako korisnik k nije ocijenio proizvod p(4.1)
gdje r predstavlja vrijednost ocjene iz odre�enog intervala. Ako postoji m korisnika i n4Funkcija gubitaka je funkcija koja pridruûuje svakoj vrijednosti jedne ili viöe varijabli jedan realni
broj intuitivno predstavljajuÊi odre�eni "troöak" povezan s doga�ajem
8
proizvoda, tada se moûe pronaÊi matrica karakteristike koja reprezentira proizvode.To zna�i da je svakom proizvodu dodjeljen odre�en vektor karakteristike. Prira�unanjumatrica karakteristike algoritam ne uzima nikakva znanja o sadrûaju proizvoda. Na-ravno, analogno se moûe izra�unati i vektor karakteristike za svakog korisnika. Matricukarakteristika za korisnike Êemo ozna�iti izrazom X œ Rmxf , a matricu karakteristikaza proizvode izrazom Y œ Rfxn.5 UzimajuÊi u obzir da postoje dvije nepoznate vari-jable, primjenjuje se ALS pristup sa regularizacijom. Na taj na�in prvo se procjenjujeY koristeÊi X, zatim X koristeÊi Y . Nakon dovoljnog broja iteracija, postiûe se to�kukonvergencije gdje se matrice X i Y viöe ne mijenjaju ili je promjena njihovih vrijed-nosti zanemariva. Upravo se na taj na�in dobije faktorizacija prvobitne matrice Q
kp
na matrice X i Y .
Qkp
=
Q
ccca
4.3 1.3 ? 4.4? 4.5 2.4 3.2
3.3 4.0 4.0 ?
R
dddb ¥
Q
cccaX
R
dddb •1
Y2
(4.2)
5U matrici Y svaki proizvod je reprezentiran vektorom stupca, dok je u matrici X svaki korisnik
reprezentiran vektorom retka.
9
5. Evaluacija sustava preporuke
U odjeljku 2.1. objaönjeno je da se preporu�itelji mogu podijeliti u dvije osnovnekategorije: online i o�ine preporu�itelje. Upravo ta podjela diktira i podjelu na�inaevaluacije, tj. svaka kategorija ima svoje metode evaluacije. Govorit Êemo o online io�ine metodama evaluacije.
U online na�inu evaluacije preporu�iteljskog sustava moûe se, na primjer, uzeti uobzir broj klikova pokaziva�em koje korisnik napravi upravo na one proizvode koje musustav preporu�i. Takav oblik evaluacije se naziva A/B testiranje i njime je moguÊeizmjeriti izravan utjecaj preporu�itelja na ponaöanje korisnika.
O�ine na�ini evaluacije su daleko �eöÊi na�ini evaluacije preporu�itelja iz perspek-tive istraûivanja. U ovom radu potpuni naglasak je stavljen na o�ine na�in evaluacije,konkretno na evaluaciju to�nosti preporuke sustava.
5.1. Ciljevi evaluacijeOsim to�nosti preporuke sustava kao najbitniji cilj evaluacije, postoje joö neki ciljevikoje je dobro uzeti u obzir kao na primjer pokrivenost, pouzdanost, novost, sposobnostslu�ajnog otkrivanja, raznolikost, stabilnost i nadogradivost.
5.1.1. Mjerenje to�nosti procjeneKao öto je veÊ spomenuto, to�nost je jedna od najvaûnijih mjera kojom se ocjenjujusustavi preporuke. U ovom odjeljku bit Êe detaljnije objaönjeni na�ini kako se onamjeri. U sustavima, ocjene proizvoda su naj�eöÊe numeri�ke vrijednosti koje se trebaprocijeniti. Stoga su mjere to�nosti �esto sli�ne onima koje se koriste u regresijskommodeliranju.
Mjerenje se odvija nad testnim skupom podataka, S. Neka je E µ S skup poda-taka koji Êe se koristiti za evaluaciju. Svaki unos skupa E je podatak korisnik-proizvodu obliku (k, p) koji odgovara odre�enom unosu u matrici ocjena O. Neka o
kp
pred-stavlja poznatu ocjenu korisnika k za proizvod p koja je sakrivena za sustav, a vrijedi(k, p) œ E. Nadalje, neka je oÕ
kp
preporu�ena ocjena sustava za isti par korisnik-
10
proizvod. Pogreöka pri procjeni tog unosa je razlika ocjene korisnika i preporu�eneocjene preporu�itelja, a dana je jednadûbom e
kp
= okp
≠ oÕkp
. Ovako definiran pogreökamoûe se koristiti na viöe na�ina za izra�un ukupne pogreöke sustava. Jedan od na�ina,koji je koriöten u ovom radu, je korijen kvadrata srednje vrijednosti pogreöke, RMSE6:
RMSE =ı̂ıÙ
q(k,p)œE e
2kp
|E| (5.1)
Iako je najpoznatija mjera to�nosti, jedna od karakteristika RMSE jednadûbe jeta da se u njoj o�ituje nerazmjerno "kaûnjavanje" velikih pogreöaka zbog kvadratneoperacije unutar zbroja te to treba uzeti u obzir.
U analizi preporu�itelja bit Êe koriötena njezin normalizirani oblik, odnosno NRMSE.Definiran je na isti na�in samo je jednadûba dodatno podijeljena s rasponom ocjena,o
max
≠ omin
:
NRMSE = RMSEo
max
≠ omin
(5.2)
Vrijednosti normalizirane jednadûbe uvijek ulaze u interval [0, 1] te su takve vri-jednost intuitivnije za usporedbu efikasnosti algoritma na razli�itim preporu�iteljima inad razli�itim skupovima podataka.[1]
5.2. Priprema podatakaZa kvalitetnu evaluaciju sustava potrebni su podaci nad kojima Êe se evaluacija vröiti.Podatke je potrebno podijeliti u sljedeÊa tri skupa podataka.
Skup podataka za treniranje: veÊi dio podataka koji se koristi za treniranje modelakoji Êe biti koriöten za preporuku.
Skup podataka za validaciju: najmanji dio podataka koji se koristi za pronalazaknajboljih parametara algoritma (npr. pronalazak optimalne konstante regularizacije).
Skup podataka za testiranje: dio podataka koji se koristi za testiranje to�nosti algo-ritma. Bitno je da se ovi podaci ne koriste kao dio podataka za treniranje ili validacijujer takvo testiranje moûe dovesti do prividne to�nosti preporu�itelja.
Za potrebe evaluacije sustava, u ovom radu priprema podataka vröena je hold-outdistribucijom. Hold-out metoda distribucije se vröi tako da se originalni set podatakarazdvoji na dva podseta.
6RMSE (engl. root mean squared error) je jedan od naj�eöÊe koriötenih na�ina pri izra�unu to�nosti
preporu�ivanja sustava
11
Slika 5.1: Grafi�ki prikaz podjele podataka hold-out distribucijom u 2 koraka
Promotrimo sliku 5.1. Izme�u stanja (1) i (2) je vröena hold-out metoda. Tako�er,primijenili smo ju i na setu B u drugom koraku te tako dobili setove BÕ i C. Na ovojslici podatci za treniranje su reprezentirani setom A, podaci za testiranje setom BÕ apodaci za validaciju setom C. U usporedbi koja je kasnije provedena u ovom radu,omjeri setova su A : BÕ : C = 3 : 1 : 1.
12
6. Implementacija usporedbe
U ovom poglavlju bit Êe objaönjena implementacijska rjeöenja usporedbe na tri proma-trana sustava, a rezultati su izneseni u sljedeÊem poglavlju.
6.1. Parametri ALS algoritmaPrije po�etka rada s preporu�iteljem potrebno je postaviti odre�ene postavke za ALSalgoritam. U 4. poglavlju je re�eno da na algoritam utje�e parametar regularizacije⁄. Taj prametar predstavlja odstupanje od testnih podataka, odnosno koliko procjenapreporu�itelja smije odstupiti da se joö uvijek smatra valjanom. Ta veli�ina je postav-ljena na 0.1 jer je to dovoljna razina preciznosti za ovo testiranje. Zatim, potrebno jezadati duljinu vektora karakteristike. Ovaj podatak se dobiva koriötenjem skupa poda-taka za validaciju. Kao öto je re�eno u odjeljku 5.2. upravo taj skup sluûi za pronalazaknajboljih parametara algoritma. Prolaskom kroz razli�ite veli�ine dobiven je rezultatkoji kaûe da kada se koristi 3k set zapisa najbolja duljina vektora karakteristike je 4,dok za veÊu koli�inu zapisa kao öto je set od 20M zapisa ona iznosi 8. Ostao je joöjedan parametar, a to je broj iteracija za uspjeönu faktorizaciju matrice ocjena koji Êebiti mijenjan kroz evaluaciju.
Ukratko, ovdje su gore navedeni parametri:
Parametar Vrijednost⁄ 0.1
duljina vektora karakteristike 4(3k) ili 8(20M)broj iteracija 5/10/15/20
Slika 6.1: ALS parametri
13
6.2. Implementacija na okruûenju Apache MahoutApache Mahout ima implementiranu naredbu mahout parallelALS koja radi parale-liziranu obradu podataka s ALS algoritmom te Êe upravo ta naredba biti iskoriötenau svrhu evaluacije. Kao ulaz zahtjeva razne parametre od kojih Êe biti postavljenisljedeÊi:
Parametar Zna�enje––input putanja do ulazne datoteke za treniranje algoritma––output putanja do direktorija u kojemu Êe biti kreirane matrice X i Y––lambda parametar normalizacije––numFeatures duljina vektora karakteristike––numIterations parametar normalizacije
Slika 6.2: Mahout parametri za parallelALS naredbu
Kada naredba mahout parallelALS zavröi potrebno je pozvati sljedeÊu naredbukoja Êe evaluirati treniran ALS, odnosno faktorizaciju matrica X i Y . Ta naredba jemahout evaluateFactorization i prima sljedeÊe parametre:
Parametar Zna�enje––input putanja do ulazne datoteke sa setom za validiranje algoritma––output putanja do direktorija za rezultat evaluacije7
––userFeatures putanja do direktorija s matricom X––itemFeatures putanja do direktorija s matricom Y
Slika 6.3: Mahout parametri za evaluateFactorization naredbu
6.3. Implementacija na okruûenju Apache Spark iApache Flink
BuduÊi da Apache Spark i Apache Flink nemaju implementiranu naredbu za izra�uns ALS algoritmom te evaluaciju istoga, detaljna implementacija se nalazi na CD-upriloûenom uz ovaj rad. Slijede ukratko koraci implementacije:
1. Kreiranje i podeöavanje izvröne okoline. U Apache Sparku je to SparkContext,dok je u Apache Flink okruûenju to ExecutionEnvironment.
14
2. U�itavanje svih setova podataka (trening, test i validacija).
3. Kreiranje ALS objekta i konfiguracija.
4. Treniranje konkretnog modela.
5. Pronalazak optimalnih konfiguracijskih postavki modela. (ovaj korak se preska�ekad su optimalne postavke prona�ene)
6. Validacija preporu�itelja i izra�un NRMSE pogreöke.
15
7. Rezultati evaluacije
Preporu�itelji su evaluirani u dva na�ina rada:
– lokalni na�in: na�in u kojem se preporu�itelj pokreÊe na jednom ra�unalu uviöe dretvi i tako vröi paralelnu obradu (Intel Core i5 2,5 GHz, 16 GB RAM )
– ra�unalni grozd: stvarno okruûenje za koje su raspodijeljeni sustavi namije-njeni (6 x Intel Core i3 3,3 GHz, 8 GB RAM )
Tako�er, preporu�itelji su evaluirani i na dva seta podataka:
– 3k: set podataka koji sadrûi otprilike 3 tisuÊe zapisa
– 20M: set podataka koji sadrûi neöto viöe od 20 milijuna zapisaOba seta podataka su vlasniötvo GroupLens8 organizacije i prije koriötenja su priprem-ljena postupkom opisanim u odlomku 5.2.[3]
7.1. Rezultati u lokalnom na�inu rada
0 5 10 15 20 250.180
0.185
0.190
0.195
0.200
Broj ponavljanja faktorizacije
NR
MSE
Apache SparkApache Flink
Apache Mahout
Slika 7.1: Rezultati na 10k setu podataka u lokalnom na�inu rada
8https://grouplens.org - GroupLens Research Group
16
Iako se �itanjem grafa 7.1 moûe �initi da su sva tri sustava jednako dobra, postojijedna karakteristika po kojoj se znatno razlikuju. Zbog svoga na�ina manipuliranjapodacima, tj. u�itavanja cijelog seta podataka u radnu memoriju, Apache Spark je usvakom testiranju vremenski prestizao druga dva sustava.
Iteracije Spark Mahout Flink5 18 sec 27 sec 26 min10 21 sec 44 sec 32 min15 22 sec 1:09 min 34 min20 23 sec 2:40 min 40 min
Slika 7.2: Vrijeme evaluiranja preporu�itelja u lokalnom na�inu rada nadsetom od 10 tisuÊa zapisa
Ne samo da je Apache Flink-u trebalo apsurdno viöe vremena da izvröi isti posaokao i druga dva preporu�itelja, zbog svog na�ina obrade podataka trebalo mu je 20GBprostora na tvrdom disku.
Upravo zbog koli�ine prostora koju je zahtijevao te vremenskog trajanja evaluacijera�unalo na kojem je testirano okruûenje Apache Flink nije moglo podrûati testiranjeseta podataka od dva milijuna zapisa.
0 5 10 15 20 250.160
0.163
0.165
0.168
0.170
Broj ponavljanja faktorizacije
NR
MSE
Apache SparkApache Mahout
Slika 7.3: Rezultati evaluacije na 20M setu podataka u lokalnom na�inu rada
17
7.2. Rezultati na ra�unalnom grozduZbog nedostatka programske podröke za okruûenje Apache Flink na koriötenom ra�u-nalnom grozdu Zavoda za telekomunikacije, bit Êe uspore�ena samo ostala dva okru-ûenja, Apache Spark i Apache Mahout.
0 5 10 15 20 250.180
0.185
0.190
0.195
0.200
Broj ponavljanja faktorizacije
NR
MSE
Apache SparkApache Mahout
Slika 7.4: Rezultati evaluacije na 10k setu podataka u distribuiranom na�inu rada
0 5 10 15 20 250.160
0.163
0.165
0.168
0.170
Broj ponavljanja faktorizacije
NR
MSE
Apache SparkApache Mahout
Slika 7.5: Rezultati evaluacije na 20M setu podataka u distribuiranom na�inu rada
Naravno, razlike u implementaciji algoritma postoje, ali moûe se primijetiti da suzanemarive. Razlike u NRMSE vrijednosti na setu od 20 milijuna zapisa izme�u ApacheSparka i Apache Mahouta su neznatne. Zanimljivo je opaziti da su grafovi 7.3 i 7.5gotovo identi�ni. Iz tog opaûanja moûe se zaklju�iti da raspodijeljeni na�in rada ne
18
mijenja na�in izvo�enja algoritma, veÊ samo raspore�uje zadatak po �vorovima i takoga brûe i efikasnije obavlja.
SljedeÊe dvije tablice prikazuju vrijeme potrebno za evaluaciju preporu�itelja u obaokruûenja. Vrijeme je mjereno nad potpunom evaluacijom koja uklju�uje: �itanje poda-taka, faktorizacije matrice ocjena, preporuka na osnovu test seta podataka i ra�unanjeNRMSE pogreöke.
Iteracije Spark Mahout5 10.4 sec 34.0 sec10 11.5 sec 35.5 sec15 12.3 sec 48.8 sec20 12.8 sec 59.7 sec
Slika 7.6: Vrijeme evaluiranja preporu�itelja u raspodijeljenom na�inurada na 10k setu
Iteracije Spark Mahout5 1:23 min 3:25 min10 1:36 min 4:45 min15 1:46 min 6:06 min20 2:02 min 7:39 min
Slika 7.7: Vrijeme evaluiranja preporu�itelja u raspodijeljenom na�inurada na 20M setu
19
8. Zaklju�ak
U ovom radu objaönjeno je öto je raspodijeljeni preporu�itelj, gdje se takav sustavkoristi i koji su njegovi glavni ciljevi. Napravljen je kratak i saûet uvod u tehnologijekoje se koriste u tu svrhu. Na jednostavan na�in je prikazan i objaönjen jedan odkvalitetnijih algoritama preporu�ivanja sadrûaja.
Rezultati evaluacije pojedinog preporu�itelja doveli su do zaklju�ka da je ApacheSpark najbolje rjeöenje za implementaciju raspodijeljenog preporu�itelja, ne samo daima najbolju vrijednost NRMSE-a, veÊ je i najbrûi u obradi podataka. Iako su imple-mentacije raspodijeljenih preporu�itelja na Apache Flink i Apache Spark okruûenjimajako sli�ne, razlika u na�inu spremanja i obrade podataka svakog okruûenja je bilapresudna.
20
Literatura
[1] Aggarwal, Charu C. "Recommender Systems: The Textbook", Springer InternationalPublishing Switzerland (2016)
[2] Chen, H., Gou L., Zhang X., Giles C. "CollabSeer: A Search Engine for Collabora-tion Discovery" The Pennsylvania State University (2011)
[3] Harper, F. M., Konstan, J. A. "The MovieLens Datasets: History and Context"ACM Transactions on Interactive Intelligent Systems (2015)
[4] Rohrmann, Till "Computing Recommendations at Extreme Scale with Apache Flink"(2015)https://berlinbuzzwords.de/15/session/computing-recommendations-extreme-scale-apache-flink
[5] Raspodijeljena obrada velike koli�ine podataka, "8. Sustavi za preporu�ivanje obje-kata u raspodijeljenom okruûenju" (2017)https://www.fer.unizg.hr/_download/repository/ROVKP-2017_08.pdf
21
Usporedba raspodijeljenih preporu�itelja
Saûetak
Raspodijeljeni preporu�itelj je model sustava kojem se komponente nalaze unutarra�unalnog grozda s osnovnom zadaÊom da napravi relevantnu preporuku baziranu nainformacijama koje je prikupio. Da bi sustav bio uspjeöno to�an, promatrani zapisi sene smiju koristi za trening i validaciju sustava. Evaluacijom preporu�itelja dolazi se dozaklju�ka da je Apache Spark najbolji i najlaköi za implementirati.
Klju�ne rije�i: Raspodjeljeni sustavi, sustavi preporuke, Apache Spark, Apache Ma-hout, Apache Flink.
A Comparison of Distributed Recommenders
Abstract
A distributed recommender is a cluster-computing model with one main goal, tomake a relevant recommendation based on information it has collected. In order forthe system to be accurate, all the observed entries of a ratings matrix cannot be userboth for training the model and for accuracy evaluation. By evaluating recommendersystems, we can make a conclusion that Apache Spark is the best of them and theeasiest to implement.
Keywords: Distributed systems, recommender systems, Apache Spark, Apache Ma-hout, Apache Flink.
Recommended