27
SVEU ˇ CILIŠTE U ZAGREBU FAKULTET ELEKTROTEHNIKE I RA ˇ CUNARSTVA ZAVRŠNI RAD br. 5161 Usporedba raspodijeljenih preporu ˇ citelja Patrik Mihaljevi´ c Zagreb, lipanj 2017.

Usporedba raspodijeljenih preporuciteljaˇ · 2017. 9. 11. · Slika 3.1: Sastavni dijelovi Apache Spark programskog okvira 2AMPLab je laboratorij fokusiran za analizu velikih koli

  • Upload
    others

  • View
    0

  • Download
    0

Embed Size (px)

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.