IMPLEMENTACIJA PRIPOROČILNEGA SISTEMA NA OSNOVI GRAFA, IZDELANEGA IZ N-TERIC

Size: px
Start display at page:

Download "IMPLEMENTACIJA PRIPOROČILNEGA SISTEMA NA OSNOVI GRAFA, IZDELANEGA IZ N-TERIC"

Transcription

1 Fakulteta za elektrotehniko, računalništvo in informatiko Smetanova ulica Maribor, Slovenija Lovro Mažgon IMPLEMENTACIJA PRIPOROČILNEGA SISTEMA NA OSNOVI GRAFA, IZDELANEGA IZ N-TERIC Magistrsko delo Maribor, maj 2016

2 IMPLEMENTACIJA PRIPOROČILNEGA SISTEMA NA OSNOVI GRAFA, IZDELANEGA IZ N-TERIC Magistrsko delo Študent: Lovro Mažgon Študijski program: Študijski program 2. stopnje Informatika in tehnologije komuniciranja Mentor: red. prof. dr. Vili Podgorelec, univ. dipl. inž. rač. in inf. Lektorica: Polona Zgaga, prof. i

3 ii

4 Zahvala Rad bi se zahvalil mentorju dr. Podgorelcu za svetovanje pri pisanju magistrskega dela. Najlepša hvala celotni družini, ki me je skozi moje šolanje podpirala, spodbujala in na koncu le dočakala njegov zaključek. Karmen, hvala, da si ob slabih dnevih poslušala moje tarnanje ter ob dobrih z mano slavila uspehe. Večno bom hvaležen za babico, ki mi je zmeraj stala ob strani. Žal mi je, da ni doživela zaključka mojega študija. iii

5 Implementacija priporočilnega sistema na osnovi grafa, izdelanega iz n-teric Ključne besede: priporočilni sistem, graf, naključni sprehod, asociacijska pravila UDK: 004.4'275: (043.2) Povzetek V magistrskem delu je opisano področje priporočilnih sistemov. Zapisali smo njihovo formalno definicijo, naloge, ki jih opravljajo, ter vire podatkov in znanja. Navedli smo različne tehnike podajanja priporočil ter opisali pristope k uspešni evalvaciji priporočilnih sistemov. V praktičnem delu smo izdelali priporočilni sistem za priporočanje programskih ogrodij, namenjen programerjem. Implementirali smo tri priporočilne algoritme, ki bazirajo na podatkih v obliki grafa, in jih primerjali z algoritmom na osnovi asociacijskih pravil. Algoritme smo optimizirali in testirali na podatkih, pridobljenih s spletnega portala Stack Overflow. Pridobljeni rezultati nakazujejo, da ima uporabljen pristop visok potencial ter da je v pravih razmerah smiseln in uporaben. iv

6 Implementation of a Recommender System Based on a Graph Extracted from Itemsets Key words: recommender system, graph, random walk, association rules UDK: 004.4'275: (043.2) Abstract The thesis addresses the area of recommender systems. We described their formal definition, tasks, data and knowledge sources. Furthermore, we defined various recommender techniques as well as approaches to the successful evaluation of recommender systems. Our empirical work covers the construction of a recommender system for programmers, which recommends frameworks. We implemented three recommender algorithms, which are based on graph data, as well as one based on association rules. We optimized the algorithms and tested them on data obtained from the website Stack Overflow. The results suggest that the approach has high potential and that it is reasonable and useful in the right circumstances. v

7 KAZALO 1 Uvod Priporočilni sistemi Formalna definicija Naloge priporočilnih sistemov Viri podatkov in znanja Algoritmični pristopi Stereotipiziranje Filtriranje na osnovi vsebine Filtriranje s sodelovanjem Sopojavitve izdelkov Pristop na osnovi grafa Splošna relevantnost Hibridni pristop Ocenjevanje uspešnosti priporočilnih algoritmov Oblike eksperimentov Metrike za točnost priporočil Implementacija priporočilnega sistema Gradnja in opis baze podatkov Stack Overflow GitHub Gradnja baze podatkov Izdelava asociacijskih pravil z algoritmom Apriori Particioniranje baze podatkov Opis baze podatkov Opis priporočilnih algoritmov Priporočila z algoritmom "graph traversal" Priporočila z algoritmom "random walk with restart" Priporočila z algoritmom DAP Priporočila na osnovi asociacijskih pravil Evalvacija algoritmov Priprava testnih množic in opis eksperimenta Izbira parametrov za posamezni algoritem Analiza rezultatov Predlogi za nadaljnje delo Sklep Viri Priloge vi

8 KAZALO SLIK Slika 2.1: Tipi tehnik za podajanje priporočil...4 Slika 2.2: Matrika uporabnikov in izdelkov. Celice vsebujejo vrednost u(c,s) (kjer ta obstaja), ki predstavlja oceno uporabnika c za izdelek s...6 Slika 2.3: Algoritmični pristopi podajanja priporočil glede na vire znanja...14 Slika 2.4: Filtriranje s sodelovanjem. Levo na osnovi uporabnikov, desno na osnovi izdelkov...17 Slika 3.1: Grafični prikaz preoblikovanja podatkov in gradnje baze podatkov...34 Slika 3.2: Graf podpore značk, ki so bile zajete v prvem krogu algoritma Apriori...37 Slika 3.3: Izsek iz grafa, prikazan s pomočjo Neo4j...40 Slika 3.4: Grafično prikazana distribucija stopenj vozlišč v logaritemskem merilu...41 Slika 3.5: Grafični prikaz grafa. Barve predstavljajo posamezne particije...42 Slika 3.6: Grafa prikazujeta rezultate algoritma "graph traversal" v odvisnosti od uporabljene strategije za izračun teže...53 Slika 3.7: Graf prikazuje rezultate algoritma "random walk with restart" v odvisnosti od števila korakov...54 Slika 3.8: Graf prikazuje rezultate algoritma "random walk with restart" v odvisnosti od konstante c...55 Slika 3.9: Graf prikazuje rezultate algoritma DAP v odvisnosti od strategije združevanja in števila particij...56 Slika 3.10: Graf prikazuje rezultate algoritma DAP v odvisnosti od konstante c...56 Slika 3.11: Graf primerja rezultate in povprečne čase algoritmov na podatkovnih množicah tags_2430, tags_789 in tags_ Slika 3.12: Grafa prikazujeta povprečje vrednosti metrik preciznost@k in priklic@k na podatkovnih množicah tags_789 in tags_ Slika 3.13: Graf primerja rezultate in povprečne čase algoritmov na podatkovnih množicah frameworks_819, frameworks_278 in frameworks_ Slika 3.14: Grafa prikazujeta povprečje vrednosti metrik preciznost@k in priklic@k na podatkovnih množicah frameworks_278 in frameworks_ Slika 3.15: Uspešnost algoritmov na osnovi grafa deljena z uspešnostjo algoritma na osnovi asociacijskih pravil...61 vii

9 KAZALO TABEL Tabela 2.1: Najbolj pogoste oblike eksplicitnih lestvic...13 Tabela 2.2: Izdelki so kategorizirani glede na relevantnost in priporočenost...26 Tabela 2.3: Primer sortiranega seznama priporočil z vrednostmi preciznost@k (P@k), priklic@k (R@k) in spremembo priklica@k (ΔR@k)...28 Tabela 3.1: Rezultati particioniranja grafa z algoritmi KaFFPa, Metis in Scotch...39 Tabela 3.2: Opis baze podatkov v obliki CSV...39 Tabela 3.3: Seznam testnih množic...50 Tabela 3.4: Primeri priporočil, kjer je vhod vzet iz asociacijskega pravila...51 Tabela 3.5: Seznam algoritmov, njihovih oznak in parametrov...57 KAZALO ALGORITMOV Algoritem 3.1: Psevdokoda algoritma "graph traversal"...43 Algoritem 3.2: Psevdokoda algoritma "random walk with restart"...45 Algoritem 3.3: Psevdokoda algoritma DAP...47 Algoritem 3.4: Psevdokoda algoritma na osnovi asociacijskih pravil...48 PRILOGE Priloga A Lupinski skript za izdelavo SOQuestions.csv in SOTags.csv...69 Priloga B Rezultati algoritma na osnovi asociacijskih pravil...71 Priloga C Rezultati algoritma "graph traversal"...71 Priloga D Rezultati algoritma "random walk with restart"...72 Priloga E Rezultati algoritma DAP...74 viii

10 1 UVOD Ljudje moramo v vsak dan sprejemati različne odločitve. Odločitve, ki nosijo nizko tveganje, kot na primer katero znamko mleka kupiti ali katero radijsko postajo nastaviti v avtu, pa tudi takšne, ki lahko imajo resnejše posledice, kot recimo nakup avta ali najem kredita. Običajno se trudimo, da bi odločitve sprejemali racionalno in na podlagi relevantnih podatkov, do katerih imamo dostop. To praviloma vključuje iskanje podatkov na internetu, posvetovanje s poznavalci ter z ostalimi ljudmi, ki že imajo izkušnje s sprejemanjem podobnih odločitev. Ob tem se nemalokrat soočamo s poplavo podatkov, v kateri se le stežka znajdemo, in za to porabimo veliko časa in truda. Tukaj nastopijo priporočilni sistemi. Priporočilni sistem je programsko orodje, ki svojim uporabnikom priporoča izdelke, za katere je ocenil, da so v dani situaciji koristni. To počne na podlagi znanja, ki ga ima o izdelkih, o samem uporabniku ter o kontekstu, v katerem priporočilo podaja. Danes priporočilne sisteme srečujemo vsak dan, vendar se včasih tega sploh ne zavedamo. Ti programi nam pomagajo pri izbiri filma, ki si ga želimo ogledati, predlagajo nam katero glasbo poslušati, katero knjigo ali članek prebrati, po kateri poti peljati do cilja, katero letalsko karto kupiti, kateri hotel izbrati, nenazadnje celo predlagajo, kdo bi lahko bil naš prijatelj na socialnem omrežju. Raziskave na področju priporočilnih sistemov so se sicer začele pojavljati že v koncu sedemdesetih let prejšnjega stoletja, vendar je to področje svoj razcvet doživelo s pojavom in razmahom interneta. Ta je omogočil, da sistem uporabljajo milijoni uporabnikov in ustvarjajo znanje, na podlagi katerega lahko priporočilni sistemi avtomatizirano podajajo natančna priporočila. Takrat se je njihova uporaba preselila med spletne storitve, ki so lahko z vključitvijo dobrih priporočilnih sistemov močno izboljšale svoje poslovanje. Prav zato priporočilni sistemi niso zanimivi le za uporabnike, pač pa tudi za ponudnike. V magistrskem delu se ukvarjamo s področjem priporočilnih sistemov. Vsebino smo razdelili v dva logična vsebinska dela. V prvem delu smo raziskali in opisali pretekla dognanja na tem področju, zapisali formalno definicijo priporočilnih sistemov ter opisali njihove naloge, cilje in vire, iz katerih črpajo znanje za priporočila. Prav tako smo opisali različne 1

11 pristope k podajanju priporočil, ki so se razvili do danes, ter pripravili pregled načinov ocenjevanja in evalvacije priporočilnih sistemov. Drugi del magistrskega dela vsebuje naše praktično delo, v katerem smo implementirali priporočilni sistem, ki podaja priporočila na podlagi podatkov, shranjenih v obliki grafa. To vključuje zbiranje in postavitev podatkovne baze podatkov, implementacijo štirih algoritmov, njihovo optimizacijo ter na koncu še evalvacijo. Pri evalvaciji algoritmov našega priporočilnega sistema smo preverjali naslednje hipoteze: H1 Z ustrezno načrtovanim algoritmom priporočanja lahko dosežemo visoko stopnjo točnosti pri izbiri priporočil. H2 Če z upoštevanjem uteži vozlišča in uteži relacije neusmerjen graf preoblikujemo v usmerjen graf, lahko pozitivno vplivamo na točnost algoritma. Ob koncu evalvacije smo podali še lastno oceno testiranih algoritmov ter podali predloge za nadaljnje delo. 2

12 2 PRIPOROČILNI SISTEMI Svetovni splet se je od svojega nastanka do danes razvil v vir podatkov, iz katerega ljudje pridobimo večino informacij, pa naj bo to za zasebne ali službene namene. Na svetovnem spletu lahko najdemo ogromno vsebin, v katerih bi se brez pravih orodij za iskanje in analizo podatkov informacije izgubile. Ta problem rešujemo z različnimi tehnikami s področja informacijskega poizvedovanja (angl. information retrieval). Informacijsko poizvedovanje je proces iskanja materiala (običajno dokumentov) nestrukturirane narave (običajno tekst) iz velike količine podatkov (običajno shranjenih na računalnikih), ki zadovoljuje trenutne potrebe po informacijah [1]. Čeprav začetki informacijskega poizvedovanja segajo v obdobje pred uporabo svetovnega spleta, je le-ta predvsem zaradi razvoja spletnih iskalnikov imel pomembno vlogo pri uveljavitvi novih idej. Kakšno povezavo ima informacijsko poizvedovanje s priporočilnimi sistemi? Slednji so se razvili s področja informacijskega poizvedovanja in se še danes nanj močno navezujejo, tako da je težko določiti ločnico med enim in drugim. Današnji spletni iskalniki namreč uporabljajo tehnike, ki jih praviloma pripisujemo priporočilnim sistemom, kot na primer prilagojeni iskalni rezultati za osebo glede na spol, starost, interese, lokacijo itd. Razlika med informacijskim poizvedovanjem in priporočilnim sistemom je odvisna od interakcije z uporabnikom. Rezultat priporočilnega sistema je razumljen kot priporočilo oz. izbira, vredna upoštevanja. Rezultat informacijskega poizvedovanja uporabnik interpretira kot zadetek, ki se sklada z vnesenim povpraševanjem. Priporočilni sistemi se še dodatno razlikujejo po višji stopnji osebne prilagoditve in samodejni aktivnosti, saj se običajno ne odzivajo le na povpraševanja, pač pa podajajo priporočila glede na trenuten kontekst [2]. Priporočilni sistemi so programska orodja in tehnike za predlaganje izdelkov, ki bi lahko bili za uporabnika koristni. S tem pomagajo uporabniku pri odločitvi in izbiri primernega izdelka ter olajšajo iskanje priljubljenih izdelkov. Med najbolj znane spletne portale, ki se poslužujejo teh tehnik, spadata zagotovo spletni trgovec Amazon ( in ponudnik pretočnih vsebin Netflix ( Prvi uporabniku prikazuje priporočila v različnih oblikah, med drugim povprečne ocene izdelkov drugih uporabnikov ter izdelke, ki so jih uporabniki kupili skupaj s trenutnim izdelkom. Netflix je najbolj znan po pripo- 3

13 ročilih filmov, ki bi utegnili zanimati uporabnika, kakor tudi po prikazovanju predvidene ocene filma, ki ga uporabnik še ne pozna. Omenili smo, da priporočilni sistemi predlagajo izdelke, pri čemer z besedo "izdelek" označujemo stvari, ki jih sistem uporabniku priporoča. Pri tem ni nujno, da gre za fizični produkt kot je to običajno v primeru spletne trgovine, pač pa lahko gre za predlog, katero skladbo poslušati, kateri videoposnetek si ogledati, kateri članek prebrati itd. Priporočilni sistemi se praviloma osredotočajo na specifični tip izdelka (npr. novičarski članki), ustrezno pa se prilagaja arhitektura sistema, uporabniški vmesnik ter priporočilni algoritem za doseg čim bolj uporabnih in učinkovitih priporočil za ta tip izdelka. Poleg informacijskega poizvedovanja je še mnogo področij iz računalniških znanosti, s katerimi so priporočilni sistemi tesno povezani. Eno takih področij je umetna inteligenca oz. natančneje strojno učenje in podatkovno rudarjenje. Ti dve področji raziskujeta tehnike, ki omogočajo računalniku učenje in posledično opravljanje nekega opravila na podlagi primerov, podatkov ali preteklih izkušenj [3]. Veliko priporočilnih sistemov se poslužuje algoritmov za izdajanje priporočil, ki izvirajo prav s teh področij. Izbira pristopa, ki ga izberemo za naš informacijski sistem, je odvisna od cilja, ki ga želimo doseči, bodisi je to iskanje informacij, podajanje priporočil, ali pa želimo s sistemom pomagati pri pomembnejših odločitvah. Na sliki 2.1 so okvirno predstavljeni najpogostejši pristopi glede na določeno področje in cilje, ki jih v našem sistemu zasledujemo. Višja kot je kompleksnost predmetov, ki jih predlagamo, višje je tudi tveganje, ki jo prinese slaba odločitev, hkrati pa se viša tudi vpletenost uporabnika v proces vnašanja podatkov in analizo izhoda. [1], [4], [5] visoka kompleksnost predmetov računalniki, fotoaparati, potovanja novice, članki, spletne strani glasba, filmi, knjige investicije, nepremičnine, politika vpletenost uporabnika raste podpora odločanju omejitve iskanje izdelkov priporočilni sistemi barvne Petrijeve mreže MAUT strategije odločanja ocene izpostavljanje preference informacijsko poizvedovanje filtriranje s sodelovanjem (collaborative filtering) podatkovno rudarjenje iskanje na podlagi ključnih besed nizka PageRank nizko tveganje (cena) Slika 2.1: Tipi tehnik za podajanje priporočil. 4 visoko

14 V naslednjih podpoglavjih smo pripravili pregled področja priporočilnih sistemov. Pričeli smo s formalno definicijo priporočilnih sistemov v poglavju 2.1, kjer smo širok nabor priporočilnih tehnik opisali na enoten način. Nato smo opisali cilje in naloge priporočilnih sistemov. Temu sledijo viri in znanje, iz katerih lahko priporočilni sistemi črpajo podatke za izdajo priporočil. V poglavju 2.4 smo kategorizirali in opisali algoritmične pristope in tehnike, s katerimi se lotevamo problema podajanja priporočil. Sledi poglavje z opisom postopka evalvacije priporočilnih algoritmov kakor tudi metrik, s katerimi si pri tem opravilu pomagamo. 2.1 Formalna definicija Za izvedbo svoje osrednje funkcije, to je prepoznava koristnih izdelkov za uporabnika, mora priporočilni sistem predvideti, da je izdelek zares vreden priporočanja. Da bi to dosegel, mora biti sistem sposoben predvideti koristnost izdelkov oz. biti sposoben primerjati koristnost več izdelkov, na podlagi česa nato poda priporočila. Različni pristopi se tega problema lotevajo na različne načine, kljub temu pa jih lahko v osnovi postavimo na skupni imenovalec. Za ponazoritev predvidevanja koristnosti si najprej predstavljajmo enostaven priporočilni algoritem brez personalizacije, ki uporabniku priporoča najbolj priljubljene filme. Glede na to da sistem ne upošteva uporabnikovih preferenc, imajo najbolj priljubljeni filmi višje možnosti, da bodo uporabniku všeč (večjo koristnost), v primerjavi z naključno izbranimi filmi, saj so priljubljeni s strani več ostalih uporabnikov. Posledično je koristnost priljubljenih filmov za splošnega uporabnika predvidena relativno visoko. Problem priporočanja lahko definiramo tudi bolj formalno. Množica C naj vsebuje vse uporabnike in množica S vse izdelke, ki jih lahko priporočamo. Obe množici lahko vsebujeta ogromne količine podatkov, tudi po več milijonov posameznih elementov. Na teh dveh množicah definiramo funkcijo u, ki predstavlja koristnost izdelka s za uporabnika c, in je definirana z u : C S R, kjer je R strogo linearno urejena množica (npr. pozitivna naravna števila ali realna števila znotraj določenega intervala). Za vsakega uporabnika c C želimo izbrati izdelek s' S, pri katerem funkcija u doseže maksimum [6]: c C, s ' c =arg max u ( c, s ) s S (2.1) 5

15 Od priporočilnega sistema je odvisno, ali je koristnost definirana s strani uporabnika (npr. uporabnik s številčno oceno označi, kako zelo mu je všeč določen film) ali pa koristnost izračuna aplikacija. V nadaljevanju smo zapisali tudi primere, v katerih se priporočilni sistemi poslužujejo obeh pristopov hkrati. Vsak element znotraj množice C lahko nosi svoj profil, ki vključuje razne uporabnikove podatke kot na primer spol, starost, geografska lokacija itd. V najbolj enostavnem primeru vsebuje profil le en element (npr. uporabnikov identifikator). Podobno velja za elemente znotraj množice S, ki lahko vsebujejo dodatne podatke o izdelku kot na primer naslov filma, leto izdaje, glavni igralci, žanr itd. Glavni problem priporočilnih sistemov je ta, da koristnost u običajno ni definirana za celotni prostor C S pač pa samo za majhno podmnožico. Kot primer lahko navedemo našo množico v poglavju 3, ki vsebuje le 0,12% elementov. Osrednja naloga priporočilnih sistemov je zato ekstrapolacija koristnosti u oz. računanje predvidene koristnosti za neznane elemente v prostoru C S. To nalogo si lažje predstavljamo, če si ogledamo sliko 2.2, na kateri je naloga priporočilnega sistema izračunati prazne celice (npr. vrednost u(a,s), označeno s vprašajem). [4], [6] izdelki (S) s m uporabniki (C) 1 c n a ? 1 Slika 2.2: Matrika uporabnikov in izdelkov. Celice vsebujejo vrednost u(c,s) (kjer ta obstaja), ki predstavlja oceno uporabnika c za izdelek s. 2.2 Naloge priporočilnih sistemov V prejšnjem poglavju smo definirali osnovno nalogo priporočilnih sistemov kot prepoznavo koristnosti izdelkov in podajanje priporočil uporabniku na podlagi izračunane koristnosti. S strani uporabnika lahko vidimo neposredno uporabno vrednost takšnega sistema, vendar 6

16 moramo upoštevati tudi perspektivo ponudnika priporočilnega sistema. Kakšno motivacijo ima ponudnik za vključitev priporočilnega sistema v svojo storitev? Cilji uporabnika se namreč ne skladajo vedno s cilji ponudnika vzemimo za primer spletno trgovino, v kateri je cilj uporabnika poiskati najbolj primeren izdelek za ugodno ceno, medtem ko je cilj ponudnika običajno čim večji dobiček. Priporočilni sistemi poleg osnovne izpolnjujejo še vrsto drugih nalog, da izpolnijo pričakovanja ponudnikov kakor tudi uporabnikov. Najprej si oglejmo pet razlogov, zakaj se ponudniki storitev odločajo za implementacijo te tehnologije [4]: Povečanje števila prodanih izdelkov. To je verjetno najpomembnejša funkcija priporočilnih sistemov. Z uporabo dobrih priporočil lahko povečamo prodajo in poleg običajnih izdelkov, ki jih prodamo brez priporočil, prodamo še dodatne izdelke. To lahko dosežemo z dobrimi priporočili takšnih izdelkov, ki bodo v danem trenutku ustrezala uporabnikovim željam in potrebam. Podobno velja tudi za nekomercialne strani, kjer ponudnik storitve ne ponuja izdelkov za prodajo in nima neposrednega dobička (npr. novičarske strani, na katerih je v interesu ponudnika, da uporabnik na strani prebere čim več novic). Ponudnikov poglavitni cilj pri vzpostavitvi priporočilnega sistema je torej povečanje stopnje konverzije, kar pomeni povečanje števila uporabnikov, ki se odzovejo na priporočilo (in ga tudi kupijo/uporabijo), v primerjavi s številom obiskovalcev, ki le brskajo. Prodaja širšega nabora izdelkov. S podajanjem priporočil za izdelke, ki jih le stežka najdemo z običajno uporabo sistema, lahko povečamo nabor prodanih izdelkov. S tem lahko razbremenimo uporabo najpopularnejših izdelkov, kar je uporabno predvsem pri storitvah, kjer imamo omejeno zalogo. Primer je Netflix, ki med drugim ponuja izposojo filmov na DVD, pri čemer je ponudniku storitve v interesu posoditi vse DVD-je in ne le popularnih, hkrati pa si ne more privoščiti reklamiranja nepopularnih filmov, ki uporabnikom ne bi bili všeč. Zato imajo vzpostavljen priporočilni sistem, ki izbranim uporabnikom predlaga manj popularne filme. Povečanje zadovoljstva uporabnikov. Pravilno oblikovan priporočilni sistem lahko izboljša uporabniško izkušnjo in pozitivno vpliva na njegovo percepcijo strani ali aplikacije. Dobra in relevantna priporočila bodo uporabniku zanimiva, skupaj s primerno oblikovanim vmesnikom pa bo uporabnik z veseljem uporabljal sistem. Posledično se bo povečala uporaba sistema in s tem tudi verjetnost, da se bodo uporabniki odzvali na nova priporočila. 7

17 Okrepitev uporabniške zvestobe. To velja, kadar priporočilni sistem upošteva informacije, ki jih je pridobil od uporabnika v prejšnjih interakcijah (npr. njegove ocene izdelkov). Sčasoma se tako uporabniški model dograjuje in postaja vse bolje definiran, kar seveda pozitivno vpliva na točnost in relevantnost priporočil, ki so vse bolj prilagojena za uporabnika. Na ta način se krepi uporabnikova zvestoba do sistema, saj ga sistem obravnava kot rednega in dragocenega obiskovalca. Boljše razumevanje uporabnikovih želja. Z zbiranjem informacij o uporabnikovih preferencah in s predvidevanjem skozi priporočilni sistem lahko gradimo uporabniški model, na podlagi katerega lahko bolje razumemo njegove želje. Ponudnik storitve lahko to znanje o uporabnikih upošteva na različne načine, kot na primer z uvedbo znižanja cene določenim izdelkom ali izboljšanjem upravljanja skladiščenja in produkcije izdelkov. Poleg ponudnika storitve, ki priporočilni sistem uvede iz zgoraj opisanih razlogov, pa priporočilni sistem uporabljajo še uporabniki, ki imajo lastne želje in predstave o tem, kakšne naloge mora sistem izpolnjevati. V priporočilnem sistemu moramo zato najti pravo ravnovesje med zahtevami enega in drugega. V naslednjem seznamu smo opisali enajst kategorij, v katere lahko razdelimo naloge, za katere uporabniki uporabljajo priporočilne sisteme [7]: Oznake znotraj konteksta. Znotraj obstoječega konteksta (npr. seznam izdelkov) priporočilni sistem poudari izdelke, za katere predvideva, da so za uporabnika posebej zanimivi in relevantni. Prvotni priporočilni sistemi so filtrirali sporočila v diskusijah, da bi olajšali iskanje sporočil, ki jih je vredno prebrati. Na podlagi obstoječega seznama sporočil je bilo potrebno prepoznati koristna sporočila in jih nato primerno označiti. Podoben pristop se danes uporablja v priporočilnih sistemih v televiziji, kjer so na seznamu elektronskega televizijskega sporeda (angl. electronic program guide oz. EPG) označene oddaje, ki so vredne ogleda. Iskanje nekaj dobrih izdelkov. To je najpogostejša naloga večine priporočilnih sistemov. Cilj te naloge je uporabniku prikazati urejen seznam izbranih izdelkov, ki so razvrščeni glede na predvideno koristnost. Običajno je ob priporočilih prikazana tudi koristnost (npr. v obliki lestvice petih zvezdic), čeprav obstajajo tudi sistemi, v katerih se prikažejo le izdelki. Iskanje vseh dobrih izdelkov. Priporočilni sistemi v prekomerni količini podatkov izluščijo in prikažejo le relevantne informacije. V večini primerov torej uporabniki vzamejo v zakup, da je med skritimi izdelki tudi nekaj pomembnih, v zameno za to, 8

18 da jim ni potrebno brskati skozi celotno gručo podatkov. V določenih primerih pa je zelo pomembno, da se relevantni podatki ne spregledajo, predvsem kadar gre za kritične podatke (npr. medicina, pravo). V teh primerih je važna visoka stopnja priklica, kar posledično pomeni tudi večjo količino priporočil. Priporočeno zaporedje. Tukaj gre za podajanje več priporočil, ki si sledijo in se nanašajo v zaporedju eden na drugega. V teh primerih se lahko zgodi (včasih je celo zaželeno), da se pojavljajo priporočila že uporabljenih in priljubljenih izdelkov. Klasični primer je avtomatska izdelava seznama skladb ali priporočanje knjige na podlagi skladbe ali knjige iz prejšnjega priporočila. Priporočen komplet. Včasih uporabnik išče kompleksen izdelek, ki je lahko sestavljen iz več delov, pri čemer mu lahko priporočilni sistem predlaga idealen komplet. Pri nakupu računalnika lahko tako dobimo priporočila za primerno kombinacijo komponent, pri izdelavi potovalnega načrta pa nam lahko priporočila pomagajo izbrati turistične zanimivosti in možnosti nastanitve v okolici ciljnega kraja. Le brskanje. V tem scenariju uporabniki brskajo po katalogu izdelkov brez trenutnega namena nakupa izdelka, pač pa le za sprostitev. Naloga priporočilnega sistema je pomagati uporabniku pri brskanju in mu podajati priporočila za izdelke, ki ga v trenutni seji zanimajo bolj kot ostali. Točnost priporočil za to nalogo ni tako pomembna, pač pa večjo vlogo igra uporabniški vmesnik, enostavnost uporabe ter oblika in narava ponujenih informacij. Preizkušanje kredibilnosti priporočilnega sistema. Veliko uporabnikov priporočilnim sistemom ne zaupa, zato jih včasih preizkušajo in ugotavljajo njihovo kredibilnost pri podajanju priporočil. Nekateri gredo celo tako daleč, da spreminjajo nastavitve svojega profila in preverjajo, kako se to odraža v priporočilih. Priporočilni sistem, ki uporabniku priporoča le nove, še ne videne izdelke, lahko izpade nezanesljiv, saj ne priporoča izdelkov, ki jih je uporabnik verjetno že videl in so mu zagotovo ugajali. Nekateri priporočilni sistemi zato ob funkciji podajanja priporočil vključujejo še funkcije, s katerimi lahko uporabnik preveri njegovo delovanje. Izboljšanje profila. Uporabnik stremi k čim bolj popolnemu profilu, saj bo priporočilni sistem na podlagi več podatkov lahko podal priporočila, ki mu bodo bolje prilagojena. Večina uporabnikov izdelke ocenjuje prav iz tega razloga, zato je to pomembna naloga, ki jo mora personaliziran priporočilni sistem izpolnjevati. Brez specifičnih podatkov o uporabnikovih interesih lahko priporočilni sistem podaja le priporočila, ki so prilagojena za povprečnega uporabnika. Izražanje sebe. Nekaterim uporabnikom je vseeno za priporočila, saj si želijo le prispevati v sistem s svojimi ocenami ter z izražanjem svojih mnenj in prepričanj. 9

19 Tem uporabnikom je pomembna stopnja anonimnosti (kar je lahko dobro ali slabo in je odvisno od posameznika), občutek prispevka in enostavnost prispevanja. Priporočilni algoritmi sami ne vzpodbujajo osebnega izražanja uporabnika, kljub temu pa lahko s takšnim vzpodbujanjem vplivamo na količino zbranih podatkov in s tem tudi na kvaliteto priporočil. Pomoč ostalim uporabnikom. Za razliko od prejšnje naloge, v kateri poskušajo uporabniki izraziti svojo osebnost, v tej nalogi uporabniki prispevajo v sistem (npr. ocenjujejo izdelke), saj so prepričani, da bo njihov prispevek pomagal skupnosti. To je lahko močan razlog za prispevanje v priporočilni sistem, ki se uporablja redkeje in vsebuje izdelke, ki se nabavljajo v roku daljših časovnih razmakov. Primer je priporočilni sistem za nakup avta, kjer uporabnik prispeva informacije o kupljenem avtu, kljub temu da se zaveda, da bo informacija bolj koristna za ostale uporabnike kot zanj ob naslednjem nakupu avta. Vplivanje na ostale uporabnike. Tukaj gre za prispevanje informacij s ciljem, da vplivajo na ostale uporabnike, bodisi da jih prepričajo v uporabo ali neuporabo izdelka. Takšni uporabniki želijo sistem izkoristiti v svoj prid in si s tem pridobiti neko korist. Kot primer lahko navedemo priporočilni sistem za ogled filma, kjer je v interesu filmskega studia, da ima njihov film ob izidu čim višjo oceno, s čimer želijo povišati njegovo obiskanost v kinematografih. Zadnje štiri naloge so pomembne predvsem v priporočilnih sistemih, ki delujejo na podlagi filtriranja s sodelovanjem (glej poglavje 2.4), saj uporabniki na ta način ustvarjajo vsebino in sistem zalagajo z informacijami, na podlagi katerih ta podaja priporočila. Eden osnovnih konceptov priporočilnih sistemov je upoštevanje uporabnikovih preferenc za podajanje osebno prilagojenih priporočil. Z vse višjo stopnjo personalizacije obstaja nevarnost izolacije uporabnika pred raznolikostjo mnenj in vsebine. Temu pojavu rečemo tudi informacijski mehurček (angl. filter bubble). Priporočilni sistem skozi čas vse bolj spoznava uporabnika in mu zato lahko podaja boljša priporočila za izdelke, ki mu bodo zagotovo všeč, s čimer postaja uporabnik vse bolj zaprt v svoj "mehurček". To posledično vpliva na njegovo kreativnost, sposobnost učenja in odkrivanje novih konceptov. Načrtovalec priporočilnega sistema lahko za zmanjšanje tega problema uporabnika informira o statistiki raznolikosti preteklih priporočil ter ga tako opozori, če se uporabnik preveč posveča določenemu interesu. Določene študije so prav tako pokazale, da lahko z namenskim večanjem raznolikosti priporočil celo povečamo zadovoljstvo uporabnikov [8]. 10

20 2.3 Viri podatkov in znanja Znana besedna zveza področja informatike je: "smeti not, smeti ven" (angl. garbage in, garbage out). S tem želimo povedati, da bo računalnik na podlagi neveljavnih in nesmiselnih podatkov z veliko verjetnostjo izračunal rezultat, ki bo prav tako neveljaven in nesmiseln. To v veliki meri velja tudi za priporočilne sisteme, saj je lahko še tako dober priporočilni sistem neuporaben, če podatke za priporočila črpa iz nekvalitetnih virov. Od algoritmičnega pristopa (glej poglavje 2.4) je odvisno, na podlagi katerih podatkov priporočilni sistem podaja priporočila. Nekateri pristopi uporabljajo le preproste in osnovne podatke (npr. ocene izdelkov), medtem ko drugi uporabljajo že bolj prefinjene metode z uporabo globljega znanja (npr. ontologije, socialna razmerja in aktivnosti uporabnikov). Priporočilni sistemi v svojem delovanju običajno dograjujejo svojo podatkovno bazo in se na ta način učijo podajati vse boljša priporočila. Podatki, ki jih priporočilni sistemi zbirajo, se nanašajo na dve glavni entiteti: ker so priporočila praviloma osebno prilagojena, se prva skupina podatkov nanaša na uporabnike; druga skupina so podatki o izdelkih. Pomembna je še tretja kategorija podatkov, ki se nanaša na povezavo med uporabniki in izdelki in jih bomo označili kot transakcije. V nadaljevanju smo vsako skupino podatkov podrobneje opisali [4]: Uporabniki. Eden izmed ciljev običajnega priporočilnega sistema je podajati priporočila, ki so osebno prilagojena za vsakega uporabnika posebej. Za doseg tega cilja priporočilni sistemi upoštevajo vrsto različnih informacij o svojih uporabnikih, od samega pristopa pa je odvisno, katere podatke upošteva ter kako so strukturirani. Denimo sistemi, ki uporabljajo filtriranje s sodelovanjem, shranjujejo podatke o uporabnikih v obliki seznama njihovih ocen izdelkov (glej sliko 2.2). Priporočilni sistemi, ki uporabljajo pristop z demografskimi podatki, o uporabnikih shranjujejo razne osebne podatke, kot je spol, starost in izobrazba. V nekaterih primerih lahko ti podatki opisujejo še obnašanje uporabnika (npr. vzorci brskanja) ali moč zaupanja med uporabniki. Vsi ti podatki se združujejo in sestavljajo uporabniški model, ki nosi zapis vseh uporabnikovih preferenc in potreb. V tem smislu bi lahko personaliziran priporočilni sistem definirali kot orodje, ki izdeluje priporočila s pomočjo grajenja in uporabe uporabniških modelov. Uporabniški model je torej osrednjega pomena za priporočilne sisteme, ki izdajajo osebno prilagojena priporočila, saj brez njega personalizacija ni mogoča. 11

21 Izdelki. To so stvari, ki jih priporočilni sistem priporoča, in niso nujno fizični izdelki, prav tako pa ni nujno, da gre za prodajne izdelke. Katere izdelke priporočilni sistem priporoča, je odvisno od njegove domene (npr. novice, skladbe, filmi, tehnični izdelki). Izdelki so lahko označeni preko njihove kompleksnosti ter njihove koristnosti za uporabnika. Koristnost je lahko pozitivna, če je izdelek uporaben za uporabnika, ali negativna, če izdelek ni primeren in je bila uporabnikova odločitev za izbiro izdelka napačna. Uporabnikova izbira izdelka je povezana z določeno ceno, ki je sestavljena iz stroškov iskanja izdelka (kognitivni stroški) in iz dejanskih denarnih stroškov nabave izdelka. Ta cena postane pomemben faktor pri izbiri pravega pristopa k podajanju priporočil, kadar gre za priporočila kompleksnejših izdelkov, kot so investicije in nepremičnine (glej sliko 2.1). Na primer načrtovalec priporočilnega sistema za novičarske članke mora upoštevati kognitivne stroške iskanja, zahtevnost, strukturo in časovno pomembnost članka, pri čemer je tveganje slabega priporočila nizko. Večjo pozornost mora temu posvetiti načrtovalec priporočilnega sistema za nakup avta. Podobno kot pri podatkih o uporabnikih, so tudi tukaj uporabljeni podatki in njihova struktura odvisni od algoritmičnega pristopa. V osnovi so lahko izdelki predstavljeni le z identifikatorjem, lahko vsebujejo še dodaten seznam atributov, v skrajnem primeru pa celo kot koncept v ontologiji. Transakcije. V splošnem gre tukaj za beleženje interakcije uporabnika s priporočilnim sistemom. Ko uporabnik izvede neko akcijo, jo priporočilni sistem zabeleži skupaj s kontekstom, v katerem se je zgodila. Podrobnosti shranjenih podatkov se razlikujejo od sistema do sistema. Transakcija lahko recimo vsebuje podatek o izdelku, ki ga je uporabnik izbral, skupaj s povpraševanjem, ki ga je pred tem izvedel, ter na koncu še oceno, ki jo je podal izdelku. Ocene, ki jih uporabniki podeljujejo izdelkom, so najbolj pogost podatek v transakcijah. Te ocene lahko priporočilni sistem pridobi eksplicitno ali implicitno. V prvi obliki gre za direkten poziv uporabniku, da poda svoje mnenje o izdelku v obliki vrednosti, izbrane na lestvici. V tabeli 2.1 so prikazane najpogostejše eksplicitne lestvice [9]. Pri implicitnem pridobivanju ocen priporočilni sistem sam predvideva uporabnikovo mnenje glede na njegovo obnašanje. Na primer uporabnik brska po seznamu skladb in izbrano skladbo v celoti posluša v tem primeru bo priporočilni sistem predvideval, da mu je skladba všeč. 12

22 Tabela 2.1: Najbolj pogoste oblike eksplicitnih lestvic. Ocenjevalna lestvica Opis Primer Enočlena (unarna) Označuje, da si je uporabnik izdelek ogledal, ga kupil ali ga drugače pozitivno Uporabnik ob izdelku pritisne gumb "všeč ocenil. Manjkajoča vrednost pomeni, da mi je". nimamo informacij o razmerju do izdelka. Dvočlena (binarna) Uporabnik uporabi eno od dveh možnosti: dobro/slabo, se strinjam/ne strinjam. Uporabnik ob mnenju drugega kupca pritisne gumb "uporabno" (druga možnost je "neuporabno"). Ordinalna Uporabnik izbere vrednost na urejeni lestvici opisnih vrednosti. V vprašalniku po opravljenem nakupu je trditev, ki jo uporabnik označi z enim od odgovorov: popolnoma se strinjam, delno se strinjam, mi je vseeno, delno se ne strinjam, odločno se ne strinjam. Številska Uporabnik izbere vrednost na omejeni lestvici (običajno med 1 in 5, 1 in 7 ali 1 in 10). Uporabnik oceni izdelek v spletni trgovini s 4 zvezdicami. Zgoraj smo opisali kategorije podatkov, ki jih zbirajo priporočilni sistemi. Iz teh podatkov se lahko izlušči znanje, na podlagi katerega se na koncu tudi podajajo priporočila. Vire znanja v priporočilnih sistemih lahko razdelimo v tri kategorije, na podlagi teh kategorij pa smo v naslednjem poglavju kategorizirali še osnovne algoritmične pristope [10]: Družbeno znanje. To znanje je sestavljeno iz podatkov vseh ostalih uporabnikov, ki niso ciljni uporabnik, in pogosto vsebuje podatke v obliki ocen izdelkov. Kljub temu obstajajo še druge oblike družbenega znanja kot na primer spletne povezave, ki so obravnavane kot glasovi na glasovanju v algoritmu PageRank, ali uporaba demografskih podatkov za ugotavljanje podobnosti uporabnikov. Znanje o posamezniku. V to kategorijo spada vso znanje, ki ga imamo o ciljnem uporabniku. To znanje je lahko pridobljeno implicitno skozi interakcijo uporabnika s sistemom ali eksplicitno skozi proces priporočanja. Nekateri sistemi namreč omogočajo uporabniku v aktualni seji podati povratno informacijo o kvaliteti priporočil, na katero se lahko priporočilni sistem odzove in prilagodi priporočila trenutnim zahtevam in potrebam uporabnika. Pridobljeni podatki o trenutnem uporabniku se v sejah drugih uporabnikov uporabljajo v sklopu družbenega znanja. Vsebina. To je široka kategorija, v katero spada vsa vsebina, ki ni ustvarjena s strani uporabnikov. Razdelamo jo lahko še na tri podkategorije: v prvi so vsi podatki o lastnostih izdelkov (npr. izvajalec skladbe, žanr), v drugo spada znanje iz trenutnega konteksta (npr. trenutna lokacija uporabnika), v tretje pa poglobljeno domensko znanje o izdelkih in njihovih načinih uporabe (npr. ontologija domene). 13

23 2.4 Algoritmični pristopi V tem poglavju je razloženo, na kak način se priporočilni sistemi lotevajo podajanja priporočil. V osnovi vsi pristopi računajo koristnost priporočenih izdelkov, kot smo to opisali v poglavju 2.1. Razlika je v tem, katere podatke uporabijo in na kak način iz njih izluščijo predvideno koristnost izdelkov. Na sliki 2.3 so prikazani trije pristopi podajanja priporočil v povezavi z viri znanja [11], kot smo jih opisali na koncu prejšnjega poglavja. Z leve strani so v prvi vejitvi viri znanja, v drugi vejitvi so podatki, na katere se posamezni vir znanja navezuje, na desni strani pa so algoritmični pristopi povezani na podatke, ki jih ti v svojem delovanju uporabljajo. Razvidno je, da je odvisno od algoritmičnega pristopa, katere podatke bo sistem uporabljal. kontekst družba mnenja obnašanje demografija na osnovi sodelovanja mnenja vir znanja posameznik obnašanje demografija zahteve na osnovi vsebine lastnosti izdelka vsebina znanje konteksta na osnovi znanja domensko znanje Slika 2.3: Algoritmični pristopi podajanja priporočil glede na vire znanja. V preteklih delih so različni avtorji predlagali različne razdelitve tehnik za podajanje priporočil. Najbolj osnovna delitev, ki je skupna večini avtorjev, loči le dva pristopa: na osnovi sodelovanja ter na osnovi vsebine. Tretji pristop, ki se prav tako pojavlja v večini literature, je hibridni pristop. V nadaljevanju bomo opisali podrobnejšo razdelitev, ki priporočilne tehnike loči v sedem kategorij vključno z vsemi tremi prej omenjenimi pristopi [12]: stereotipiziranje, filtriranje na osnovi vsebine, filtriranje s sodelovanjem, sopojavitve, pristopi na osnovi grafa, splošna relevantnost in hibridni pristopi. 14

24 2.4.1 Stereotipiziranje Stereotipiziranje (angl. stereotyping) je eden prvih pristopov podajanja priporočil, v katerem uporabnike glede na njihove lastnosti "predalčkamo" v kategorije, ki združujejo in s splošnimi opisi označujejo podobne uporabnike. V takšnem sistemu je začetno znanje že vnaprej prisotno v sistemu in ga mora načrtovalec priporočilnega sistema vgraditi že ob implementaciji. Prvi priporočilni sistem na tem principu je bil razvit že leta 1979 in je služil podajanju priporočil za knjige. Uporabnik je ob prvi uporabi navedel nekaj oznak, s katerimi se je karakterno čim natančneje opisal (npr. prijazen, ekscentričen, zabaven, pustolovski), v opis pa je spadal tudi podatek o spolu in religiji uporabnika. Na podlagi tega opisa je sistem sklepal, kakšni žanri so uporabniku všeč. Na primer s podatkom, da je uporabnik moški, je sistem sklepal na visoko toleranco za motive nasilja in trpljenja, priljubljenost razburljivih, napetih in hitrih zgodb ter nezainteresiranost za romance [13]. Tudi kasneje so priporočilni sistemi uporabili ta pristop za doseg boljših priporočil, vendar običajno v povezavi z ostalimi pristopi. Prednost stereotipiziranja je nizka računska zahtevnost ter hiter izračun priporočil. Kljub temu ima ta pristop dve močni pomanjkljivosti, ki omejujeta njegovo uporabo v velikih priporočilnih sistemih. Stereotipe, ki jih ta sistem uporablja, je potrebno oblikovati ročno, kar je le težko izvedljivo v sistemih z več milijoni izdelkov. Hkrati je tukaj še osnovna težava stereotipiziranja, saj za nekatere uporabnike stereotipi ne veljajo, zato tem uporabnikom na ta način ne moremo podati zadovoljivih priporočil Filtriranje na osnovi vsebine Filtriranje na osnovi vsebine (angl. content-based filtering) spada med največkrat uporabljene pristope podajanja priporočil. Temelji na priporočanju izdelkov, katerih opis in lastnosti se skladajo z interesi in potrebami uporabnika. Pomemben del takšnega priporočilnega sistema je uporabniški model, ki ga lahko uporabnik sestavi sam, velikokrat pa se dograjuje samodejno preko uporabnikovega obnašanja (npr. ogled izdelka, nakup izdelka) in povratnih informacij (npr. ocene, ki jih podaja izdelkom). Enako pomembni so tudi podatki, s katerimi so opisani izdelki, saj so ravno ti osnova za primerjanje ujemanja z uporabniškim modelom. Pristop na osnovi vsebine ima številne prednosti pred stereotipiziranjem. S tem pristopom so lahko priporočila prilagojena točno za določenega uporabnika in dosežejo višjo stopnjo 15

25 personalizacije, ne da bi se omejevali z uporabo stereotipov. Tak sistem je tudi lažje vzpostaviti, saj se uporabniški modeli gradijo samodejno. Še zmeraj ostaja težava z opisovanjem izdelkov, ki morajo biti označeni dovolj natančno, da lahko ločimo zaželene od nezaželenih izdelkov. To zmeraj ni mogoče, predvsem kadar gre za izdelke, ki ne vsebujejo veliko informacij (npr. šale, poezija). Na drugi strani obstaja naravna omejitev količine podatkov, s katerimi lahko označimo nek izdelek, saj pri veliki količini podatkov računska moč naraste do te mere, da je računanje priporočil prezahtevno. Zato moramo v določenih primerih identificirati ključne atribute, ki so potrebni za podajo smiselnih priporočil. Prednost pristopa na osnovi vsebine je transparentnost priporočil, saj je možno za vsako priporočilo razložiti, na osnovi katerih lastnosti je bil izdelek priporočen. Prav tako je možno podajati priporočila za nove izdelke, ki smo jih pravkar dodali v zbirko, za razliko od tehnike filtriranja s sodelovanjem, ki lahko izdelke priporoča šele, ko so ocenjeni s strani določenega števila uporabnikov. Po drugi strani pa tehnika filtriranja na osnovi vsebine ne more podati natančnih priporočil za nove uporabnike, katerih preference sistem še ne pozna. Pri uporabi te tehnike se moramo zavedati še dejstva, da sistem ni primeren za priporočanje novih, nepričakovanih izdelkov. Sistem črpa podatke iz uporabnikovih preteklih ocen in obnašanja, zato bo priporočal le takšne izdelke, ki so podobni izdelkom v zgodovini [12], [14] Filtriranje s sodelovanjem Filtriranje s sodelovanjem (angl. collaborative filtering) je kot ideja in termin prvič omenjeno leta 1992 [15]. Deluje na principu filtriranja in računanja koristnosti izdelkov s pomočjo mnenj ostalih uporabnikov. S tem se poslužuje načina priporočanja, ki ga ljudje opravljamo že stoletja deljenje mnenj med sabo. Sistem poskuša za ciljnega uporabnika poiskati sosesko drugih uporabnikov s podobnim okusom za izdelke (npr. iste izdelke ocenjujejo s podobnimi ocenami) ter tako ciljnemu uporabniku poda priporočila za izdelke, ki jih sam še ne pozna in so najbolj priljubljeni pri njegovih "vrstnikih". Za razliko od enostavnih priporočilnih sistemov, ki bazirajo na splošni relevantnosti, filtriranje s sodelovanjem upošteva okus uporabnika, za katerega velja, da se ne spreminja oz. se spreminja le počasi. Najbolj znani algoritmi na osnovi filtriranja s sodelovanjem uporabljajo računanje najbližjih sosedov. Te lahko še podrobneje razdelimo v dve skupini: najbližji sosed med uporabniki in najbližji sosed med izdelki [9]. Algoritmi v prvi skupini iščejo najbolj podobne uporabnike trenutnega uporabnika. Na sliki 2.2 bi to pomenilo, da določeno vrstico primerjajo z ostalimi in iščejo najbolj podobne vrstice ter nato priporočajo izdelek, ki je v podobnih vrsticah 16

26 dobil najvišjo oceno. Algoritmi, ki iščejo najbližjega soseda med izdelki, počnejo podobno, le da nalogo izvajajo nad stolpci. Druga skupina algoritmov je običajno uspešnejša in hitrejša, kadar imamo podatkovno bazo z velikim številom uporabnikov. Delovanje obeh pristopov smo prikazali na sliki 2.4, kjer je na levi strani prikazano iskanje najbližjih sosedov med uporabniki, na desni strani pa iskanje najbližjih sosedov med izdelki. B A oceni A ujemanje podobnosti B C C oceni A B C A oceni A oceni A B B C je ocenjen s strani A C C je ocenjen s strani A je ocenjen s strani B D je ocenjen s strani B E C B B D je ocenjen s strani A D ujemanje podobnosti C C Slika 2.4: Filtriranje s sodelovanjem. Levo na osnovi uporabnikov, desno na osnovi izdelkov. je ocenjen A B C C je ocenjen s strani A C A s strani Pristop filtriranja s sodelovanjem se pogosto uporablja v priporočilnih sistemih, predvsem B ujemanje D je ocenjen s strani podobnosti na področju elektronskega poslovanja oz. spletnih trgovin, v katerih uporabniki ocenjujejo A C D je ocenjen B s strani B C izdelke (npr. knjige, filmi, glasba).e Vje ocenjen teh sistemih imamo običajno na razpolago veliko kolis strani čino podatkov o ocenah izdelkov, zato se tak pristop obnese. Prednosti pred pristopom filtriranja na osnovi vsebine vključujejo neodvisnost od vsebine (saj se sistem zanaša le na ocene), lažje izločanje slabih in identifikacijo kvalitetnih izdelkov (ljudje z ocenami presojajo kakovost izdelkov). Razen tega lahko s filtriranjem s sodelovanjem na osnovi uporabnikov priporočamo tudi nove, nepričakovane izdelke, saj ne primerjamo izdelkov pač pa uporabnike. Seveda ima tudi ta pristop svoje slabosti, kot so na primer pomanjkljivi podatki. Večina uporabnikov ne ocenjuje izdelkov samoiniciativno, zato je potrebno uporabnike motivirati, da pridobimo dovolj podatkov za podajo kvalitetnih priporočil. To je posebej težko na začetku, ko priporočilni sistem na novo vzpostavimo, zato se ta problem imenuje tudi problem hladnega zagona (angl. cold-start problem). Ta težava se pojavlja z vsakim novim uporabnikom, ki še ni podal nobenih ocen, in zato posledično ne moremo ugotoviti podobnih uporabnikov. Enako velja za nove izdelke, ki jih še ni ocenil noben uporabnik, zato zanje ne moremo podati priporočil [9], [12] Sopojavitve izdelkov Sopojavitve izdelkov (angl. co-occurrence) lahko izkoriščamo za podajanje priporočil. Pri tem pristopu priporočamo izdelke, ki se največkrat pojavljajo v kombinaciji z nekim drugim 17

27 ciljnim izdelkom. Med najpopularnejše primere uporabe takšnega priporočilnega sistema spada spletni trgovec Amazon, ki svojim uporabnikom med drugim podaja priporočila v razdelku "uporabniki, ki so kupili ta izdelek, so kupili tudi ". Običajno se tukaj uporabljajo algoritmi za analizo sorodnosti, iskanje pogostih vzorcev in izdelavo asociacijskih pravil (npr. Apriori). Prednost tega pristopa je, da se osredotoča na sorodnost izdelkov, ne pa tudi na njihovo podobnost. V nasprotju s filtriranjem na osnovi vsebine, ki zaradi primerjanja podobnosti izdelkov ne more priporočati novih in nepričakovanih izdelkov, lahko s tem pristopom poiščemo sorodne izdelke, ki niso nujno podobni trenutnemu. Vzemimo kot primer čelado in kolo. Ta dva izdelka si nista podobna in ju filtriranje na osnovi vsebine verjetno ne bi priporočalo v kombinaciji, medtem ko je njuna sorodnost zelo visoka, zato bi jo pristop z analizo sopojavitev izdelkov našel z višjo verjetnostjo. Dodatna prednost je, da tak pristop ne potrebuje podatkov o izdelkih ali uporabnikih, zato je oblikovanje takšnega sistema lažje. Po drugi strani pa smo posledično zaradi neuporabe podatkov o uporabniku omejeni na nizko stopnjo osebne prilagoditve priporočil. V takšnih pristopih moramo tudi paziti na izdelke, ki se pojavljajo v večini kombinacij (t.i. vseprisotni izdelki) in zato ne nosijo visoke informacijske vrednosti v priporočilih [12] Pristop na osnovi grafa Pristop na osnovi grafa (angl. graph-based) uporablja podatke, ki so shranjeni v obliki grafa. V tej podatkovni strukturi so podatki shranjeni v vozliščih in relacijah, ki vozlišča med seboj povezujejo. Vozlišča običajno vsebujejo entitete kot so izdelki, uporabniki ali oboje, ti pa so nato povezani med seboj glede na stopnjo medsebojne sorodnosti. Kot primer lahko navedemo socialno omrežje, kjer vsak uporabnik predstavlja svoje vozlišče, povezave med uporabniki pa vsebujejo razmerja med uporabniki (npr. prijatelj, sledilec, sorodnik). Pomembno vlogo igrajo uteži na povezavah, s katerimi nakazujemo stopnjo povezanosti dveh vozlišč. Priporočila se običajno podajajo na podlagi najbližjih sosedov, kar pomeni, da za ciljni izdelek priporočamo drug izdelek, ki je v grafu čim močneje povezan s ciljnim. Za ta namen se uporabljajo različne mere bližine med vozlišči. Popularen je tudi pristop izvajanja naključnih sprehodov po grafu, v katerih štejemo število obiskov posameznega vozlišča, kar nam na koncu pove težo oz. pomembnost posameznega vozlišča. Ena izmed prednosti shranjevanja podatkov v grafu je lažja in pregledna grafična predstavitev podatkov, saj gre v določenih domenah celo za naravno predstavitev podatkov (npr. omrežja). Izkoriščamo lahko tudi medsebojno vplivanje vozlišč, ki niso direktno povezana, 18

28 saj se lahko njihov vpliv širi preko povezav po celotnem grafu. S tem lahko oblikujemo priporočila za nove in nepričakovane izdelke, ki nosijo višjo informacijsko vrednost [16], [17] Splošna relevantnost Splošna relevantnost (angl. global relevance) je najbolj enostavna metrika za podajanje priporočil. Nekateri to tehniko označujejo tudi kot ne-personaliziran pristop, saj priporočilni sistem ne upošteva osebnih preferenc uporabnikov, pač pa podaja enaka priporočila za vse. Takšna priporočila so lahko celo izdelana ročno, na primer s strani ponudnika spletne trgovine, ki uporabnikom predlaga izdelke v posebni ponudbi. Tudi Amazon uporablja to tehniko za podajo priporočil za anonimne uporabnike. Tem uporabnikom se na vstopni strani prikaže seznam izdelkov, ki si jih pravkar ogledujejo drugi uporabniki, pri tem pa se upoštevajo tudi povprečne ocene in priljubljenost izdelkov. Od posameznega sistema je odvisno, kako je izračunana splošna relevantnost. Priljubljeno je računanje povprečja ocen s strani drugih uporabnikov, vendar določeni sistemi upoštevajo tudi druge metrike, kot na primer število ogledov in aktualnost izdelkov. Prednost takšnega pristopa je enostavna implementacija, kakor tudi majhna količina podatkov, potrebnih za podajanje priporočil. Po drugi strani je vprašljiva učinkovitost takšnega pristopa, saj priporočila niso prilagojena za uporabnika, kar je še posebej neprimerno, kadar imamo raznoliko populacijo uporabnikov [18] Hibridni pristop Hibridni pristop (angl. hybrid) v bistvu ne opisuje neko specifično tehniko podajanja priporočil, pač pa spadajo sem vsi priporočilni sistemi, ki kombinirajo dva ali več pristopov, opisanih v tem poglavju. S hibridi poskušamo izboljšati učinkovitost celotnega sistema, tako da izkoristimo prednosti posameznih pristopov in hkrati zmanjšamo njihove slabosti na račun drugih pristopov. Na primer pri pristopu filtriranja s sodelovanjem imamo težave s hladnim zagonom in z novimi, neocenjenimi izdelki. Rešitev je kombinacija tega pristopa z drugimi pristopi kot na primer s filtriranjem na osnovi vsebine, na katerega ti problemi nimajo tolikšnega vpliva. Ločimo sedem različnih tipov hibridnih pristopov [2], [19]: 19

29 Utežen. Je eden najenostavnejših oblik hibridnih sistemov. V sistemu se za računanje priporočil izvede več priporočilnih algoritmov, kjer vsak algoritem ločeno izračuna koristnost izdelkov. Na koncu se koristnosti za posamezne izdelke združijo v enotno vrednost, na podlagi katere se izberejo najboljša priporočila. Algoritmom se lahko nastavijo različne uteži, s čimer vplivamo na moč odločanja posameznega algoritma. Sčasoma se lahko z učenjem te uteži prilagajajo tudi samodejno. Preklapljanje. Pri tej obliki pred računanje priporočil postavimo dodatno komponento, ki najprej na podlagi nekega kriterija izbere priporočilni algoritem. Od tod naprej bo le izbran priporočilni algoritem izračunal priporočila brez pomoči ostalih v hibridu. Pomembna odločitev je izbira kriterija, s katerim bomo izbrali algoritem, ki je lahko na primer tip uporabnika, vrednost zaupanja posameznega algoritma, ali pa izbiro prepustimo uporabniku. Mešan. Tukaj gre za mešanje priporočil več algoritmov v kombiniran seznam. Algoritmi torej ne sodelujejo pri izbiri priporočil, pač pa vsak izračuna priporočila sam. Težava nastane pri predstavitvi rezultatov. Postavi se vprašanje, kako združiti rezultate v enoten seznam. Praviloma se pri tem upošteva stopnja zaupanja, ki jo posamezni algoritem pripiše priporočilom. Kombiniranje značilk. Ta oblika hibrida pravzaprav ne kombinira dveh različnih pristopov, pač pa gre za uporabo dodatnih značilk iz enega vira (npr. filtriranja s sodelovanjem) v algoritmu, ki sicer uporablja podatke iz drugega vira (npr. filtriranje na osnovi vsebine). Na ta način lahko razširimo zmožnosti dobro uglašenega sistema z dodajanjem novih značilk. Nadgradnja značilk. Pri nadgradnji značilk kombiniramo dve tehniki, pri čemer je ena uporabljena kot glavni priporočilni algoritem, druga pa se uporablja za nadgradnjo značilk. Preden pride vhod do glavnega priporočilnega algoritma, se podatki prestrežejo in preoblikujejo s pomočjo druge tehnike. Na primer v sistemu, kjer uporabljamo filtriranje s sodelovanjem, lahko z uporabo algoritma za filtriranje na osnovi vsebine predvidevamo ocene, ki bi jih uporabniki podali za neocenjene izdelke. Na ta način dosežemo, da ima glavni algoritem več podatkov za podajo natančnejših priporočil. Kaskada. Tukaj gre za strogo hierarhičen hibrid, kjer glavni priporočilni algoritem naredi osnovni seznam priporočil, nato pa ta seznam z uporabo pomožnega algoritma le izpopolnimo. Pomožni algoritem se uporabi le v primerih, kadar glavni algoritem ne more določiti vrstnega reda dveh izdelkov. Na ta način pomožni algoritem ne more preglasiti odločitev glavnega algoritma, pač pa lahko rezultat le izboljša. 20

30 Meta-nivo. Ta hibrid uporablja model, ki ga je izdelal prvi priporočilni algoritem, kot vhod v drug algoritem. Gre za podoben pristop kot pri nadgradnji značilk, saj pri obeh pristopih izhod enega algoritma preusmerimo kot vhod v drugega. Razlika je v tem, da pri meta-nivojskem hibridu drugi algoritem ne uporablja več nobenih surovih vhodnih podatkov, pač pa le model, ki ga je zgradil prvi algoritem. Tega pristopa ni mogoče izvesti v vseh možnih kombinacijah, saj mora biti prvi algoritem sposoben izdelati model, česar pa ne naredijo vsi priporočilni algoritmi. 2.5 Ocenjevanje uspešnosti priporočilnih algoritmov V prejšnjih poglavjih smo navedli širok nabor nalog in ciljev priporočilnih sistemov. Za njihov doseg ima načrtovalec priporočilnega sistema na voljo najrazličnejše pristope in algoritme. Njegova naloga je izbrati najprimernejši algoritem za njegov specifični namen uporabe, pri čemer si običajno pomaga z eksperimenti, v katerih primerja uspešnost kandidatnih algoritmov. Načrtovalec se lahko nato na podlagi rezultatov in omejitev odloči za najboljši priporočilni algoritem (npr. tip, vir in zanesljivost podatkov, količina razpoložljivega spomina, omejitev računske zahtevnosti). Poleg tega se v eksperimentih običajno meri uspešnost algoritmov s pomočjo določenih metrik oz. številskih ocen. V preteklosti se je poudarjal pomen metrik, ki so merile uspešnost podajanja natančnih priporočil, danes pa se raziskovalci strinjajo, da te metrike kljub njihovi pomembnosti niso zadostne za izgradnjo dobrega priporočilnega sistema. Uporabniki lahko imajo različna pričakovanja od priporočilnega sistema, ki se ne ustavijo pri natančnih priporočilih. Morda želijo raziskovati nove izdelke, brskati po raznolikih izdelkih, vprašljiva je tudi njihova pripravljenost deljenja osebnih podatkov, spet drugim je pomembna hitra odzivnost sistema in uporabniška izkušnja uporabe sistema. Evalvacija priporočilnega sistema je zato obširna tema, pri kateri moramo najprej identificirati lastnosti sistema, ki lahko vplivajo na njegovo uspešnost v okviru ciljne aplikacije, šele nato pa lahko iz teh podatkov izdelamo strategijo za ocenjevanje njegove uspešnosti. Shani et al. so predlagali 14 različnih lastnosti, pomembnih pri evalvaciji priporočilnih sistemov. V to množico spadajo med drugim točnost priporočil (metrike za točnost so opisane v poglavju 2.5.2), možnost podajanja priporočil za vse izdelke in uporabnike, zaupanje sistema v priporočila, zaupanje uporabnikov sistemu, stopnja novosti, nepričakovanosti, raznolikosti, tveganja in koristnosti priporočil, skalabilnost in prilagodljivost sistema ter nenazadnje stopnja zasebnosti uporabnikov in njihovih podatkov [20]. 21

31 2.5.1 Oblike eksperimentov Pogosto smo pri izvedbi eksperimentov omejeni s podatki in sredstvi, ki jih imamo na voljo. Za katero obliko eksperimenta se odločimo, je odvisno tudi od tega, v kateri fazi načrtovanja priporočilnega sistema se nahajamo. Če smo šele začeli z gradnjo novega priporočilnega sistema, želimo najprej ugotoviti uspešnost in omejiti nabor možnih priporočilnih algoritmov. V tej fazi običajno nimamo veliko podatkov o uporabnikih, zato želimo včasih poiskati potencialne uporabnike, ki bi preizkusili več različic priporočilnega sistema in podali svoje mnenje. V primerih, ko je priporočilni sistem že dostopen in ima aktivno bazo uporabnikov, lahko eksperiment izvedemo celo v produkcijskem sistemu in dobimo rezultate nad realnimi podatki. Eksperimente za evalvacijo priporočilnih sistemov lahko razdelimo v tri podskupine [20]: eksperimenti v testnem okolju, uporabniške študije in eksperimenti v produkcijskem sistemu. V nadaljevanju smo vsako skupino natančneje opisali. V eksperimentih v testnem okolju (angl. offline experiment) niso vključeni dejanski uporabniki, pač pa se testi izvajajo na obstoječi podatkovni množici, za katero načrtovalec meni, da je najbolj podobna realnim podatkom, s katerimi bo priporočilni sistem operiral v produkcijskem okolju. Običajno se v takšni podatkovni množici nahajajo izdelki, uporabniki ter njihove ocene za izdelke, ki so bile predhodno zbrane. V eksperimentu lahko na podlagi teh podatkov simuliramo obnašanje uporabnikov ter spremljamo in ocenjujemo odzive priporočilnega sistema. Pri izbiri podatkov za testno množico moramo biti pozorni na njihovo ustreznost in podobnost s podatki, ki jih pričakujemo v realnem sistemu, hkrati pa moramo zagotoviti, da podatki niso pristranski glede porazdelitve izdelkov, uporabnikov in ocen. Pri tem se poslužujemo standardnih statističnih metod izbire vzorca, kjer imamo na voljo več pristopov, kot so na primer filtriranje na osnovi določenih parametrov, naključni vzorec, utežen vzorec in drugi. Potrebno se je zavedati tudi možnosti, da je pristranska že sama začetna podatkovna množica. To velja tako med uporabniki, saj določeni podajo večje število ocen kot drugi, kakor tudi med izdelki, pri katerih imajo običajno večje število ocen tisti, glede katerih imajo uporabniki nasprotujoča mnenja. Prednost eksperimentov v testnem okolju je njihova hitrost in ekonomičnost. Z njimi lahko na enostaven način preizkusimo več priporočilnih algoritmov v povezavi z večimi podat- 22

32 kovnimi množicami, ki lahko vsebujejo večje količine podatkov. Če imamo dostop do podatkov o času, kdaj je uporabnik ocenil določen izdelek, lahko celo postavimo sistem v določeni točki v preteklosti in simuliramo interakcijo uporabnikov z njim. Kljub temu smo omejeni s podatki, ki jih imamo na voljo, torej lahko preverjamo le priporočila za izdelke, za katere imamo dejanske ocene. Še večja pomanjkljivost te oblike eksperimenta je dejstvo, da ne more meriti pravega zadovoljstva uporabnikov in njihovega mnenja, pač pa le točnost, izvirnost in nepričakovanost priporočil. Prav zato je glavni cilj tega pristopa izločiti neprimerne algoritme in izbrati manjšo množico kandidatnih algoritmov, ki jih lahko nato ocenimo v dražjih pristopih, kot so uporabniške študije in eksperimenti v produkcijskem sistemu [20], [21]. Uporabniške študije (angl. user studies) se sicer še zmeraj odvijajo znotraj testnega okolja, vendar pri njih sodelujejo potencialni uporabniki priporočilnega sistema. Uporabne so pri pristopih podajanja priporočil, ki so močno odvisni od interakcije uporabnika s sistemom in jih posledično težje testiramo v avtomatiziranem eksperimentu. Razen tega včasih nimamo na voljo podatkov za izvedbo eksperimenta v testnem okolju ali pa želimo pridobiti dodatne informacije s strani uporabnikov in preveriti druge, težje merljive lastnosti sistema, ki vplivajo na njihovo zadovoljstvo. S tem so uporabniške študije eno najmočnejših orodij pri zbiranju kvalitetnih podatkov, vendar so posledično tudi drage in časovno zahtevne, če želimo pridobiti in analizirati večjo količino podatkov. Najprej moramo izbrati skupino ljudi, ki bo v študiji igrala vlogo potencialnega uporabnika. Ti ljudje sestavljajo vzorec, pri katerem moramo biti pozorni, da je reprezentativen za celotno populacijo. To zna biti težava, predvsem kadar so udeleženci uporabniške študije prostovoljci, saj se običajno za takšno študijo odločijo ljudje, ki se za raziskovalno področje nadpovprečno zanimajo (npr. filmski navdušenci bodo z veseljem pomagali pri študiji, ki obravnava priporočila v zvezi s filmi), kar pa ni nujno v skladu z našo ciljno populacijo. Na drugi strani imamo spet težave s plačanimi udeleženci, saj pri njih obstaja višja možnost, da bodo želeli z odgovori ugajati izvajalcu študije. Že samo poznavanje hipoteze, ki jo želimo v uporabniški študiji potrditi, lahko vpliva na obnašanje udeležencev, zato je priporočljivo, da se podatki o študiji razkrijejo šele po zbiranju podatkov. V študiji lahko zbiramo različne tipe podatkov. Običajen pristop izgleda nekako tako: uporabniku pokažemo seznam priporočil, ki so izdelana s strani več različnih kandidatnih algoritmov, ter ga prosimo, da priporočila oceni s številsko oceno. Na koncu lahko uporabnika vprašamo po številski oceni splošnega zadovoljstva s podanimi priporočili ali drugih 23

33 aspektov priporočilnega sistema (npr. izvirnost priporočil, prijetnost interakcije). Na podlagi številskih ocen lahko računamo povprečja in analiziramo dobre in slabe strani našega sistema. Poleg številskih ocen imamo pri uporabniški študiji enkratno priložnost za zbiranje kvalitativnih podatkov in opisnih mnenj uporabnikov, ki jih je težko zajeti s številsko oceno. Na ta način lahko preverimo veliko več lastnosti priporočilnega sistema kot z eksperimentom v testnem okolju. Uporabniške študije, ki preverjajo uspešnost več različnih pristopov k podajanju priporočil, lahko izvajamo na dva različna načina. V prvem načinu posameznemu uporabniku prikažemo vse kandidatne pristope, kar uporabniku omogoča, da jih direktno primerja in nam razloži, zakaj mu je določen pristop bolj všeč kot drugi. Slabost tega je, da se uporabnik bolj zaveda eksperimenta in težje skrijemo razlike med pristopi. V drugem načinu študije uporabnike razdelimo v več skupin ter vsaki skupini predstavimo le en kandidatni pristop. Ta pristop je znan tudi pod nazivom A/B testiranje, njegova prednost pa je lažje spremljanje uporabe, procesa učenja in navajenosti uporabnika na sistem. Uporabnik lahko v teh testih nemoteno uporablja sistem, ne da bi se moral obremenjevati s primerjanjem ali menjavanjem kandidatnih pristopov [20], [21]. Eksperimenti v produkcijskem sistemu (angl. online experiment) izhajajo iz področja spletnega oglaševanja. Podobno kot v oglaševanju je tudi cilj priporočilnega sistema vplivati na obnašanje uporabnika. Če imamo produkcijski sistem že postavljen, lahko merimo spremembe v obnašanju uporabnikov v povezavi s spremembami v priporočilnem sistemu. Spremembo v obnašanju običajno merimo s stopnjo odzivnosti (angl. click through rate oz. CTR), ki predstavlja razmerje med priporočili, na katere so uporabniki kliknili, in vsemi prikazanimi priporočili (npr. če priporočilni sistem prikaže priporočil, od katerih jih uporabniki kliknejo 150, potem je CTR enak 1,5%). Ob CTR se pojavljajo še druge metrike, kot je število snetih datotek ali število kupljenih izdelkov. Te metrike bazirajo na domnevi, da je uporabnik zadovoljen s priporočilom, če nanj klikne, sname datoteko ali kupi izdelek. To se v določenih primerih izkaže za napačno, saj lahko uporabnik šele kasneje ugotovi, da z izdelkom ni zadovoljen. Veliko produkcijskih sistemov se poslužuje takšnih eksperimentov, v katerih primerjajo več algoritmov. To počnejo tako, da majhnemu odstotku svojih uporabnikov prikazujejo priporočila alternativnega algoritma in beležijo njihovo interakcijo s sistemom. Na ta način lahko dobivajo podatke, ki bazirajo na interakciji dejanskih uporabnikov s produkcijskim sistemom in imajo s tem največjo vrednost pri ocenjevanju uspešnosti priporočilnih algoritmov. 24

34 Po drugi strani pa takšni eksperimenti s seboj prinesejo večjo stopnjo tveganja, saj lahko z neprimernimi priporočili uporabnika odženemo s svoje storitve, zato so v nekaterih poslovnih aplikacijah nezaželeni. V vsakem primeru je priporočljivo pred eksperimenti v produkcijskem sistemu izvesti eksperimente in uporabniške študije znotraj testnega okolja, zato da zmanjšamo tveganje pretiranega nezadovoljstva uporabnikov s spremembo [20], [21] Metrike za točnost priporočil V tem poglavju obravnavamo metrike za računanje točnosti priporočil. Te se lahko uporabljajo za primerjanje uspešnosti priporočilnih algoritmov v eksperimentih v testnem okolju, saj točnost priporočil ni odvisna od uporabniškega vmesnika in interakcije z uporabnikom. Razdelimo jih lahko v tri kategorije [5]: metrike za točnost predvidevanja ocen, metrike za točnost priporočanja nekaj izdelkov in metrike za točnost priporočanja vseh izdelkov. V nadaljevanju smo podrobneje opisali vse tri kategorije. Metrike za predvidevanje ocen so uporabne, kadar ocenjujemo priporočilni sistem, ki uporabniku prikazuje predvidene ocene za izdelke, ki jih sam še ni ocenil. To lahko povežemo s formalno definicijo iz poglavja 2.1, kjer smo definirali funkcijo u, ki nam pove koristnost izdelka s za uporabnika c. Običajno je v takšnih sistemih koristnost predstavljena s številsko oceno na lestvici (npr. od 1 do 5), naloga priporočilnega sistema pa je predvideti oceno, tako da bo čim bližje realni oceni. V eksperimentih imamo praviloma na voljo podatkovno množico z uporabniki in njihovimi ocenami za izdelke. V sklopu testiranja nato nekatere ocene prikrijemo ter od priporočilnega sistema pridobimo njegove napovedi za te ocene. V evalvaciji primerjamo predvidene ocene z dejanskimi ocenami. Pri tem je ena popularnejših metrik koren povprečne kvadratne napake oz. RMSE (angl. root mean squared error). Če z u cs označimo dejanske ocene uporabnika c za izdelek s in u^ cs predstavlja predvidene ocene ter množica K = {( c,s ) } vsebuje prikrite ocene, potem lahko RMSE izračunamo kot: RMSE = 1 K (c,s) K 2 ( u^ cs u cs ) (2.2) 25

35 Poleg RMSE lahko omenimo še srednjo absolutno napako oz. MAE (angl. mean average error), ki je prav tako popularna in namesto kvadratne napake upošteva absolutno napako, zaradi tega je MAE bolj popustljiv do večjih napak v predvidenih ocenah kot RMSE. MAE = 1 u^ u K (c,s) K cs cs (2.3) Pri ocenjevanju točnosti priporočanja nekaj izdelkov je cilj priporočilnega sistema podati omejen seznam izdelkov, za katere meni, da so relevantni. Za ocenjevanje te naloge potrebujemo najprej podatek o tem, ali je nek izdelek dejansko relevanten ali ne. Nato lahko izdelke še dodatno razdelimo, glede na to ali so bili izdelki priporočeni ali ne. Tako smo izdelke razdelili v štiri skupine, kot je to prikazano v tabeli 2.2. Tabela 2.2: Izdelki so kategorizirani glede na relevantnost in priporočenost. relevanten nerelevanten priporočen TP FP ni priporočen FN TN Na podlagi te kategorizacije lahko sedaj izračunamo preciznost in priklic, kjer preciznost označuje razmerje med številom pravilno priporočenih izdelkov ter številom vseh priporočil, priklic pa nam pove razmerje med številom pravilno priporočenih izdelkov ter številom vseh relevantnih izdelkov. preciznost = priklic= TP TP +FP TP TP +FN (2.4) (2.5) Praviloma sta preciznost in priklic povezana tako, da lahko s spreminjanjem določenih nastavitev eno metriko zmanjšujemo in drugo povečamo. Na primer v sistemih, kjer nimamo določene dolžine seznama priporočil, bomo z daljšanjem seznama priporočil zajeli več relevantnih izdelkov in dosegli višji priklic, vendar se bo v rezultatu verjetno pojavilo tudi več nerelevantnih izdelkov, kar bo vplivalo na nižjo preciznost. Prav zato je potrebno poiskati pravo razmerje za ti dve metriki, glede na to, kaj želimo doseči. Za iskanje pravega razmerja med preciznostjo in priklicem se poslužujemo dveh metod, s katerima lahko grafično prikažemo njune vrednosti prva metoda je krivulja preciznost-priklic (angl. precisionrecall curve), druga pa krivulja ROC (angl. receiver operating characteristic). Od naših ci- 26

36 ljev je odvisno, katero metodo je smiselno izbrati. Če nam je zelo pomembno, da ne priporočamo nerelevantnih izdelkov (FP v tabeli 2.2), je smiselno izbrati krivuljo ROC. V primeru, da nas bolj zanima preciznost, pa izberemo krivuljo preciznost-priklic. Preciznost in priklic sta dve metriki, ki se običajno pojavljata v paru. Otežujeta nam podati enostavno oceno priporočilnemu algoritmu in primerjati njegovo uspešnost z drugimi algoritmi, saj moramo upoštevati dve vrednosti. Iz tega razloga obstajajo načini združevanja teh dveh vrednosti v enotno metriko, s katero lahko hitreje ugotovimo uspešnost algoritma. Med popularnejše pristope spada F mera (angl. F measure), ki jo lahko izračunamo z naslednjo formulo: F β= (1+β) preciznost priklic (β 2 preciznost )+priklic (2.6) Parameter β zaseda vrednosti na intervalu [0, ], pri čemer vrednosti manjše od 1 povečajo pomembnost preciznosti, vrednosti večje od 1 pa povečajo pomembnost priklica. Popularna je verzija F mere, kjer je β enak 1 in je s tem enaka pomembnost pripisana preciznosti in priklicu, kar pa ni zmeraj primerno in je odvisno od priporočilnega sistema. V tretji kategoriji merimo točnost priporočanja vseh izdelkov, kjer je razilka ta, da uporabniku prikažemo vsa priporočila na daljšem seznamu, ki je včasih razdeljen celo na več strani. Tukaj smo že na področju informacijskega poizvedovanja. Pri podajanju daljšega seznama so običajno najbolj pomembna priporočila, ki so na vrhu seznama, saj uporabniki običajno ne pregledajo vseh rezultatov, pač pa le vrhnje. Temu pojavu morajo slediti tudi metrike, ki morajo priporočilom na vrhu seznama pripisati največjo pomembnost. V takšnih scenarijih je običano v celotni množici le zelo majhen odstotek relevantnih izdelkov. Zato ni toliko pomembno, če naš priporočilni sistem izdela daljši seznam, na katerem je več nerelevantnih izdelkov, pač pa je pomembneje, da so prav relevantni izdelki na vrhu seznama oz. v prvih 10 ali 20 priporočilih. To lahko merimo s posebnima različicama preciznosti in priklica, ki ju omejimo na prvih k zadetkov, in ju imenujemo preciznost@k in priklic@k. Ti dve vrednosti izračunamo podobno kot osnovno različico metrike, le da ju uporabimo le nad prvimi k zadetki. Slabost tega pristopa je, da te metrike niso stabilne v primerih, kjer je število relevantnih izdelkov zelo nizko, hkrati pa imamo še zmeraj dve metriki in nimamo ene vrednosti za primerjavo algoritmov. 27

37 Za združevanje preciznosti in priklica se v tem primeru pogosto uporablja metrika srednje povprečne preciznosti oz. MAP (angl. mean average precision). To metriko odlikuje dober prag odzivnosti in stabilnost. Za njen izračun moramo najprej definirati povprečno preciznost oz. AP, ki se izračuna za vsak posamezni testni primer v testni množici: k k = i Δ i (2.7) i=1 V tej enačbi Δ i označuje spremembo priklica glede na priklic v rangu i-1. Izračun AP@k najlažje predstavimo na praktičnem primeru iz tabele 2.3. Pri računanju se praktično upoštevajo le s sivo obarvane vrstice, v katerih je algoritem predlagal relevanten izdelek, saj je v vseh ostalih priklic ostal enak, kar pomeni da je sprememba enaka 0. V ostalih vrsticah se priklic pomnoži s preciznostjo v tistem rangu in prišteje končnemu rezultatu. Končna vrednost AP@10 je v tem primeru enaka približno 0,761. Tabela 2.3: Primer sortiranega seznama priporočil z vrednostmi preciznost@k (P@k), priklic@k (R@k) in spremembo priklica@k (ΔR@k). rang relevanten (k) (obarvan) P@k R@k ΔR@k 1 1/1 1/5 1/5 2 2/2 2/5 1/5 3 2/3 2/ /4 3/5 1/5 5 3/5 3/ /6 3/ /7 3/ /8 4/5 1/5 9 5/9 5/5 1/5 10 5/10 5/5 0 Metrika MAP se poslužuje vrednosti AP, ki jo izračuna za vsak testni primer, ter nato izra čuna povprečje AP za celotno testno množico. V kolikor se v testnih primerih pojavlja zelo malo pozitivnih oz. relevantnih izdelkov, za katere pričakujemo, da jih bo priporočilni sistem priporočil, je smiselno metriko MAP računati samo na omejenem delu seznama priporočil. S tem mislimo na podobno omejitev, kot smo to omenili pri preciznost@k in prikli c@k. Tako omejeno metriko MAP, ki je izračunana samo za prvih k priporočil, označujemo z MAP@k. 28

38 Poleg MAP še velja omeniti metriko NDCG (angl. normalized discounted cumulative gain). MAP, preciznost in priklic delujejo nad podatki, kjer je relevantnost določena binarno (izdelek je ali pa ni relevanten), medtem ko je NDCG oblikovan tako, da upošteva nebinarne vrednosti za relevantnost (npr. zaseda realne vrednosti na intervalu od 0 do 1). Pomembnost priporočila v tej metriki pada logaritmično z rangom, na katerem se nahaja. Pri izračunu se poslužuje vrednosti DCG, pri čemer gcs predstavlja korist, ki ga ima uporabnik c od priporočila za izdelek s, DCG pa računamo za vse J izdelke na seznamu: DCG= 1 N N J g cs max (1, log c =1 j=1 j b ( j )) (2.8) NDCG nato vrednost metrike DCG normalizira, tako da jo deli z idealno vrednostjo, ki bi jo DCG lahko dosegel. S tem zagotovi, da je vrednost NDCG normalizirana oz. na intervalu od 0 do 1. Podobno kot MAP@k lahko izračunamo tudi NDCG@k, ki predstavlja enako metriko, uporabljeno na prvih k priporočilih seznama. [5], [20], [22], [23] 29

39 3 IMPLEMENTACIJA PRIPOROČILNEGA SISTEMA V praktičnem delu smo se odločili implementirati lastni priporočilni sistem. Ideja, ki smo jo zasledovali, je programerjem priporočati in pomagati odkriti nova programska ogrodja, ki bi jim olajšala delo na njihovih projektih. Uporabnik iz vnaprej pripravljenega omejenega seznama značk izbere vhodne značke, s katerimi čim bolj natančno opiše projekt, za katerega želi pridobiti priporočila. Priporočilni sistem nato na podlagi vhodnih značk ter na podlagi podatkov v bazi poskuša uporabniku podati priporočila v obliki konkretnih programskih ogrodij, ki bi prišla v poštev pri izvedbi projekta. Podatkovno bazo smo sestavili iz prosto dostopnih podatkov s spletnih strani Stack Overflow in GitHub. Podatke smo nato preoblikovali na dva različna načina in se problema ustrezno lotili iz dveh različnih zornih kotov. Na eni strani smo implementirali algoritem, ki s pomočjo algoritma Apriori izvleče asociacijska pravila in na njihovi osnovi podaja priporočila. Ta pristop smo na drugi strani primerjali s tremi drugimi algoritmi, ki priporočila črpajo iz grafa podatkov. Za preoblikovanje podatkov v graf smo se odločili zaradi lažjega vzdrževanja aktualnosti priporočil, saj lahko ob pojavu dodatnih podatkov graf enostavno dograjujemo brez kakršnihkoli časovnih zamikov, medtem ko bi morali asociacijska pravila ustvarjati vedno znova, kar je časovno zelo potratno. Tako želimo preizkusiti alternativni pristop k podajanju priporočil v primerih, ko se podatki, iz katerih priporočila izhajajo, zelo hitro spreminjajo. Naš priporočilni sistem lahko umestimo med hibridne pristope (glej poglavje 2.4), saj uporablja kombinacijo pristopa analize sopojavitev in pristopa na osnovi grafa. Izpostavimo lahko tri prednosti našega pristopa. Na osnovi sopojavitev lahko v zelo kratkem času zgradimo graf, s čimer dosežemo hitro inicializacijo ter hkrati zmanjšamo količino podatkov, nad katerimi priporočilni sistem deluje. Druga prednost je enostavno in hitro dograjevanje grafa podatkov, kar se izkaže za zelo uporabno v hitro spreminjajočih okoljih. Tretja prednost je nova perspektiva na sopojavitve, saj je možno sklepati na določeno mero sorodnosti dveh značk, tudi kadar se znački ne pojavljata direktno v kombinaciji, pač pa preko vmesnih sosedov. 30

40 Ker gre za problem nenadzorovanega učenja, smo imeli težave z izbiro primerne testne množice. Ta problem smo rešili tako, da smo kot testne primerke izbrali kar asociacijska pravila. S to odločitvijo smo teste že v osnovi prikrojili za algoritem, ki priporočila podaja na podlagi asociacijskih pravil, zato rezultatov tega algoritma ne moremo posplošiti na celotno populacijo. Kljub temu pa nam lahko njegovi rezultati služijo kot izhodišče za primerjavo z ostalimi algoritmi, ki bazirajo na grafu. V nadaljevanju smo natančneje opisali gradnjo in opis baze podatkov, na podlagi katere algoritmi podajajo priporočila. Prav tako smo opisali delovanje in implementacijo posameznih priporočilnih algoritmov. Sledi opis priprave testne množice in izvedbe testiranja, kakor tudi analiza pridobljenih rezultatov. 3.1 Gradnja in opis baze podatkov Podatke, ki smo jih uporabili za osnovo našega priporočilnega sistema, smo pridobili iz izpisa podatkovne baze spletnega portala Stack Overflow ter iz programskega vmesnika portala GitHub, zato smo v naslednjih podpoglavjih najprej opisali oba portala. Sledi opis pridobivanja in prestrukturiranja podatkov v obliko, ki je primerna za naš sistem, ter na koncu še opis podatkovne množice, ki je bila rezultat tega postopka Stack Overflow Stack Overflow ( je spletna stran, ki je del večje mreže spletnih strani Stack Exchange ( pod okrilje katere spadajo strani, na katerih lahko uporabniki javno zastavljajo in odgovarjajo na vprašanja v zvezi z določeno temo. Stack Overflow je namenjen zastavljanju vprašanj o zapletenih oz. nenavadnih težavah, na katere uporabniki naletijo ob programiranju. Uporabniki so motivirani ustvarjati dobro vsebino, saj zbirajo t.i. točke ugleda (reputation). Točke ugleda se podeljujejo glede na različne kriterije, med drugim tudi tako, da uporabniki označujejo vprašanja in odgovore kot koristne (glasujejo navzgor) ali neprimerne (glasujejo navzdol). To točkovanje smo kasneje upoštevali pri kreiranju naše podatkovne množice. Spletno stran sta leta 2008 ustvarila Jeff Atwood in Joel Spolsky [24]. Z leti je postajala vse bolj popularna, pridobivala je na kvalitetni vsebini, tako da danes med programerji velja za enega pomembnejših virov informacij ob programiranju. Januarja 2016 je bilo na portalu registriranih več kot 5 milijonov uporabnikov, 11 milijonov vprašanj in 18 milijonov 31

41 odgovorov [25]. Mesečno portal obišče 32 milijonov ljudi, od tega se 25 milijonov obiskovalcev vrača na stran povprečno 6 krat na mesec [26]. Trenuten globalni Alexa1 rang strani je 58 [27]. Vsi ti podatki nakazujejo na velikost tega spletnega portala ter na količino podatkov, ki jih vsebuje. Vprašanja na portalu so sestavljena iz treh delov: naslov vprašanja, vsebina in značke. V naslovu ima uporabnik na voljo 300 znakov, v katerih mora na kratek in jedrnat način oblikovati osnovno vprašanje. Naslov je prvi stik, ki ga imajo drugi uporabniki z vprašanjem in preko katerega lahko privabimo ostale, da pomagajo pri iskanju rešitve. Vsebina vprašanja je namenjena podrobnejšemu opisu in izpostavitvi problema. Običajno se pričakuje, da uporabnik opiše, kako je predhodno že sam poskusil rešiti težavo. Vsako vprašanje mora uporabnik označiti še z 1 do 5 značkami. Značke so ključne besede, na katere se vprašanje navezuje. Uporaba značk uporabnikom omogoča filtriranje sorodnih vprašanj ter s tem lažje iskanje odgovorov. Prav značke, s katerimi so vprašanja označena, igrajo ključno vlogo v naši podatkovni množici GitHub GitHub ( je spletna stran, ki uporabnikom ponuja spletno gostovanje Git repozitorijev. Git je sistem za porazdeljeno dokumentiranje sprememb in izdajanje različic datotek, ki ga je pomagal razviti Linus Torvalds, poznan kot oče operacijskega sistema Linux. Git je v prvi vrsti namenjen programerjem za lažje upravljanje s kodo na projektih, kjer skupaj sodeluje več razvijalcev. Za razliko od Git, ki v osnovi ponuja le vmesnik z ukazno vrstico (angl. command-line interface oz. CLI), imamo na GitHub možnost s spletnim vmesnikom dostopati do polne funkcionalnosti sistema Git, poleg tega pa GitHub nudi še dodatne razširitve. Uporabniki imajo možnost nadzora dostopa do svojih repozitorijev, sledenje programskim hroščem, predlaganje novih funkcionalnosti, upravljanje opravil, izdelavo wiki strani itd. Večina repozitorijev na portalu je javnih, tako da lahko do njihove vsebine dostopa vsak, vendar pa je na voljo tudi možnost kreiranja zasebnih repozitorijev, kar pa zahteva plačljiv uporabniški račun. Delo na portalu se je začelo eno leto pred izidom spletne strani Stack Overflow, leta Prvotni ustanovitelji in razvijalci so bili Tom Preston-Werner, Chris Wanstrath in PJ Hyett [28]. V januarju 2016 je GitHub navajal, da ima na svojem portalu 12 milijonov uporabni1 Alexa Internet, Inc. se ukvarja z analizo prometa na svetovnem spletu ter med drugim za spletne strani računa globalni rang glede na njihovo popularnost. 32

42 kov ter preko 31 milijonov repozitorijev, s čimer predstavlja največji portal za gostovanje programske kode na svetu [29]. Trenuten globalni Alexa1 rang strani je 85 [30]. Med programerji GitHub velja za enega največjih in najbolj priljubljenih gostiteljev odprtokodnih projektov. Prav zato smo se odločili, da pri gradnji baze podatkov uporabimo GitHub kot vir informacij o programskih ogrodjih. Zavedamo se, da smo zaradi te odločitve zajeli le odprtokodna in zanemarili lastniška ogrodja, vendar menimo, da to za naš priporočilni sistem v tej fazi ne igra ključne vloge Gradnja baze podatkov Spletna stran oz. mreža spletih strani Stack Exchange, pod katero spada tudi Stack Overflow, periodično na splet nalaga izpise svoje podatkovne baze. Le-te lahko na svoj računalnik prenesemo s spletne strani Podatki v izpisu so v obliki XML dokumentov in so licencirani pod licenco cc-by-sa 3.0, ki dovoljuje deljenje in preoblikovanje podatkov, vendar ob tem zahteva navedbo avtorja vsebine in lastnika licence. V našem priporočilnem sistemu ne navajamo specifičnih vsebin, ki so jih ustvarili posamezni avtorji, pač pa iz celotne skupine podatkov črpamo novo znanje, ki se prikaže uporabniku. Prav zato posameznih avtorjev ne moremo navajati, smo pa na tem mestu izpostavili podjetje Stack Exchange, Inc., ki je lastnik licence in podatkov. Postopek gradnje baze podatkov smo na sliki 3.1 grafično prikazali. Začeli smo z izpisom podatkovne baze Stack Overflow. Pridobljene podatke smo filtrirali, preoblikovali ter izvlekli podatke o značkah (tags.csv) in vprašanjih (questions.csv). S pomočjo spletne storitve GitHub smo pridobili podatke o programskih ogrodjih (frameworks.csv). Iz podatkov o vprašanjih smo nato izdelali graf (relation.csv) in ga particionirali (partitions-[št. particij].csv), prav tako pa smo iz vprašanj s pomočjo algoritma Apriori izdelali asociacijska pravila (assoc-rules.csv). Particije potrebujemo za delovanje algoritma DAP (glej poglavje 3.2.3), medtem ko so asociacijska pravila potrebna za testiranje algoritmov ter za algoritem, ki na njihovi podlagi podaja priporočila. Z različnimi barvami smo označili datoteke, iz katerih črpajo podatke posamezni algoritmi na eni strani algoritem, ki bazira na asociacijskih pravilih (temno), ter ostali trije algoritmi, ki bazirajo na grafu (svetlo). 33

43 particije grafa GitHub API frameworks.csv partitions-15.csv neobdelani podatki Stack Overflow partitions-10.csv Tags.xml tags.csv relations.csv partitions-20.csv Posts.xml questions.csv assoc-rules.csv partitions-25.csv Slika 3.1: Grafični prikaz preoblikovanja podatkov in gradnje baze podatkov. Do izpisa podatkovne baze Stack Overflow smo dostopali Pridobili smo takrat najaktualnejši izpis podatkovne baze, v katerem so podatki, ki so bili na portalu prisotni Za naše potrebe smo potrebovali 2 datoteki z naslednjo vsebino: stackoverflow.com-posts.7z stisnjena arhivska datoteka, v kateri najdemo datoteko Posts.xml, ki vsebuje v XML obliki strukturirana vprašanja in odgovore, stackoverflow.com-tags.7z stisnjena arhivska datoteka, v kateri najdemo datoteko Tags.xml, ki vsebuje v XML obliki strukturirane značke. Datoteka Posts.xml obsega 42,3 GB podatkov, kar v veliki večini zavzemajo imena XML značk in atributov ter podatki, ki za nas niso relevantni (npr. odgovori, metapodatki o vprašanjih itd.). Za nas so zanimivi le podatki o vprašanjih kolikšna je ocena vprašanja ter katere značke vprašanje vsebuje. Podobno velja za datoteko Tags.xml, ki sicer s 3,8 MB ne predstavlja tako velike datoteke, vendar še vedno vsebuje nerelevantne podatke. Prav zato smo najprej izdelali lupinski skript (angl. shell script), ki iz Posts.xml in Tags.xml izvleče relevantne podatke, s katerimi kasneje lažje upravljamo. Skript izvede naslednje korake (glej prilogo A): 1. Iz Posts.xml izvleče le vprašanja ter rezultat shrani v Questions.xml. 2. Iz Questions.xml izvleče ID, oceno in značke za vsako posamezno vprašanje ter rezultat shrani v CSV obliki v datoteko SOQuestions.csv. 3. V SOQuestions.csv izvede oblikovne popravke. 4. Iz Tags.xml izvleče ID, ime in količino za vsako posamezno značko ter rezultat shrani v CSV obliki v datoteko SOTags.csv. 5. V datoteki SOQuestions.csv so za vsako vprašanje zapisana imena značk, ki jih skript zamenja z ID-jem posamezne značke iz datoteke SOTags.csv. 34

44 Po izvedbi lupinskega skripta iz vhodnih XML datotek izdelamo dve CSV datoteki, ki vsebujeta le relevantne podatke. To se pozna predvsem po velikosti datotek, saj na novo ustvarjena SOQuestions.csv obsega le 281,1 MB ter SOTags.csv le 916,7 kb. Kljub zmanjšani velikosti še nismo prišli do podatkovne zbirke, ki bi jo želeli uporabiti v priporočilnem sistemu, saj moramo filtrirati podatke, ki bi lahko negativno vplivali na uspešnost naših priporočil. V ta namen smo izdelali kratek Java program, ki iz CSV datotek filtrira vprašanja in značke po naslednjih kriterijih (izvedenih zaporedoma): 1. izloči vprašanja, ki imajo negativno oceno, 2. izloči značke, ki se pojavijo pri manj kot 100 vprašanjih, 3. izdela seznam relacij med značkami, kjer povezava med značkama nosi podatek o tem, v kolikih vprašanjih se znački pojavita skupaj, 4. izloči relacije med značkami, ki se pojavijo skupaj v manj kot 50 vprašanjih, 5. izloči značke, ki po uvedbi prejšnjih kriterijev niso več povezane z nobeno drugo značko, 6. izloči vprašanja, ki po uvedbi prejšnjih kriterijev ne nosijo več nobene značke, 7. filtrirana vprašanja izvozi v datoteko questions.csv, značke v tags.csv in relacije v relations.csv. Po filtriranju so na novo kreirane datoteke še malenkost manjše od prejšnjih. Filtrirana vprašanja zavzemajo 239 MB, filtrirane značke pa 239,8 kb. Novost na tej stopnji so še relacije med značkami, ki se prav tako shranijo, saj jih bomo kasneje potrebovali kot vir podatkov v priporočilnem sistemu. V našem priporočilnem sistemu potrebujemo še seznam programskih ogrodij, kjer je vsako ogrodje povezano z natanko eno od značk, hkrati pa ima vsaka značka povezavo z največ enim ogrodjem. Programska ogrodja smo za ta namen pridobili s spletnega portala GitHub oz. njihovega programskega vmesnika (angl. application program interface oz. API), ki spletnim uporabnikom ponuja dostop do vsebine v obliki JSON. Pridobivanje podatkov s spletnega portala GitHub smo izvedli Napisali smo Java program za pridobivanje podatkov, ki na programski vmesnik portala GitHub pošilja iskalna povpraševanja in obdelane rezultate shranjuje v pomnilnik. Ključno besedo v povpraševanju predstavlja ime značke, ki ga program vzame iz prej sestavljene množice značk. Program se tako sprehodi skozi vse značke in za vsako značko izvede eno pov- 35

45 praševanje. V prejetem odgovoru se nahaja seznam odprtokodnih projektov, ki jih program pregleda in preveri, ali ima projekt vsaj 200 zvezd in 60 vejitev (angl. fork). S to omejitvijo želimo filtrirati le projekte, ki so zares popularni. Nato program preveri, ali se ime posameznega projekta sklada z eno od značk v naši podatkovni množici. Če to drži, se istoimenska značka nastavi kot primarna značka projekta, njegovi podatki pa se shranijo v pomnilnik. Če pride do konflikta in naletimo na dva projekta, ki si delita enako ime, se obdrži projekt, ki ima večje število zvezd. Na koncu program izvozi pridobljena ogrodja v datoteko frameworks.csv Izdelava asociacijskih pravil z algoritmom Apriori Naš cilj je uporabniku priporočati najboljše značke (oz. ogrodja) glede na seznam značk, ki jih uporabnik vnese v naš priporočilni sistem. V resnici gre tukaj za problem, ki je zelo podoben analizi nakupovalne košarice, kjer vnesene značke predstavljajo izdelke, ki jih ima uporabnik v nakupovalni košarici. Poleg tega imamo prav tako seznam vprašanj, kjer vsako vprašanje nosi od 1 do 5 različnih značk, kar lahko primerjamo s seznamom opravljenih nakupov, iz katerega lahko izvlečemo pogoste vzorce. Asociacijska pravila opisujejo vzročna razmerja oz. korelacijo med entitetami v velikih podatkovnih bazah. Sestavljena so iz dveh delov: levi del oz. telo pravila vsebuje množico z entitetami, ki predstavljajo vzrok za desni del oz. glavo pravila, v kateri so entitete, ki predstavljajo posledico. Kot primer asociacijskega pravila lahko vzamemo pravilo {moka, jajca, sol} {mleko, pecilni prašek}, v katerem za kupca, ki ima v nakupovalni košarici moko, jajca in sol, predvidevamo, da potrebuje še mleko in pecilni prašek. Asociacijska pravila pridobimo tako, da najprej identificiramo pogoste vzorce oz. n-terice (v našem primeru množice značk), ki se pojavijo v določenem deležu transakcij (v našem primeru so to vprašanja). Pogosti vzorci so nato podlaga za izdelavo asociacijskih pravil. Pri izdelavi pogostih vzorcev in asociacijskih pravil je pomembno ugotoviti smiselnost in stopnjo zaupanja v rezultate. Najbolj pogoste mere za to opravilo so podpora, zaupanje in dvig. Podpora je relevantna za pogoste vzorce in se izračuna kot razmerje med številom transakcij, ki vsebujejo n-terico, in številom vseh transakcij, torej predstavlja odstotek transakcij, ki podpirajo določen vzorec. Ko iz vzorcev sestavimo asociacijska pravila, lahko za pravila izračunamo stopnjo zaupanja in dvig. Če z X označimo telo pravila in Y glavo pravila, potem lahko vrednosti teh dveh mer izračunamo sledeče: 36

46 zaupanje (X Y )= dvig (X Y )= podpora ( X Y ) podpora (X ) (3.1) podpora (X Y ) podpora (X ) podpora (Y ) (3.2) Zaupanje nam pove, s kakšno gotovostjo lahko napovemo glavo pravila, ob pogoju, da transakcija vsebuje telo pravila. Dvig pravila predstavlja stopnjo korelacije glave in telesa pravila če je dvig enak 1, je to pokazatelj, da sta glava in telo pravila neodvisna, v pri meru, da je večji od 1, pa predstavlja moč njune korelacije [31], [32]. Odločili smo se, da se bomo našega problema lotili tudi na klasični način in iz baze z vprašanji (questions.csv) izdelali seznam asociacijskih pravil, ter s tem izdelali bazo testnih primerkov. Na osnovi asociacijskih pravil bomo tako izdelali še algoritem, ki bo služil kot izhodišče za primerjavo z ostalimi algoritmi, baziranimi na podatkih iz grafa. Najprej smo poiskali pogoste vzorce, ki se pojavljajo v naši bazi vprašanj. Vprašanja oz. značke, s katerimi so posamezna vprašanja označena, smo vstavili v algoritem Apriori ter minimalno podporo pogostih vzorcev nastavili na 0,03%. Gre za izredno nizko podporo, vendar moramo upoštevati, da posamezno vprašanje vsebuje le 1 do 5 značk, medtem ko število vseh vprašanj presega 10 milijonov. Za lažjo predstavo smo izdelali graf na sliki 3.2 značka z največ pojavitvami je.net, ki ima podporo 9,37% oz. se pojavi v približno vsakem desetem vprašanju. Podpora ostalih značk strmo pada, tako da smo z nastavljeno minimalno podporo v prvem krogu algoritma Apriori zajeli le oz. 10,6% vseh značk, iz katerih smo potem sestavili pogoste vzorce z več členi. 0.1 podpora značke Slika 3.2: Graf podpore značk, ki so bile zajete v prvem krogu algoritma Apriori. S pomočjo zgoraj opisanega postopka smo tako sestavili seznam pogostih vzorcev z minimalno podporo 0,03%. Nad tem seznamom smo nato izvedli drugi del algoritma Apriori in poiskali seznam asociacijskih pravil, katerih minimalno zaupanje ne pade pod 37

47 1%. Na tej točki smo prav tako izračunali dvig posameznih pravil, vendar ga nismo upoštevali pri filtriranju, saj smo to naredili kasneje pri ustvarjanju testnih baz. Asociacijska pravila smo izvozili v datoteko assoc-rules.csv, v katero smo shranili pravil, vključno z njihovo podporo, zaupanjem in dvigom Particioniranje baze podatkov Naš graf podatkov je shranjen v obliki seznama sosednosti v datoteki relations.csv. Ta oblika zapisa je primerna za naš graf, saj gre za redek graf, v katerem je navzočih le 0,12% vseh možnih relacij. Za tak graf se v seznamu sosednosti uporablja relativno malo pomnilnika, saj so shranjene le relacije, ki zares obstajajo, tako da je zahtevnost pomnilniškega prostora (angl. space complexity) enaka Θ(V + E ), kjer je V število vozlišč in E število relacij med njimi. V algoritmu DAP bomo potrebovali tudi graf v obliki matrike sosednosti. V tej obliki je zahtevnost pomnilniškega prostora občutno večja, saj znaša Θ(V 2 ), ne glede na število relacij v grafu. Zaradi velike količine pomnilnika, ki bi jo potrebovali za računanje s takšno matriko, smo se odločili, da graf particioniramo in račune izvajamo le nad particijami, ki nas zanimajo. Particioniranje grafa je problem, v katerem poskušamo graf razdeliti na več manjših komponent, ki morajo ustrezati določenim pogojem. Kvaliteta particij se meri na več različnih načinov, pri katerem je največji faktor število relacij, ki povezujejo vozlišča iz različnih particij. Tem relacijam rečemo tudi odrezane relacije (angl. cut edges), ki jih mora biti v dobro particioniranem grafu čim manj. Particioniranje grafa spada v kategorijo NP-težkih problemov, le-te pa običajno ne moremo rešiti natančno, zato jih rešujemo s pomočjo hevrističnih pristopov in algoritmov, ki podajo dovolj dober približek rešitve [33]. Particioniranje smo izvedli s tremi algoritmi, rezultate ocenili in izbrali najboljše particije za nadaljnje delo. Uporabljeni algoritmi so sledeči: 38 KaFFPa (iz sklopa algoritmov KaHIP 0.73) [34], Metis (verzija 5.1.0) [35], Scotch (verzija 6.0.4) [36].

48 Z vsakim algoritmom smo naš graf particionirali na 10 particij. Rezultati so prikazani v tabeli 3.1, kjer smo uporabili naslednje metrike: Vw p seštevek uteži vozlišč v particiji p, E p število odrezanih relacij za particijo p, Ew p seštevek uteži odrezanih relacij za particijo p. Iz rezultatov je razvidno, da je Metis izdelal najbolj uravnotežene particije, prav tako pa je ob tem odrezal občutno manj relacij. Tabela 3.1: Rezultati particioniranja grafa z algoritmi KaFFPa, Metis in Scotch. min(vw p ) max (Vw p) min( E p ) max ( E p ) avg ( E p ) min( Ew p ) max ( Ew p ) avg ( Ew p ) KaFFPa Metis Scotch Zaradi dobrih rezultatov algoritma Metis pri particioniranju grafa na 10 particij, smo enak algoritem uporabili tudi za particioniranje grafa na 15, 20 in 25 particij. Tako smo izdelali 4 datoteke (partitions-10.csv, partitions-15.csv, partitions-20.csv, partitions-25.csv), ki za vsako vozlišče v grafu navajajo particijo, kateri vozlišče pripada Opis baze podatkov Naša baza podatkov je shranjena v 9 CSV datotekah (angl. comma separated values), katerih vsebina je predstavljena v tabeli 3.2. Tukaj je pomembno omeniti, da so relacije shranjene v obliki seznama sosednosti, kjer za vsako vozlišče v grafu vodimo seznam vozlišč, s katerimi je le-to povezano. Uteži na povezavah so odvisne od števila skupnih pojavitev značk na vprašanjih. Ker so povezave v našem grafu neusmerjene, je posledično vsaka povezava shranjena dvakrat (za vsako vozlišče v paru enkrat). Tabela 3.2: Opis baze podatkov v obliki CSV. ime datoteke entiteta velikost št. vnosov atributi questions.csv vprašanja 239 MB ID, ocena, ID-ji značk tags.csv značke 239,8 kb frameworks.csv programska ogrodja 141,6 kb relations.csv relacije med značkami 1,3 MB assoc-rules.csv asociacijska pravila 143,4 kb partitions-[10,15, 20,25].csv particije 22,5 29,0 kb ID, ime, število pojavitev ID, ime, URL, datum kreiranja projekta, ID primarne značke, št. zvezd na portalu GitHub, opis ID značke, seznam ID-jev povezanih značk z ustreznimi utežmi ID-ji značk telesa, ID-ji značk glave, rela2.430 tivna podpora, absolutna podpora, zaupanje, dvig ID particije 39

49 Graf, ki je shranjen v obliki seznama sosednosti v datoteki relations.csv, smo zaradi lažjega prikaza in olajšane manipulacije s podatki shranili še v podatkovno bazo Neo4j. Poleg značk in relacij med njimi smo v graf uvozili še programska ogrodja in jih povezali z njiho vimi primarnimi značkami. Na sliki 3.3 je prikazan izsek iz grafa, na katerem so značke obarvane z modro, programska orodja pa z zeleno. Tukaj velja omeniti, da Neo4j vse relacije obravnava kot usmerjene (zato so na sliki relacije prikazane s puščicami), kljub temu, da v našem primeru usmerjenost ne igra vloge. ruby ruby c# mysql2 mysql2 laravel spring php laravel spring-b spring java spring-b maven maven Slika 3.3: Izsek iz grafa, prikazan s pomočjo Neo4j. Tukaj lahko definiramo še uteži. V grafu imamo tri vrste uteži: uteži na vozliščih, absolutne uteži na relacijah ter relativne uteži na relacijah. Uteži na vozliščih so v obliki naravnega števila in predstavljajo število vprašanj, v katerih se posamezna značka pojavi. Absolutne uteži na relacijah so prikazane na sliki 3.3 (število na povezavi med vozliščema) in predstavljajo število vprašanj, v katerih se skupaj pojavita obe povezani znački. Absolutna utež je torej enaka ne glede na usmerjenost povezave. Tretja skupina so relativne uteži na relacijah. Vsaka relacija vsebuje dve relativni uteži v smeri od prve značke do druge in obratno. To pomeni, da sedaj operiramo z usmerjenim grafom, v katerem je utež na relaciji od vozlišča a do vozlišča b definirana po enačbi 3.3. Relativne uteži na relacijah so zmeraj večje od 0 in manjše ali enake 1, saj število skupnih pojavitev dveh značk (absolutna utež relacije) ne more preseči število pojavitev ene od značk. V tako definiranem usmerjenem grafu nam uteži na relacijah povedo, v koliko odstotkih vprašanj se značka na začetku relacije pojavi skupaj z značko na koncu. 40

50 relativna utež a b= absolutna utež a b utež a (3.3) Analizirali smo povezane komponente v grafu. Povezana komponenta neusmerjenega grafa je njegov podgraf, v katerem obstaja pot med vsemi pari vozlišč, hkrati pa ne obstaja nobena povezava do drugih vozlišč iz osnovnega grafa. V našem grafu smo našli 26 povezanih komponent, pri čemer je ena komponenta ogromna, saj zajema kar oz. 99,5% vseh vozlišč. Poleg te ostane še 20 komponent z 2 vozliščema, 4 komponente s 3 vozlišči ter 1 komponenta s 4 vozlišči. Te manjše komponente pri naših priporočilih sicer ne igrajo pomembne vloge, vendar smo jih vseeno pustili v podatkovni bazi. Opazimo lahko, da ne obstaja nobeno vozlišče brez povezav, saj smo le-te izločili pri gradnji baze. Za algoritme na osnovi grafa je ključnega pomena obstoj prej omenjene največje komponente, saj lahko znotraj nje dosežejo in predlagajo veliko večino vozlišč. S pomočjo programa Pegasus [37] smo analizirali stopnjo vozlišč v grafu. Stopnja vozlišča nam pove število povezav, ki jih ima to vozlišče z drugimi vozlišči. Iz slike 3.4 je razvidno, da ima okoli vozlišč le eno samo povezavo na drugo vozlišče. Število vozlišč z enako stopnjo nato eksponentno pada približno do stopnje 100, tako da približno sledijo Zipfovem zakonu [38]. Tukaj lahko omenimo, da veliko grafov, ki vsebujejo podatke iz realnega sveta, sledi podobni distribuciji [39]. Slika 3.4: Grafično prikazana distribucija stopenj vozlišč v logaritemskem merilu. 41

51 S pomočjo programa Gephi [40] smo graf tudi izrisali. Najprej smo določili postavitev posameznih vozlišč s pomočjo algoritma ForceAtlas2, nato smo zaradi lepšega prikaza skrili povezave, ki potekajo med vozlišči različnih particij (za prikaz smo izbrali graf, particioniran na 10 delov), ostale relacije pa smo obarvali glede na particijo, v kateri se nahajajo. Nastal je grafični prikaz na sliki 3.5. Iz slike lahko razberemo, kje se nahajajo pomembna vozlišča z veliko povezavami, kakor tudi položaj vozlišč, ki spadajo v isto particijo. Če to sliko povežemo s sliko 3.4, lahko potrdimo našo ugotovitev, da ima manjše število vozlišč zelo visoko stopnjo, medtem ko se velika večina vozlišč povezuje le z majhnim številom drugih vozlišč. Slika 3.5: Grafični prikaz grafa. Barve predstavljajo posamezne particije. 42

IP PACKET QUEUING DISCIPLINES AS BASIC PART OF QOS ASSURANCE WITHIN THE NETWORK

IP PACKET QUEUING DISCIPLINES AS BASIC PART OF QOS ASSURANCE WITHIN THE NETWORK UDK621.3:(53+54+621 +66), ISSN0352-9045 Informacije MIDEM 39(2009)2, Ljubljana IP PACKET QUEUING DISCIPLINES AS BASIC PART OF QOS ASSURANCE WITHIN THE NETWORK Sasa Klampfer, Joze Mohorko, Zarko Cucej University

More information

Delavnica za konfiguriranje dostopovnih točk WEB konfiguracija LANCOM L-54

Delavnica za konfiguriranje dostopovnih točk WEB konfiguracija LANCOM L-54 Delavnica za konfiguriranje dostopovnih točk WEB konfiguracija LANCOM L-54 Boštjan Lemut Prva povezava na L-54 s povezovalnim kablom povežemo mrežna vmesnika na računalniku in L-54 v brskalniku vpišemo

More information

» Nakup in vzdrževanje Oracle programske opreme «Tehnične specifikacije

» Nakup in vzdrževanje Oracle programske opreme «Tehnične specifikacije Obrazec P-5 Specifikacije 30K250316» Nakup in vzdrževanje Oracle programske opreme «Tehnične specifikacije KAZALO VSEBINE 1. Predmet javnega naročila...3 1.1. SKLOP-1: STORITEV VZDRŽEVANJA ORACLE LICENČNE

More information

Vodnik skozi Google Analytics Beta verzija 1. del. prehod s stare kode (urchin.js), k novi kodi za sledenje (ga.js)

Vodnik skozi Google Analytics Beta verzija 1. del. prehod s stare kode (urchin.js), k novi kodi za sledenje (ga.js) Vodnik skozi Google Analytics Beta verzija 1. del prehod s stare kode (urchin.js), k novi kodi za sledenje (ga.js) Ta vodnik je povzetek Googe vodiča ' Tracking Code Migration Guide Switching from urchin.js

More information

Delavnica za konfiguriranje dostopovnih točk Konfiguracija LANCOM L-54 z uporabo orodja LANConfig

Delavnica za konfiguriranje dostopovnih točk Konfiguracija LANCOM L-54 z uporabo orodja LANConfig Delavnica za konfiguriranje dostopovnih točk Konfiguracija LANCOM L-54 z uporabo orodja LANConfig Boštjan Lemut Prva povezava na L-54 s povezovalnim kablom povežemo mrežna vmesnika na računalniku in L-54

More information

Sistemske zahteve za SAOP

Sistemske zahteve za SAOP Sistemske zahteve za SAOP Samostojna delovna postaja višji). icenter je ERP sistem, ki zagotavlja popolno kontrolo nad vsemi poslovnimi procesi v podjetju. V tej postavitvi je SAOP icenter nameščen na

More information

RAZLOG ZA IZVAJANJE PROGRAMA POPRBAZA

RAZLOG ZA IZVAJANJE PROGRAMA POPRBAZA RAZLOG ZA IZVAJANJE PROGRAMA POPRBAZA POPRBAZA je namenjen večji reorganizaciji podatkov v računalnikovem spominu. Reorganizacijo narekujejo bodisi zakonske spremembe, bodisi novosti v programu. Zato je

More information

Calculation of volume with the use of NTF method. Izračun volumnov z uporabo NTF metode

Calculation of volume with the use of NTF method. Izračun volumnov z uporabo NTF metode RMZ - Materials and Geoenvironment, Vol. 53, No. 2, pp. 221-227, 2006 221 Calculation of volume with the use of NTF method Izračun volumnov z uporabo NTF metode Milivoj Vulić 1, Anes Durgutović 2 1 Faculty

More information

How we calculate volume with the use of NTF method. Kako izračunamo volumen z uporabo metode NTF

How we calculate volume with the use of NTF method. Kako izračunamo volumen z uporabo metode NTF RMZ Materials and Geoenvironment, Vol. 55, No. 1, pp. 127-134, 2008 127 How we calculate volume with the use of NTF method Kako izračunamo volumen z uporabo metode NTF An e s Du r g u t o v i ć 1, Mi l

More information

Fakulteta za elektrotehniko, računalništvo in informatiko Inštitut za avtomatiko Laboratorij za obdelavo signalov in daljinska vodenja

Fakulteta za elektrotehniko, računalništvo in informatiko Inštitut za avtomatiko Laboratorij za obdelavo signalov in daljinska vodenja Fakulteta za elektrotehniko, računalništvo in informatiko Inštitut za avtomatiko Laboratorij za obdelavo signalov in daljinska vodenja Navodila za vaje pri predmetu Internetne tehnologije VAJA 2 Dušan

More information

Navodila za interaktivne naloge Bober

Navodila za interaktivne naloge Bober Avtorji dokumenta: Dean Gostiša , Lovro Podgoršek Verzija dokumentacije: 1.1 Datum in kraj: 24. 7. 2013, Ljubljana Navodila za interaktivne naloge Bober Uvod 1.

More information

Session:E07 GALIO - DB2 index advisor, how we implemented it and what we get from self-made expert tool

Session:E07 GALIO - DB2 index advisor, how we implemented it and what we get from self-made expert tool Session:E07 GALIO - DB2 index advisor, how we implemented it and Viktor Kovačević, MSc Hermes Softlab 6th October 2009 14:15 (60') Platform: UDB / LUW OUTLINE Application & Database tuning Self made index

More information

formati slike in branje slike pomen in nekaj primerov EM spekter aplikacije v posameznih delih spektra o matriki slike

formati slike in branje slike pomen in nekaj primerov EM spekter aplikacije v posameznih delih spektra o matriki slike Strojni vid pri tehnoloških meritvah formati slike in branje slike pomen in nekaj primerov EM spekter aplikacije v posameznih delih spektra o matriki slike formati slike in branje slike slika je običajno

More information

Prirejanje in preverjanje tipov

Prirejanje in preverjanje tipov Uvod v C# Drugi del Dedovanje Sintaksa Prirejanje in preverjanje tipov Kaste preverjenih tipov Prekrivanje metod Dinamično povezovanje (poenostavljeno) Skrivanje Dinamično povezovanje (s skrivanjem) Fragile

More information

Hitra rast hranjenih podatkov

Hitra rast hranjenih podatkov Tomaž Borštnar - član uredništva računalniške revije Monitor od začetka (oktober 1991; ne-pc okolja (Unix, etc) - sodelavec YUNAC in ARNES od začetka - postavil in upravljal večino strežnikov na SiOL -

More information

UDF for volume calculation with the use of NTF method. Lastne Excel funkcije za izračun prostornin po NTF metodi

UDF for volume calculation with the use of NTF method. Lastne Excel funkcije za izračun prostornin po NTF metodi RMZ Materials and Geoenvironment, Vol. 54, No. 3, pp.419-425, 2007 419 UDF for volume calculation with the use of NTF method Lastne Excel funkcije za izračun prostornin po NTF metodi Mi l i v o j Vu l

More information

Uvod v svetovni splet

Uvod v svetovni splet Univerza v Ljubljani Fakulteta za gradbeništvo in geodezijo Uvod v svetovni splet Računalništvo in informatika, GR-UNI, GR-VSŠ Tehnična dokumentacija in informatika, VKI-UNI št. leto 2007/08, 1. semester

More information

Q: Do You made a backup before upgrade? A: Only cowards make backups!

Q: Do You made a backup before upgrade? A: Only cowards make backups! Q: Do You made a backup before upgrade? You z malo - you A: Only cowards make backups! Real men don't use backups, they post their stuff on a public ftp server and let the rest of the world make copies.

More information

Transakcije v MariaDB/MySQL (transakcija A)

Transakcije v MariaDB/MySQL (transakcija A) Transakcije v MariaDB/MySQL (transakcija A) Pomožni elementi In [1]: # pyodbc import pyodbc try: cn1.close() except: pass # MariaDB/MySQL conn = "DRIVER={MySQL ODBC 5.3 Unicode Driver};SERVER=localhost;DATABASE=sandbox;UID=tu

More information

Družina IEEE802 Poddružina IEEE802.1 Priključitev v omrežje IEEE802.1x

Družina IEEE802 Poddružina IEEE802.1 Priključitev v omrežje IEEE802.1x 1 Družina IEEE802 Poddružina IEEE802.1 Priključitev v omrežje IEEE802.1x 2 družina standardov, ki opisujejo delovanje lokalnih (LAN) in mestnih (MAN) omrežij delo opravljano v delovnih skupinah več na

More information

SPLETNE SESTAVLJANKE IN POSLOVNI PORTALI

SPLETNE SESTAVLJANKE IN POSLOVNI PORTALI UNIVERZA V MARIBORU FAKULTETA ZA ELEKTROTEHNIKO, RAČUNALNIŠTVO IN INFORMATIKO Miha Pavlinek SPLETNE SESTAVLJANKE IN POSLOVNI PORTALI Diplomska naloga Maribor, marec 2008 I FAKULTETA ZA ELEKTROTEHNIKO,

More information

Specification and Implementation of a Light-Weight Internet Content Delivery Platform

Specification and Implementation of a Light-Weight Internet Content Delivery Platform University of Ljubljana Faculty of Computer and Information Science Marko Čeferin Specification and Implementation of a Light-Weight Internet Content Delivery Platform DIPLOMA THESIS First cycle professional

More information

Razvoj napredne spletne trgovine z upoštevanjem zgodovine nakupov

Razvoj napredne spletne trgovine z upoštevanjem zgodovine nakupov UNIVERZA V LJUBLJANI FAKULTETA ZA RAČUNALNIŠTVO IN INFORMATIKO Slobodan Jovanović Razvoj napredne spletne trgovine z upoštevanjem zgodovine nakupov DIPLOMSKO DELO VISOKOŠOLSKI STROKOVNI ŠTUDIJSKI PROGRAM

More information

UPORABA METOD STROJNEGA UČENJA ZA UGOTAVLJANJE SPOLA UPORABNIKOV TWITTERJA NA PODLAGI VSEBINE NJIHOVIH TVITOV

UPORABA METOD STROJNEGA UČENJA ZA UGOTAVLJANJE SPOLA UPORABNIKOV TWITTERJA NA PODLAGI VSEBINE NJIHOVIH TVITOV 2017 ZAKLJUČNA NALOGA ŠKORJANC UNIVERZA NA PRIMORSKEM FAKULTETA ZA MATEMATIKO, NARAVOSLOVJE IN INFORMACIJSKE TEHNOLOGIJE ZAKLJUČNA NALOGA UPORABA METOD STROJNEGA UČENJA ZA UGOTAVLJANJE SPOLA UPORABNIKOV

More information

ABBYY rešitve za prepoznavo in klasifikacijo dokumentov

ABBYY rešitve za prepoznavo in klasifikacijo dokumentov ABBYY rešitve za prepoznavo in klasifikacijo dokumentov preabbyy FlexiCapture 9.0. Overview. 1 doc: 10977 Lokalna prisotnost ABBYY: Moscow, Russia; Munich, Germany; Bracknell, UK; Kiev, Ukraine; Milpitas,

More information

Razvoj spletne trgovine z vključitvijo naprednih storitev

Razvoj spletne trgovine z vključitvijo naprednih storitev UNIVERZA V LJUBLJANI FAKULTETA ZA RAČUNALNIŠTVO IN INFORMATIKO Papež Lovro Razvoj spletne trgovine z vključitvijo naprednih storitev DIPLOMSKO DELO VISOKOŠOLSKI STROKOVNI ŠTUDIJSKI PROGRAM PRVE STOPNJE

More information

Spletni iskalnik Google in optimizacija spletnih strani

Spletni iskalnik Google in optimizacija spletnih strani UNIVERZA V LJUBLJANI FAKULTETA ZA DRUŽBENE VEDE Slaven Petrović Spletni iskalnik Google in optimizacija spletnih strani Diplomsko delo Ljubljana, 2010 UNIVERZA V LJUBLJANI FAKULTETA ZA DRUŽBENE VEDE Slaven

More information

Organizacija računalnikov (OR) UNI-RI, 3.l. RS Vaje. doc.dr. Mira Trebar

Organizacija računalnikov (OR) UNI-RI, 3.l. RS Vaje. doc.dr. Mira Trebar Organizacija računalnikov (OR) UNI-RI, 3.l. RS Vaje doc.dr. Mira Trebar 2 Vaja 1 (11.10.2010) Vaje so obvezne (delo v laboratoriju + doma) S1: Logisim MIPS procesor eno-cikelna izvedba ( logisim ) MIPS

More information

Vzpostavitev spletnega vmesnika za prikaz tenziomiografskih meritev

Vzpostavitev spletnega vmesnika za prikaz tenziomiografskih meritev UNIVERZA V LJUBLJANI FAKULTETA ZA RAČUNALNIŠTVO IN INFORMATIKO Nejc Poljanšek Vzpostavitev spletnega vmesnika za prikaz tenziomiografskih meritev DIPLOMSKO DELO VISOKOŠOLSKI STROKOVNI ŠTUDIJSKI PROGRAM

More information

Twitter Bootstrap in razvoj spletnega repozitorija za Cacti

Twitter Bootstrap in razvoj spletnega repozitorija za Cacti Univerza v Ljubljani Fakulteta za računalništvo in informatiko Fakulteta za matematiko in fiziko Nejc Župec Twitter Bootstrap in razvoj spletnega repozitorija za Cacti DIPLOMSKO DELO UNIVERZITETNI ŠTUDIJSKI

More information

Programiranje dreves

Programiranje dreves Zavod sv. Stanislava Škofijska klasična gimnazija Programiranje dreves Maturitetna seminarska naloga iz informatike Kandidat: Tomc Matej Mentor: Medvešek Helena Ljubljana Šentvid, šolsko leto 2014/2015

More information

sodobne poslovnoinformacijske rešitve Birokrat Kratka navodila za namestitev demo verzije programa Birokrat

sodobne poslovnoinformacijske rešitve   Birokrat Kratka navodila za namestitev demo verzije programa Birokrat sodobne poslovnoinformacijske rešitve www.andersen.si Birokrat Kratka navodila za namestitev demo verzije programa Birokrat Kratka navodila za namestitev demo verzije programa Birokrat Pošiljamo vam demo

More information

TABELA IZOTOPOV. Chart of the Nuclides. Jedrska tehnika in energetika. Seminar pri predmetu. Nuclides and Isotopes, 16 th edition

TABELA IZOTOPOV. Chart of the Nuclides. Jedrska tehnika in energetika. Seminar pri predmetu. Nuclides and Isotopes, 16 th edition TABELA IZOTOPOV Chart of the Nuclides Nuclides and Isotopes, 16 th edition Seminar pri predmetu Jedrska tehnika in energetika Profesor: dr. Iztok Tiselj Avtor: Miro Urbanč November 2011 Periodni sistem

More information

APLIKACIJE ZA SOCIALNA

APLIKACIJE ZA SOCIALNA UNIVERZA V LJUBLJANI FAKULTETA ZA RAČUNALNIŠTVO IN INFORMATIKO Boštjan Lotrič APLIKACIJE ZA SOCIALNA OMREŽJA DIPLOMSKO DELO NA UNIVERZITETNEM ŠTUDIJU Mentor: doc. dr. Zoran Bosnić Ljubljana, 2011 Rezultati

More information

SPLETNI ISKALNIK KOT TRŽENJSKO ORODJE

SPLETNI ISKALNIK KOT TRŽENJSKO ORODJE UNIVERZA V LJUBLJANI FAKULTETA ZA DRUŽBENE VEDE Mojca Maležič SPLETNI ISKALNIK KOT TRŽENJSKO ORODJE DIPLOMSKO DELO Ljubljana, 2006 UNIVERZA V LJUBLJANI FAKULTETA ZA DRUŽBENE VEDE Mojca Maležič Mentor:

More information

Analiza slovenskih uporabnikov družbenega omrežja Twitter

Analiza slovenskih uporabnikov družbenega omrežja Twitter UNIVERZA V LJUBLJANI FAKULTETA ZA DRUŽBENE VEDE Borut Penko Analiza slovenskih uporabnikov družbenega omrežja Twitter Diplomsko delo Ljubljana, 2014 UNIVERZA V LJUBLJANI FAKULTETA ZA DRUŽBENE VEDE Borut

More information

PODATKOVNE BAZE NOSQL

PODATKOVNE BAZE NOSQL PODATKOVNE BAZE NOSQL Aljaž Zrnec, Dejan Lavbič, Lovro Šubelj, Slavko Žitnik, Aleš Kumer, Marko Bajec Univerza v Ljubljani, Fakulteta za računalništvo in informatiko, Laboratorij za podatkovne tehnologije,

More information

Razširljiv nadzor velikih oblačnih sistemov

Razširljiv nadzor velikih oblačnih sistemov Univerza v Ljubljani Fakulteta za računalništvo in informatiko Nejc Saje Razširljiv nadzor velikih oblačnih sistemov MAGISTRSKO DELO ŠTUDIJSKI PROGRAM DRUGE STOPNJE RAČUNALNIŠTVO IN INFORMATIKA Mentor:

More information

Informacijski sistemi 2. faza Sistemska analiza. Franci Tajnik univ.dipl.ing.fizike, CISA, CISM

Informacijski sistemi 2. faza Sistemska analiza. Franci Tajnik univ.dipl.ing.fizike, CISA, CISM Informacijski sistemi 2. faza Sistemska analiza Franci Tajnik univ.dipl.ing.fizike, CISA, CISM 2. faza Sistemska analiza 2. faza Sistemska analiza veščine sistemske analize analitične medosebne ( nekonfliktne

More information

Razvoj jezika za iskanje, povezovanje in predstavitev podatkov

Razvoj jezika za iskanje, povezovanje in predstavitev podatkov UNIVERZA V LJUBLJANI FAKULTETA ZA RAČUNALNIŠTVO IN INFORMATIKO Ernest Štukelj Razvoj jezika za iskanje, povezovanje in predstavitev podatkov DIPLOMSKO DELO NA UNIVERZITETNEM ŠTUDIJU SMER PROGRAMSKA OPREMA

More information

E R S Š G L J U B L J A N A Š O L S K O L E T O

E R S Š G L J U B L J A N A Š O L S K O L E T O Datotečni sistem E R S Š G L J U B L J A N A Š O L S K O L E T O 2 0 1 0 / 1 1 Vsebina Programska oprema Sistemska programska oprema Operacijski sistem Lupina (shell) Datotečni sistem Programska oprema

More information

Oddaljen dostop do namiznega računalnika

Oddaljen dostop do namiznega računalnika UNIVERZA V LJUBLJANI FAKULTETA ZA RAČUNALNIŠTVO IN INFORMATIKO Siniša Grubor Oddaljen dostop do namiznega računalnika DIPLOMSKO DELO UNIVERZITETNI ŠTUDIJSKI PROGRAM PRVE STOPNJE RAČUNALNIŠTVO IN INFORMATIKA

More information

Robotovo pojasnjevanje svojih

Robotovo pojasnjevanje svojih Univerza v Ljubljani Fakulteta za računalništvo in informatiko Martin Cvetkov Robotovo pojasnjevanje svojih odločitev MAGISTRSKO DELO ŠTUDIJSKI PROGRAM DRUGE STOPNJE RAČUNALNIŠTVO IN INFORMATIKA Ljubljana,

More information

Analiza in primerjava spletnih sistemov za upravljanje z vsebinami

Analiza in primerjava spletnih sistemov za upravljanje z vsebinami Univerza v Ljubljani Fakulteta za računalništvo in informatiko Žiga Železnik Analiza in primerjava spletnih sistemov za upravljanje z vsebinami DIPLOMSKO DELO VISOKOŠOLSKI STROKOVNI ŠTUDIJSKI PROGRAM PRVE

More information

Maribor, september 2011

Maribor, september 2011 I Diplomsko delo univerzitetnega študijskega programa DOLOČANJE UPORABNIŠKEGA PROFILA Z ANALIZO KLIKOV Študent: Študijski program: Smer: Mentor(ica): Diana Kolar UN ŠP Računalništvo in informacijske tehnologije

More information

Državni izpitni center SPOMLADANSKI IZPITNI ROK *M * NAVODILA ZA OCENJEVANJE. Četrtek, 2. junij 2016 SPLOŠNA MATURA

Državni izpitni center SPOMLADANSKI IZPITNI ROK *M * NAVODILA ZA OCENJEVANJE. Četrtek, 2. junij 2016 SPLOŠNA MATURA Državni izpitni center *M16178113* SPOMLADANSKI IZPITNI ROK NAVODILA ZA OCENJEVANJE Četrtek, 2. junij 2016 SPLOŠNA MATURA RIC 2016 M161-781-1-3 2 IZPITNA POLA 1 1 1 2 1 3 3 4 1 5 3 6 2 7 1 8 1 9 1 10 3

More information

Optimization methods for solving. transportation problems on networks

Optimization methods for solving. transportation problems on networks UNIVERSITY OF MARIBOR FACULTY OF NATURAL SCIENCES AND MATHEMATICS DOCTORAL DISSERTATION Optimization methods for solving transportation problems on networks May, 011 Katja Prnaver UNIVERSITY OF MARIBOR

More information

DB2 podatkovna baza v praksi

DB2 podatkovna baza v praksi DB2 podatkovna baza v praksi Aljoša Trivan, Mikropis holding d.o.o. aljosa.trivan@mikropis.si 2007 IBM Corporation Agenda Mikropis Splošno Fleksibilnost Vzdrževanje Backup SQL objekti in SQL stavki Novosti

More information

OSNOVE UMETNE INTELIGENCE. neinformirani preiskovalni algoritmi informirani preiskovalni algoritmi

OSNOVE UMETNE INTELIGENCE. neinformirani preiskovalni algoritmi informirani preiskovalni algoritmi OSNOVE UMETNE INTELIGENCE neinformirani preiskovalni algoritmi informirani preiskovalni algoritmi Preiskovalni algoritmi neinformirani: razpolagajo samo z definicijo problema iskanje v širino (angl. breadth-first

More information

TRŽENJE S POMOČJO SPLETNIH ISKALNIKOV

TRŽENJE S POMOČJO SPLETNIH ISKALNIKOV UNIVERZA V LJUBLJANI EKONOMSKA FAKULTETA MAGISTRSKO DELO TRŽENJE S POMOČJO SPLETNIH ISKALNIKOV Ljubljana, september 2006 ROBERT ROLIH IZJAVA Študent Robert Rolih izjavljam, da sem avtor tega magistrskega

More information

Ogrodje za razvoj mikrostoritev v Javi in njihovo skaliranje v oblaku

Ogrodje za razvoj mikrostoritev v Javi in njihovo skaliranje v oblaku Univerza v Ljubljani Fakulteta za računalništvo in informatiko Tilen Faganel Ogrodje za razvoj mikrostoritev v Javi in njihovo skaliranje v oblaku DIPLOMSKO DELO UNIVERZITETNI ŠTUDIJSKI PROGRAM RAČUNALNIŠTVO

More information

Navodila za uporabo izdelkov programske opreme Microsoft

Navodila za uporabo izdelkov programske opreme Microsoft Navodila za uporabo izdelkov programske opreme Microsoft Kazalo Navodila za konfiguracijo odjemalca za e-pošto Outlook Splošno 3 Nastavitev poštnega predala s protokolom MAPI v odjemalcu Outlook 2007 s

More information

ZBIRNI IZKAZI IZRAČUNA EBITDA ZA HOTELE SKUPINE UNION HOTELI

ZBIRNI IZKAZI IZRAČUNA EBITDA ZA HOTELE SKUPINE UNION HOTELI ZBIRNI IZKAZI IZRAČUNA EBITDA ZA HOTELE SKUPINE UNION HOTELI v obdobju 2009 2014 in 1.1. do 30.9.2015, ocenjeni in prilagojeni na USALI metodologijo poročanja UNION HOTELI d.d. www.union-hotels.eu Glavni

More information

POVEČEVANJE E-VKLJUČENOSTI Z UPORABO SMERNIC WCAG 2.0

POVEČEVANJE E-VKLJUČENOSTI Z UPORABO SMERNIC WCAG 2.0 Ana Dračina POVEČEVANJE E-VKLJUČENOSTI Z UPORABO SMERNIC WCAG 2.0 Diplomsko delo Maribor, september 2012 POVEČEVANJE E-VKLJUČENOSTI Z UPORABO SMERNIC WCAG 2.0 Diplomsko delo Študentka: Študijski program:

More information

Matjaž Verbole. Algoritem D*

Matjaž Verbole. Algoritem D* UNIVERZA V LJUBLJANI FAKULTETA ZA RAČUNALNIŠTVO IN INFORMATIKO Matjaž Verbole Algoritem D* DIPLOMSKO DELO NA UNIVERZITETNEM ŠTUDIJU Mentor: prof. dr. Borut Robič Ljubljana, 2012 Rezultati diplomskega dela

More information

Evaluating Web Content Extraction Algorithms

Evaluating Web Content Extraction Algorithms UNIVERSITY OF LJUBLJANA FACULTY OF COMPUTER AND INFORMATION SCIENCE Tomaž Kovačič Evaluating Web Content Extraction Algorithms DIPLOMA THESIS AT THE UNIVERSITY STUDY PROGRAM Mentor: doc. dr. Zoran Bosnić

More information

Integracija povpraševanj nerelacijskih podatkovnih baz in doseganje visoke razpoložljivosti v računalniškem oblaku

Integracija povpraševanj nerelacijskih podatkovnih baz in doseganje visoke razpoložljivosti v računalniškem oblaku UNIVERZA V LJUBLJANI FAKULTETA ZA RAČUNALNIŠTVO IN INFORMATIKO Matej Rojko Integracija povpraševanj nerelacijskih podatkovnih baz in doseganje visoke razpoložljivosti v računalniškem oblaku MAGISTRSKO

More information

Arhitektura oblaka Upravljanje v oblaku Delovanje v oblaku Arhitekturni okvir računalništva v oblaku

Arhitektura oblaka Upravljanje v oblaku Delovanje v oblaku Arhitekturni okvir računalništva v oblaku 1 Predstavitev 2 Področja delovanja 3 GRC knjižnica 4 Primeri CAI in CCM Aplikacijska varnost 5 CCSK 6 Zaključek Globalna, neprofitna organizacija 23,000+ članov, 100 korporativnih članov, 50 odsekov Gradimo

More information

Univerza v Ljubljani Fakulteta za računalništvo in informatiko. Mitja Petan Pospeševanje prodaje preko spletne trgovine

Univerza v Ljubljani Fakulteta za računalništvo in informatiko. Mitja Petan Pospeševanje prodaje preko spletne trgovine Univerza v Ljubljani Fakulteta za računalništvo in informatiko Mitja Petan Pospeševanje prodaje preko spletne trgovine DIPLOMSKO DELO VISOKOŠOLSKI STROKOVNI ŠTUDIJSKI PROGRAM PRVE STOPNJE RAČUNALNIŠTVO

More information

Zasnova spletnega orodja za prijavo na govorilne ure v sistemu Plone

Zasnova spletnega orodja za prijavo na govorilne ure v sistemu Plone UNIVERZA V LJUBLJANI PEDAGOŠKA FAKULTETA Žiga Štamcar Zasnova spletnega orodja za prijavo na govorilne ure v sistemu Plone Diplomsko delo Ljubljana, 2016 UNIVERZA V LJUBLJANI Pedagoška fakulteta Univerzitetni

More information

ERCOlight LUM je energetsko visoko učinkovita svetilka za visoke prostore z možnostjo številnih različnih modifikacij.

ERCOlight LUM je energetsko visoko učinkovita svetilka za visoke prostore z možnostjo številnih različnih modifikacij. Object Installation Project number Date 1 Luminaire data 1.5 Somar International Ltd, Eluma ME-OP4/4L/50 P5 (ME-OP4/4L/50) 1.5.1 Data sheet Ena svetilka, pet različnih možnosti : Eluma Lighting : Comparison

More information

UPORABA SILVERLIGHT 4 ZA PODPORO PRI ELEKTRONSKEM PREVERJANJU ZNANJA

UPORABA SILVERLIGHT 4 ZA PODPORO PRI ELEKTRONSKEM PREVERJANJU ZNANJA Matjaž Reberc UPORABA SILVERLIGHT 4 ZA PODPORO PRI ELEKTRONSKEM PREVERJANJU ZNANJA Diplomsko delo Maribor, junij 2011 I Diplomsko visokošolskega strokovnega študijskega programa UPORABA SILVERLIGHT 4

More information

On Cost Function Properties In Analog Circuit Optimization. Vpogled v značilnosti kriterijskih funkcij optimizacijskih algoritmov

On Cost Function Properties In Analog Circuit Optimization. Vpogled v značilnosti kriterijskih funkcij optimizacijskih algoritmov On Cost Function Properties In Analog Circuit Optimization Andrej Nussdorfer, Árpad Bűrmen, Janez Puhan and Tadej Tuma University of Ljubljana, Faculty of electrical engineering, Ljubljana, Slovenija Key

More information

Postavitev in upravljanje zasebnega oblaka z uporabo Microsoft System Center 2012 R2 in Windows Azure Pack za ponudnike storitev

Postavitev in upravljanje zasebnega oblaka z uporabo Microsoft System Center 2012 R2 in Windows Azure Pack za ponudnike storitev UNIVERZA V LJUBLJANI FAKULTETA ZA RAČUNALNIŠTVO IN INFORMATIKO Gašper Govek Postavitev in upravljanje zasebnega oblaka z uporabo Microsoft System Center 2012 R2 in Windows Azure Pack za ponudnike storitev

More information

Algoritmi in podatkovne strukture 2. Urejanje (sorting)

Algoritmi in podatkovne strukture 2. Urejanje (sorting) Algoritmi in podatkovne strukture 2 Urejanje (sorting) osnove, metode deli in vladaj, kopica Andrej Brodnik: Algoritmi in podatkovne strukture 2 / Urejanje (sorting) osnove, metode deli in vladaj, kopica

More information

Selitev aplikacije iz Oracle Forms v Oracle ADF (Application migration from Oracle Forms to Oracle ADF)

Selitev aplikacije iz Oracle Forms v Oracle ADF (Application migration from Oracle Forms to Oracle ADF) Univerza na Primorskem FAKULTETA ZA MATEMATIKO, NARAVOSLOVJE IN INFORMACIJSKE TEHNOLOGIJE ZAKLJUČNA NALOGA Selitev aplikacije iz Oracle Forms v Oracle ADF (Application migration from Oracle Forms to Oracle

More information

Primerjava uporabe SOAP in REST za potrebe povezave mobilnih naprav s spletnimi storitvami

Primerjava uporabe SOAP in REST za potrebe povezave mobilnih naprav s spletnimi storitvami Univerza v Ljubljani Fakulteta za računalništvo in informatiko Matjaž Rajnar Primerjava uporabe SOAP in REST za potrebe povezave mobilnih naprav s spletnimi storitvami DIPLOMSKO DELO NA UNIVERZITETNEM

More information

Metodologija migracije iz Exchange v Office 365

Metodologija migracije iz Exchange v Office 365 UNIVERZA V LJUBLJANI F Grega Lausegger Metodologija migracije iz Exchange v Office 365 DIPLOMSKO DELO PRVE Ljubljana, 2018 UNIVERZA V LJUBLJANI F Grega Lausegger Metodologija migracije iz Exchange v Office

More information

Delo z grafi v relacijskih in sodobnih nerelacijskih podatkovnih bazah

Delo z grafi v relacijskih in sodobnih nerelacijskih podatkovnih bazah Univerza v Ljubljani Fakulteta za računalništvo in informatiko Blaž Malej Delo z grafi v relacijskih in sodobnih nerelacijskih podatkovnih bazah DIPLOMSKO DELO VISOKOŠOLSKI STROKOVNI ŠTUDIJSKI PROGRAM

More information

SPLETNI ISKALNIKI KOT OGLAŠEVALSKO ORODJE

SPLETNI ISKALNIKI KOT OGLAŠEVALSKO ORODJE DEJAN ANTIĆ DIPLOMSKA NALOGA 2009 UNIVERZA NA PRIMORSKEM FAKULTETA ZA MANAGEMENT KOPER DIPLOMSKA NALOGA SPLETNI ISKALNIKI KOT OGLAŠEVALSKO ORODJE DEJAN ANTIĆ KOPER, 2009 UNIVERZA NA PRIMORSKEM FAKULTETA

More information

Statistika 2 z računalniško analizo podatkov

Statistika 2 z računalniško analizo podatkov Statistika 2 z računalniško analizo podatkov Risanje grafov 1 V Statistične analize v SPSS-ju V.5 Risanje grafov V.5.1 Oblikovanje grafov V.5.2 Grafična predstavitev frekvenčne porazdelitve: histogram,

More information

Lotus Quickr Najhitrejši način izmenjave poslovne vsebine

Lotus Quickr Najhitrejši način izmenjave poslovne vsebine Lotus Quickr Najhitrejši način izmenjave poslovne vsebine Zoran Povh, IT specialist zoran.povh@si.ibm.com 2007 IBM Corporation Vsebina Kaj je Lotus Quickr? Integracija z namiznimi programi Skupinski prostori

More information

Jernej Vidmar. Preslikava in obogatitev podatkov iz relacijskih podatkovnih baz v RDF obliko

Jernej Vidmar. Preslikava in obogatitev podatkov iz relacijskih podatkovnih baz v RDF obliko UNIVERZA V LJUBLJANI FAKULTETA ZA RAČUNALNIŠTVO IN INFORMATIKO Jernej Vidmar Preslikava in obogatitev podatkov iz relacijskih podatkovnih baz v RDF obliko DIPLOMSKO DELO UNIVERZITETNI ŠTUDIJSKI PROGRAM

More information

Open IT VARNO POVEZOVANJE SODOBNIH ODPRTIH SPLETNIH APLIKACIJ V OBLAKU TYPO3, MAGENTO, ALFRESCO

Open IT VARNO POVEZOVANJE SODOBNIH ODPRTIH SPLETNIH APLIKACIJ V OBLAKU TYPO3, MAGENTO, ALFRESCO Open IT VARNO POVEZOVANJE SODOBNIH ODPRTIH SPLETNIH APLIKACIJ V OBLAKU TYPO3, MAGENTO, ALFRESCO Uvod Informacijska varnost ena izmed glavnih tematik informacijske dobe. Čim bolj varne spletne aplikacije

More information

Trendi iskanja informacij preko digitalnih medijskih kanalov in učinek izbranih besed na odziv potrošnika

Trendi iskanja informacij preko digitalnih medijskih kanalov in učinek izbranih besed na odziv potrošnika UNIVERZA V LJUBLJANI FAKULTETA ZA RAČUNALNIŠTVO IN INFORMATIKO Emanuel Vidmar Trendi iskanja informacij preko digitalnih medijskih kanalov in učinek izbranih besed na odziv potrošnika DIPLOMSKO DELO VISOKOŠOLSKI

More information

Primož Hadalin IZDELAVA SPLETNEGA PORTALA POSLOVNE APLIKACIJE Z UPOŠTEVANJEM RAZLIK MED SPLETNIMI BRSKALNIKI

Primož Hadalin IZDELAVA SPLETNEGA PORTALA POSLOVNE APLIKACIJE Z UPOŠTEVANJEM RAZLIK MED SPLETNIMI BRSKALNIKI Univerza v Ljubljani Fakulteta za računalništvo in informatiko Primož Hadalin IZDELAVA SPLETNEGA PORTALA POSLOVNE APLIKACIJE Z UPOŠTEVANJEM RAZLIK MED SPLETNIMI BRSKALNIKI diplomska naloga na visokošolskem

More information

Uvod v evolucijsko računanje

Uvod v evolucijsko računanje Uvod v evolucijsko računanje Bogdan Filipič Odsek za inteligentne sisteme, Institut Jožef Stefan Jamova 39, 1000 Ljubljana bogdan.filipic@ijs.si Predavanje pri predmetih Umetna inteligenca 2 in Evolucijsko

More information

IZDELAVA PROGRAMSKEGA PAKETA ZA GRAFIČNI PRIKAZ POMENSKIH SLOVARJEV IN ONTOLOGIJ

IZDELAVA PROGRAMSKEGA PAKETA ZA GRAFIČNI PRIKAZ POMENSKIH SLOVARJEV IN ONTOLOGIJ Gregor Hren IZDELAVA PROGRAMSKEGA PAKETA ZA GRAFIČNI PRIKAZ POMENSKIH SLOVARJEV IN ONTOLOGIJ Diplomsko delo Maribor, september 2011 I Diplomsko delo univerzitetnega študijskega programa IZDELAVA PROGRAMSKEGA

More information

Kakovost storitve v paketnih omrežjih

Kakovost storitve v paketnih omrežjih Elektrotehniški vestnik 71(3): 103 108, 2004 Electrotechnical Review, Ljubljana, Slovenija Kakovost storitve v paketnih omrežjih Anton Kos, Robert Verlič, Sašo Tomažič Univerza v Ljubljani, Fakulteta za

More information

UČNI NAČRT PREDMETA / COURSE SYLLABUS (leto / year 2017/18) Spletno programiranje. Študijska smer Study field ECTS

UČNI NAČRT PREDMETA / COURSE SYLLABUS (leto / year 2017/18) Spletno programiranje. Študijska smer Study field ECTS Predmet: Course title: UČNI NAČRT PREDMETA / COURSE SYLLABUS (leto / year 2017/18) Spletno programiranje Web programming Študijski program in stopnja Study programme and level Interdisciplinarni univerzitetni

More information

Podatkovni model za celostno vodenje proizvodnje

Podatkovni model za celostno vodenje proizvodnje Podatkovni model za celostno vodenje proizvodnje Miha Glavan 1, Dejan Gradišar 1, Gašper Mušič 2 1 Institut Jožef Stefan, Jamova 39, Ljubljana 2 Univerza v Ljubljani, Fakulteta za elektrotehniko, Tržaška

More information

Domensko odvisni agent za avtomatsko generiranje ovojnic

Domensko odvisni agent za avtomatsko generiranje ovojnic Univerza v Ljubljani Fakulteta za računalništvo in informatiko Magistrsko delo Domensko odvisni agent za avtomatsko generiranje ovojnic Aleksander Pivk mentor: prof. dr. Ivan Bratko somentor: prof. dr.

More information

Generalization analysis of semantic segmentation with deep filter banks

Generalization analysis of semantic segmentation with deep filter banks University of Ljubljana Faculty of Computer and Information Science Marko Prelevikj Generalization analysis of semantic segmentation with deep filter banks BACHELOR S THESIS UNDERGRADUATE UNIVERSITY STUDY

More information

RAZVOJ ENOSTRANSKIH SPLETNIH APLIKACIJ S PORTALNO PLATFORMO LIFERAY

RAZVOJ ENOSTRANSKIH SPLETNIH APLIKACIJ S PORTALNO PLATFORMO LIFERAY FAKULTETA ZA ELEKTROTEHNIKO, RAČUNALNIŠTVO IN INFORMATIKO Borut Radi RAZVOJ ENOSTRANSKIH SPLETNIH APLIKACIJ S PORTALNO PLATFORMO LIFERAY Diplomsko delo Maribor, julij 2015 Fakulteta za elektrotehniko,

More information

Razširitve CMS z lastnimi moduli

Razširitve CMS z lastnimi moduli Univerza v Ljubljani Fakulteta za računalništvo in informatiko Matjaž Čepar Razširitve CMS z lastnimi moduli DIPLOMSKA NALOGA NA UNIVERZITETNEM ŠTUDIJU Mentor: doc. dr. Andrej Brodnik Ljubljana 2014 Rezultati

More information

Enterprise modelling with UML

Enterprise modelling with UML Elektrotehniški vestnik 68(2 3): 109 114, 2001 Electrotechnical Review, Ljubljana, Slovenija Enterprise modelling with UML Aljaž Zrnec, Marko Bajec, Marjan Krisper University of Ljubljana, Faculty of Computer

More information

An Adaptive-Parity Error-Resilient LZ'77 Compression Algorithm. Na napake odporen zgoščevalni algoritem LZ 77 s prilagodljivo pariteto

An Adaptive-Parity Error-Resilient LZ'77 Compression Algorithm. Na napake odporen zgoščevalni algoritem LZ 77 s prilagodljivo pariteto An Adaptive-Parity Error-Resilient LZ'77 Compression Algorithm Tomaž Korošec* and Sašo Tomažič University of Ljubljana, Faculty of Electrical Engineering, Ljubljana, Slovenia Journal of Microelectronics,

More information

Prometno načrtovanje xdsl

Prometno načrtovanje xdsl Prometno načrtovanje xdsl 1 Kazalo Prometno načrtovanje naročniške zanke Prometno načrtovanje MSAN Izbira agregacijskega modela Izbira opreme 2 Potrebe po pasovni širini Zahtevana pasovna širina na uporabnika

More information

Izboljšava proizvodnih procesov z modeliranjem in simulacijo inženirski pristop

Izboljšava proizvodnih procesov z modeliranjem in simulacijo inženirski pristop Izboljšava proizvodnih procesov z modeliranjem in simulacijo inženirski pristop Simon Štampar¹, Igor Škrjanc², Božidar Bratina³, Saša Sokolić¹ ¹Metronik d.o.o., Stegne 9a, 1000 Ljubljana ² Fakulteta za

More information

PREGLED MOBILNIH REŠITEV ZA IZOBRAŽEVANJE UPRAVLJANJA INFORMATIKE

PREGLED MOBILNIH REŠITEV ZA IZOBRAŽEVANJE UPRAVLJANJA INFORMATIKE Fakulteta za elektrotehniko, računalništvo in informatiko Smetanova ulica 17 2000 Maribor, Slovenija Matija Pildek PREGLED MOBILNIH REŠITEV ZA IZOBRAŽEVANJE UPRAVLJANJA INFORMATIKE Diplomsko delo Maribor,

More information

RAZVOJ ENOSTAVNE SPLETNE APLIKACIJE Z UPORABO FLEKSIBILNEGA OGRODJA NA ODPRTOKODNIH KNJIŢNICAH

RAZVOJ ENOSTAVNE SPLETNE APLIKACIJE Z UPORABO FLEKSIBILNEGA OGRODJA NA ODPRTOKODNIH KNJIŢNICAH UNIVERZA V LJUBLJANI FAKULTETA ZA RAČUNALNIŠTVO IN INFORMATIKO David Sedlar RAZVOJ ENOSTAVNE SPLETNE APLIKACIJE Z UPORABO FLEKSIBILNEGA OGRODJA NA ODPRTOKODNIH KNJIŢNICAH DIPLOMSKO DELO NA UNIVERZITETNEM

More information

Avtomatska izgradnja modela odvisnosti med komponentami IT

Avtomatska izgradnja modela odvisnosti med komponentami IT Univerza v Ljubljani Fakulteta za računalništvo in informatiko Mojca Komavec Avtomatska izgradnja modela odvisnosti med komponentami IT MAGISTRSKO DELO MAGISTRSKI PROGRAM DRUGE STOPNJE RAČUNALNIŠTVO IN

More information

Hibridizacija genetskega algoritma za reševanje problema vozliščnega pokritja

Hibridizacija genetskega algoritma za reševanje problema vozliščnega pokritja Univerza v Ljubljani Fakulteta za računalništvo in informatiko Klemen Randl Hibridizacija genetskega algoritma za reševanje problema vozliščnega pokritja DIPLOMSKO DELO VISOKOŠOLSKI STROKOVNI ŠTUDIJSKI

More information

Ljubljana,

Ljubljana, Ljubljana, 9. 4. 2018 Katalog znanj in vzorci nalog za izbirni izpit za vpis na magistrski študij Računalništvo in informatika 2018/2019 0 KATALOG ZNANJ ZA IZBIRNI IZPIT ZA VPIS NA MAGISTRSKI ŠTUDIJ RAČUNALNIŠTVO

More information

Lokacijske storitve na mobilnih napravah

Lokacijske storitve na mobilnih napravah UNIVERZA V LJUBLJANI FAKULTETA ZA RAČUNALNIŠTVO IN INFORMATIKO Aleš Rosina Lokacijske storitve na mobilnih napravah DIPLOMSKO DELO NA UNIVERZITETNEM ŠTUDIJU Mentor: doc. dr. Rok Rupnik Ljubljana, 2012

More information

New Media & Language Technologies Jozef Stefan International Postgraduate School January Speech apps. Jerneja Žganec Gros

New Media & Language Technologies Jozef Stefan International Postgraduate School January Speech apps. Jerneja Žganec Gros New Media & Language Technologies Jozef Stefan International Postgraduate School January 2005 Speech apps Jerneja Žganec Gros jerneja@alpineon.com THE VOICE WEB The voice web offers access to information

More information

Izdelava urejevalnika izvorne kode v oblaku z uporabo tehnologij HTML5

Izdelava urejevalnika izvorne kode v oblaku z uporabo tehnologij HTML5 Univerza v Ljubljani Fakulteta za računalništvo in informatiko Roman Gorišek Izdelava urejevalnika izvorne kode v oblaku z uporabo tehnologij HTML5 DIPLOMSKO DELO VISOKOŠOLSKI STROKOVNI ŠTUDIJSKI PROGRAM

More information

TEORIJA ODLOČANJA GRAFIČNE TABLICE

TEORIJA ODLOČANJA GRAFIČNE TABLICE TEORIJA ODLOČANJA GRAFIČNE TABLICE Mentor: Gašper Strniša, mag. org. informatik Kranj, September 2015 ZAHVALA Zahvaljujem se mentorju... Hvala g. Temu in temu iz podjetja Tega in tega za pomoč in nasvete

More information

Strukturirani poizvedovalni jezik SQL

Strukturirani poizvedovalni jezik SQL Računalništvo Strukturirani poizvedovalni jezik SQL Danijel Skočaj, Evelin Vatovec Krmac Univerza v Ljubljani Fakulteta za pomorstvo in promet Literatura: Evelin Vatovec Krmac, Računalništvo in informatika,

More information

SUBJECT CATEGORY-BASED ANALYSIS OF DESCRIPTORS OF SLOVENIAN PLANT SCIENCE DOCUMENTS IN THE AGRIS DATABASE IN THE PERIOD

SUBJECT CATEGORY-BASED ANALYSIS OF DESCRIPTORS OF SLOVENIAN PLANT SCIENCE DOCUMENTS IN THE AGRIS DATABASE IN THE PERIOD University of Ljubljana UDC:002.6.01/.08:63:014.3:05 Biotechnical Faculty "1993-1995"(497.12)(045)=20 Slovenian National AGRIS Centre Research paper Head: Tomaž Bartol, M.Sc. Raziskovalno delo SUBJECT

More information