• Rezultati Niso Bili Najdeni

Pregled, implementacija in testiranje razliˇcnih priporoˇcilnih sistemov za spletno trgovino

N/A
N/A
Protected

Academic year: 2022

Share "Pregled, implementacija in testiranje razliˇcnih priporoˇcilnih sistemov za spletno trgovino"

Copied!
54
0
0

Celotno besedilo

(1)

Univerza v Ljubljani

Fakulteta za raˇ cunalniˇ stvo in informatiko

Domen Dobnikar

Pregled, implementacija in testiranje razliˇ cnih priporoˇ cilnih sistemov za

spletno trgovino

DIPLOMSKO DELO

VISOKOˇSOLSKI STROKOVNI ˇSTUDIJSKI PROGRAM PRVE STOPNJE

RA ˇCUNALNIˇSTVO IN INFORMATIKA

Mentor : doc. dr. Aleˇs Smrdel

Ljubljana, 2022

(2)

Copyright. Rezultati diplomske naloge so intelektualna lastnina avtorja in Fakultete za raˇcunalniˇstvo in informatiko Univerze v Ljubljani. Za objavo in koriˇsˇcenje rezultatov diplomske naloge je potrebno pisno privoljenje avtorja, Fakultete za raˇcunalniˇstvo in informatiko ter mentorja.

Besedilo je oblikovano z urejevalnikom besedil LATEX.

(3)

Fakulteta za raˇcunalniˇstvo in informatiko izdaja naslednjo nalogo:

Tematika naloge:

Uporaba priporoˇcilnih sistemov se z razmahom spletne prodaje vedno bolj razˇsirja in predstavlja enega od naˇcinov izboljˇsanja uporabniˇske izkuˇsnje.

Zaradi tega je bilo razvitih veliko razliˇcnih priporoˇcilnih sistemov, ki upo- rabljajo razliˇcne pristope za izbiro izdelkov, ki bi bili morebiti uporabniku trgovine tudi vˇseˇc. Vaˇsa naloga je, da poskusite izbrati primerne tovrstne sisteme. V ta namen si v diplomski nalogi izberite nekaj popularnih pri- poroˇcilnih sistemov, jih preglejte, implementirajte v svojo spletno trgovino in njihovo delovanje testirajte. Testiranje opravite tudi z anketo, kjer naj nekaj nakljuˇcnih uporabnikov oceni delovanje implementiranih priporoˇcilnih sistemov.

(4)
(5)

Zahvaljujem se mentorju Aleˇsu Smrdelu, ki mi je nudil strokovno pomoˇc pri razvijanju in pisanju diplomske naloge. Posebna zahvala gre tudi druˇzini, ki me je ves ˇcas podpirala pri izobraˇzevanju.

(6)
(7)

Kazalo

Povzetek Abstract

1 Uvod 1

2 Pregled priporoˇcilnih sistemov za spletno trgovino 3

2.1 Nepersonalizirani sistemi . . . 3

2.2 Sodelovalno filtriranje . . . 6

2.3 Vsebinsko filtriranje . . . 9

2.4 Hibridni priporoˇcilni sistemi . . . 12

3 Implementacija priporoˇcilnih sistemov v spletno trgovino 15 3.1 Najbolj priljubljen . . . 15

3.2 Komplementarni izdelki . . . 16

3.3 Na podlagi uporabnika . . . 17

3.4 Temeljeˇc na izdelku . . . 18

3.5 Komplementarnost podobnih izdelkov . . . 20

3.6 Filtriranje temeljeˇce na uporabnik-izdelek . . . 21

4 Spletna trgovina in podatkovna baza 23 4.1 Spletna trgovina . . . 23

4.2 Podatkovna baza . . . 25

(8)

5 Testiranje, anketa in rezultati 29

5.1 Testiranje s podatki . . . 29

5.2 Testiranje brez podatkov . . . 30

5.3 Anketa . . . 30

5.4 Rezultati . . . 32

6 Sklepne ugotovitve 35 6.1 Nadgradnja raziskave . . . 36

Literatura 38

(9)

Seznam uporabljenih kratic

kratica angleˇsko slovensko

CSS Cascading Style Sheets kaskadne slogovne podloge HTML Hyper Text Markup Language jezik za oznaˇcevanje nadbese-

dila

(10)
(11)

Povzetek

Naslov: Pregled, implementacija in testiranje razliˇcnih priporoˇcilnih siste- mov za spletno trgovino

Avtor: Domen Dobnikar

V primeru aplikacij, ki se ukvarjajo s prodajo, ponudbo izdelkov ali pa kakˇsnimi drugaˇcnimi vsebinami, ˇzelimo uporabniku zagotoviti ˇcim boljˇso izkuˇsnjo. Eden izmed ˇze zelo dolgo prisotnih naˇcinov je z uporabo pri- poroˇcilnih sistemov, pri katerem uporabniku ponujamo predvsem tisto vse- bino, za katero predvidevamo, da bo za takega uporabnika zanimiva glede na informacije, ki jih imamo v zvezi z uporabnikom, in mu s tem prihranimo ˇcas iskanj, hkrati pa poveˇcamo moˇznost nakupa.

V diplomski nalogi je predstavljen pregled nekaj izbranih priporoˇcilnih sis- temov, opisan postopek izdelave in implementacije takih sistemov v spletno trgovino ter njihovo testiranje s strani razvijalca in nekaj nakjuˇcnih uporab- nikov. Priporoˇcilnih sistemov je veˇc vrst. Vsak sistem ima svoje prednosti in slabosti.

V okviru diplome sem jih raziskal in opisal kar se da natanˇco in poskuˇsal ugotoviti, kateri delujejo najbolje v primeru spletne trgovine. Implementi- rane sisteme sem testiral po dveh kriterijih: kvaliteta priporoˇcil in odzivnost sistema. Za najboljˇsa sta se izkazala sistem Najbolj priljubljen in sistem Komplementarni izdelki. Za razvoj spletne trgovine in implementacijo pri- poroˇcilnih sistemov sem uporabil programski jezik Python, spletni okvir za spletno programiranje Django, knjiˇznico za strojno uˇcenje Scikit-learn in pa knjiˇznico za matematiˇcne funkcije ter n-dimenzionalne tabele Numpy.

(12)

Kljuˇcne besede: spletna trgovina, priporoˇcilni sistemi, testiranje.

(13)

Abstract

Title: Exploration, implementation and testing of various recommendation systems for online shopping

Author: Domen Dobnikar

In case of applications, that are dealing with selling, offering products or some other content, we want to provide users with good user experience.

One of the long present ways, isby using a recommendation system, where we can recommend content, for which we think would be interesting to the user, based on the information we have regarding that user. With this, we can save the user time for searching, and at the same time improve possibility of purchase.

Diploma thesis presents an overview of some selected recommendation systems, the process of making and implementing such systems into online store and their testing by the developers and random users. There are several types of recommendation systems. Each has its pros and cons.

In the scope of the diploma I researched and described as exactly as pos- sible, which perform well in case of online store. I tested the implemented systems according to two criteria: recommendation quality and responsive- ness of the system. The best systems proved to beThe most popular system andComplementary products. To develop the online store and implement the recommendation system I used Python programming language, web frame- work for web programming Django, library for machine learning Scikit-learn and library for mathematical functions and n-dimensional tables Numpy.

(14)

Keywords: online store, recommendation systems, testing.

(15)

Poglavje 1 Uvod

Z vse veˇcjo uporabo spletnih trgovin in tudi vse veˇcjo konkurenco med po- nudniki na tem podroˇcju raste potreba po izboljˇsanju uporabniˇske izkuˇsnje, ˇse posebej, ˇce ˇzelimo izstopati od konkurence. Pristopov k izboljˇsanju je veˇc, v tej diplomski nalogi se bom osredotoˇcil na priporoˇcilne sisteme.

Priporoˇcilnih sistemov je veˇc vrst. V veˇcini jih loˇcimo glede na to, kakˇsne podatke in na kakˇsen naˇcin jih uporabljajo pri priporoˇcanju vsebine. V sploˇsnem poznamo ˇstiri glavne vrste:

• nepersonalizirani sistemi (angl. non-personalized recommenders),

• sodelovalno filtriranje (angl. collaborative filtering),

• vsebinsko filtriranje (angl. content-based filtering),

• hibridni priporoˇcilni sistemi (angl. hybrid recommenders).

Amazon, najveˇcje multinacionalno trgovsko podjetje, za svojo spletno trgo- vino uporablja priporoˇcilni sistem, ki spada pod sodelovalno filtriranje. Na zaˇcetku je podjetje uporabljalo sistem, ki je za izvrˇsevanje priporoˇcil upo- rabljal podobnost med uporabniki. Sistem na podlagi prejˇsnjih nakupov, poiˇsˇce podobnega uporabnika in trenutnemu uporabniku priporoˇca izdelke, glede na zgodovino nakupov podobnega uporabnika. ˇCez ˇcas, so ugotovili, da se iskanje podobnosti med izdelki bolj obrestuje. Danes Amazon uporablja

1

(16)

2 Domen Dobnikar sistem, ki iˇsˇce podobnost med izdelki, za primerjavo pa uporablja izdelke, ki jih je uporabnik ˇze kupil [5].

V okviru diplomske naloge je eden izmed ciljev implementacija spletne trgovine. Ta nam bo sluˇzila kot okolje za testiranje in implementacijo pri- poroˇcilnih sistemov. V 2. poglavju sem bolj natanˇcno opisal vsakega posebej, kako sem jih za svojo spletno trgovino priredil, kako delujejo in pa izpostavil njihove prednosti ter slabosti.

Pri implementaciji priporoˇcilnega sistema je zelo pomembna priprava po- datkov, ki jih priporoˇcilni sistemi nato uporabljajo za procesiranje in kot podlago za priporoˇcanje nove vsebine. Spletna trgovina vsebuje veliko po- datkov o izdelkih in kupcih, ki niso v obliki ˇstevil. Primer takega podatka bi bil ime kategorije, v katero spada izdelek. Moˇc oziroma uporabnost samega priporoˇcilnega sistema je zelo odvisna od priprave takih podatkov, naˇcina, na katerega se razvijalec loti reˇsevanja teh problemov, in metod, ki se upo- rabljajo pri iskanju razmerij med izdelki in kupci, podobnostmi in razlikami med izdelki ter podobnostmi in razlikami med kupci. Med samo implemen- tacijo sem naletel na veliko problemov. Nekaj mi jih je uspelo v celoti reˇsiti, za nekaj pa sem naˇsel samo delne reˇsitve oziroma izboljˇsave.

V 3. poglavju sem za vsakega izmed implementiranih sistemov opisal postopek implementacije, probleme, na katere sem naletel in kako sem jih reˇseval. V 4. poglavju sem opisal strukturo projekta in tehnologije, ki sem jih uporabil pri razvoju spletne trgovine in pa na kratko opisal bolj pomembne tabele v podatkovni bazi.

Po implementaciji sledi testiranje vseh naˇstetih priporoˇcilnih sistemov.

Testiranja sem se lotil na veˇc naˇcinov: prvi naˇcin s strani razvijalca z uporabo uporabniˇskih zgodb, za drugi naˇcin pa sem naˇsel deset nakljuˇcnih uporabni- kov, ki so bili pripravljeni testirati spletno trgovino in priporoˇcilne sisteme ter na koncu testiranja reˇsiti anketo. V 5. poglavju sem predstavil postopke te- stiranja, anketo in rezultate za vsakega izmed implementiranih priporoˇcilnih sistemov. V 6. poglavju pa sledijo ˇse sklepne ugotovitve in zakljuˇcek.

(17)

Poglavje 2

Pregled priporoˇ cilnih sistemov za spletno trgovino

V tem poglavju predstavljam vrste priporoˇcilnih sistemov, ki obstajajo, kako jih loˇcimo, kaj so njihove prednosti in slabosti ter katere specifiˇcne sisteme sem si izbral in kako sem jih priredil za svojo spletno trgovino.

2.1 Nepersonalizirani sistemi

Nepersonalizirani sistemi (angl. non personalized recommenders) so vrsta priporoˇcilnih sistemov, ki za delovanje ne potrebujejo uporabnikovega profila, saj pri svojem delovanju uporabljajo samo povrˇsinske podatke o izdelkih, uporabnikih in njihovih trendih.

Zaradi tega so taki sistemi posebej popularni, ˇce nimamo veliko podatkov ali pa ˇzelimo imeti nek preprost priporoˇcilni sistem. Odvisno od spletne trgovine se lahko osredotoˇcimo na veˇc razliˇcnih trendov oziroma povrˇsinskih informacij, kot so na primer:

• popusti,

• najbolj ogledan izdelek,

• najpogosteje kupljen izdelek, 3

(18)

4 Domen Dobnikar

• najbolje ocenjen izdelek.

Zaradi relativno preproste izdelave, nizke zahtevnosti po podatkih in majhnih zahtevah pri vzdrˇzevanju podatkovne baze so nepersonalizirani sistemi zelo pogosti in zaradi ˇcloveˇske narave tudi dokaj uˇcinkoviti. Glavna slabost takih sistemov pa je nakazana ˇze v samem imenu. Tovrstni sistem ni prilagojen vsakemu uporabniku posebej, kar pomeni, da doloˇceni uporabniki, ˇse posebej tisti, ki ne sledijo trendom, ne bodo imeli velike koristi od uporabe takih sistemov. Obstaja veˇc razliˇcnih tovrstnih sistemov, v nadaljevanju pa sta predstavljena dva.

2.1.1 Najbolj priljubljen

Pri nepersonaliziranih sistemih sem se odloˇcil, da bom pobliˇzje pregledal sistemNajbolj priljubljen (angl. most popular). Kot ˇze samo ime pove, sistem opazuje trend najbolj priljubljenih izdelkov in glede na priljubljenost nekega izdelka izvaja priporoˇcila. Sam sistem je dokaj enostaven, saj za njegovo delovanje v spletni trgovini potrebujemo le neko osnovno podatkovno bazo, ki hrani podatke o nakupih izdelkov, torej neko tabelo, ki ˇsteje, kolikokrat je bil nek izdelek nabavljen.

V primeru moje spletne trgovine sistem za vsako kategorijo posebej hrani podatke o trendu najbolj popularnih izdelkov in glede na to, v kateri katego- riji se uporabnik trenutno nahaja, mu priporoˇca najbolj popularen izdelek iz te kategorije. Podatki o posameznih izdelkih se hranijo v podatkovni bazi.

Tam je posebej rezervirana tabela, ki hrani podatke o vsakem izdelku, koli- kokrat je bil nabavljen in v kakˇsnih koliˇcinah. Razlog, zakaj sem loˇcil samo koliˇcino v nekem nakupu in pa ˇstevilo nakupov je, ker ne ˇzelimo, da en upo- rabnik premoˇcno vpliva na celoten sistem. Primer takega nesorazmernega vpliva bi bil nakup sponk za papir. Zgodi se namreˇc lahko, da en uporabnik opravi nakup za svoje podjetje in v enem nakupu naroˇci veliko koliˇcino sponk.

Ce v tem primeru ne loˇˇ cimo koliˇcine od ˇstevila nakupov, bo en uporabnik praktiˇcno dominiral celotno kategorijo z enim nakupom.

(19)

Diplomska naloga 5 Podatkovna baza se spreminja vsakiˇc, ko uporabnik opravi nov nakup.

Ustvari se nov zapis v tabeli in tako se sistem sam nadzira in posodablja.

Sam razvijalec oziroma kakˇsen drug skrbnik spletne trgovine ne potrebuje roˇcno nadzirati ali pa spreminjati sistema. S tem zagotovimo enostavno, a vendar uˇcinkovito delovanje takega sistema. Veˇc o sami implementaciji pa je razloˇzeno v naslednjem poglavju. Sistem omogoˇca enostavno izdelavo, vendar pa zaradi poenostavljene in neprilagojene logike na uporabnika predstavlja teˇzavo pri sami nataˇcnosti priporoˇcanja, saj je lahko najbolj popularen izde- lek popolnoma irelevanten za uporabnika. Ta problem sem poskuˇsal reˇsiti z bolj nataˇcnim sistemom, ki ga predstavljam v naslednji toˇcki.

2.1.2 Komplementarni izdelki

Komplementarni izdelki so ˇse en, sicer naprednejˇsi, primer nepersonalizi- ranih sistemov. Ideja je podobna kot pri Najbolj priljubljen sistemu, sledi trendu popularnih izdelkov, vendar je razlika v naˇcinu sledenja. Za razliko od prejˇsnjega sistema ta sledi skupnim nakupom izdelkov in priporoˇca glede na popularnost skupnih nakupov. S tem ˇzelimo uporabniku priporoˇcati iz- delke, ki spadajo skupaj, in ne samo najbolj popularne izdelke.

Pri prejˇsnem sistemu je lahko priˇslo do primera, kjer si je uporabnik ogledal izdelek iz kategorije A, priporoˇcilo pa se je izvedlo nad popolnoma drugaˇcnem irelevantnem izdelku iz kategorije B. S tem sistemom ˇzelimo reˇsiti tak problem in priporoˇcilo narediti bolj relevantno za uporabnika.

Nadgranji prejˇsnjega sistema sledi tudi malo bolj zapletena izdelava in delovanje sistema. Za delovanje je potrebna nova tabela v podatkovni bazi, ki hrani podatke o popularnosti skupnih nakupov. Vsakiˇc, ko se opravi nakup z dvema ali veˇc izdelki naenkrat, ˇzelimo posodobiti podatkovno bazo in v tabelo dodati te podatke. Nato lahko posodobljeno podatkovno bazo uporabimo za prihodnja priporoˇcila.

Pozitivna lastnost tega sistema je, da je to nadgranja prejˇsnjega. Sedaj so sama priporoˇcila bolj relevantna za uporabnika, trend, kateremu sledimo, pa je manj povrˇsinski. Sistem je ˇse vedno dokaj enostaven, kljub novi ta-

(20)

6 Domen Dobnikar beli se zahtevnost procesiranja praktiˇcno ne spremeni, poveˇca pa se podat- kovna baza. Zaradi vrste podatkov, ki jih sistem hrani in uporablja, lahko ustvari obˇcutek personaliziranega sistema, kljub temu da sam sistem spada pod nepersonalizirane sisteme. Sistem je seveda ˇse vedno avtomatiziran, ne potrebuje nobenega roˇcnega vzdrˇzevanja s strani skrbnika ali razvijalca, saj se sistem sam posodablja glede na uporabnike in trende.

Pod negativne lastnosti sistema pa spada zaˇcetno pomanjkanje podatkov o skupnih nakupih nekega izbranega izdelka. Recimo, da imamo na novo dodan izdelek v spletno trgovino, s katerim ˇse ni bilo interakcije s strani uporabnikov. S takim izdelkom je praktiˇcno nemogoˇce izvajati priporoˇcila v trenutnem sistemu. Tej lastnosti sledi problem, in sicer kako ustvariti pri- poroˇcila za izdelek, za katerega nimamo podatkov v zvezi s trendom skupnega nakupa. Mojo reˇsitev sem predstavil v podpoglavjuVsebinsko filtriranje sku- paj z nadgradnjo tega sistema. Veˇc o sami implementaciji in izdelavi sistema pa v naslednjem poglavju.

2.2 Sodelovalno filtriranje

Sodelovalno filtriranje (angl. collaborative filtering) je vrsta priporoˇcilnih sistemov, kjer se v glavnem osredotoˇcimo na uporabnike in njihovo aktiv- nost [10]. Za razliko od nepersonaliziranih sistemov je tukaj zelo pomembem sam profil uporabnika oziroma podatki, ki nam povejo, kako se uporabniki obnaˇsajo v spletni trgovini.

Gre za malo bolj zapleten sistem, saj ˇzelimo priporoˇcila prilagoditi vsa- kemu uporabniku posebej glede na njegove potrebe, kar zahteva bolj podro- ben pogled nad vsakim uporabnikom. Pri grajenju uporabniˇskega profila se osredotoˇcimo na informacije, kot so:

• ocena zadovoljstva,

• komentarji,

• katere izdelke je uporabnik pregledal,

(21)

Diplomska naloga 7

• zgodovina nakupov,

• ˇcas ogleda.

Glede na naˇstete podatke lahko sklepamo, ali je doloˇcen izdelek za uporab- nika zanimiv ali ne. Na podlagi naˇstetih informacij nato ustvarimo profil uporabnika in s posebnimi metodami podobnosti iˇsˇcemo, kateri uporabniki so si med seboj podobni in kateri ne. Odvisno od koliˇcine, vrste in dimenzije podatkov obstaja veˇc razliˇcnih metod za iskanje podobnosti. Primer takih so evklidova razdalja (angl. euclidean distance), Manhattanska razdalja (angl.

Manhattan distance), kosinusna podobnost (angl. cosine similarity) in ˇse mnogo drugih. Glede na rezultate teh metod lahko nato nekemu uporabniku priporoˇcamo izdelke, ki so jih v preteklosti ˇze kupili obstojeˇci podobni upo- rabniki. Pri izboru najbolj primerne metode sem si pomagal s ˇclankom na strani Towards Data Science, v katerem je avtor opisal prednosti in slabosti razliˇcnih metod za iskanje podobnosti [2].

V primeru moje spletne trgovine sem veˇcinoma uporabljal metodo kosi- nusna podobnost (formula je prikazana na sliki 2.1, kjer A predstavlja prvi razred, B pa drugi razred, kjer imata oba razreda po n elementov), saj so podatki, ki sem jih uporabljal, veˇcdimenzionalni in sem s to metodo dose- gel najboljˇse rezultate. Pri vpeljevanju te metode sem si pomagal s knjiˇznico Scikit-learn [8]. Scikit-learn je knjiˇznica za strojno uˇcenje v jeziku Python [7], vsebuje mnogo orodij za strojno uˇcenje in statistiˇcno modeliranje.

Slika 2.1: Formula za metodo kosinusna podobnost [12]

Glavna prednost takih sistemov je visoka prilagodljivost vsakemu upo- rabniku posebej. Namesto, da priˇcakujemo, da bo vsak uporabnik sledil

(22)

8 Domen Dobnikar trendom, najdemo trend v samem uporabniku in mu glede na ta trend priporoˇcamo. Glavna slabost pa je visoka zahtevnost procesiranja. Glede na ˇstevilo uporabnikov in podatkov je lahko tak sistem kar zahteven pri raˇcunanju. Na drugi strani pa imamo problem hladnega zaˇcetka oziroma pomanjkanja podatkov [11]. Torej kako priporoˇcati, ˇce nimamo podatkov o nekem uporabniku in njegovi aktivnosti.

2.2.1 Na podlagi uporabnika

V primeru moje spletne trgovine lahko uporabniki interaktirajo z izdelki na veˇc naˇcinov: lahko si jih ogledajo, jih dodajajo v nakupovalni voziˇcek, izdelke kupujejo in jih ocenjujejo glede na zadovoljstvo.

Pri gradnji tega sistema sem se odloˇcil, da bom uporabil ocenjevanje izdelkov in nakup izdelkov za gradnjo uporabnikovega profila, torej ali je uporabnik nek izdelek ocenil, kakˇsna je bila ta ocena in ali je uporabnik opravil nakup tega izdelka. Te podatke hranim v podatkovni bazi spletne strani, ki se po vsakem nakupu ali pa oceni posodobi. Za vsakega uporabnika posebej sem zgradil profil. V mojem primeru je bila to numpy tabela, ki je vsebovala podatke o vsakem izdelku posebej. Nato pa sem to tabelo uporabil pri iskanju podobnosti med uporabniki. Uporabil sem kosinusno podobnost kot metodo podobnosti. Ta je vrnila podatke o podobnosti, s kateremi sem nato odkril, kateri uporabnik je najbolj podoben trenutnemu uporabniku.

Po konˇcanem iskanju podobnosti sem uporabniku priporoˇcal izdelke s seznama ˇze ocenjenih in kupljenih izdelkov najbolj podobnega uporabnika.

Zato da tak sistem lahko deluje, se mora uporabnik v spletno trgovino prija- viti oziroma ne sme biti anonimen, saj brez teh podatkov iskanje podobnosti ne deluje. Sistem deluje popolnoma avtomatizirano in ne potrebuje roˇcnega spreminjanja ali pa vzdrˇzevanja. Z veˇcjo koliˇcino uporabnikov ter njihove aktivnosti se z vidika priporoˇcanja, sistem tudi izboljˇsa.

Bolj podrobno o sami implementaciji ter teˇzavah, na katere sem naletel, pa v naslednjem poglavju.

(23)

Diplomska naloga 9

2.3 Vsebinsko filtriranje

Vsebinsko filtriranje (angl. content-based filtering) je vrsta priporoˇcilnih sis- temov, kjer se osredotoˇcimo na vsebino in njene lastnosti. V primeru spletne trgovine je najbolj smiselno pregledati izdelke, kakˇsne so njihove lastnosti, v katere kategorije spadajo, pregled opisa izdelka in ˇse kaj podobnega. Zanima nas, kako lahko izdelke loˇcimo v manjˇse skupine, nato pa znotraj teh manjˇsih skupin iˇsˇcemo podobnosti oziroma razlike med izdelki. Sama ideja sistema je zelo podobna sodelovalnemu filtriranju v smislu, da iˇsˇcemo podobnost med entitetami, razlikuje pa se pri samih entitetah. V primeru sodeloval- nega filtriranja iˇsˇcemo podobnost med uporabniki in glede na to podobnost priporoˇcamo vsebino. V tem primeru pa iˇsˇcemo vsebinsko podobnost med izdelki, ki so uporabnika ˇze zanimali in glede na to podobnost izvedemo pri- poroˇcanje. Pogoste vsebinske lastnosti, ki se pregledujejo:

• pogoste besede, na primer v opisu izdelka,

• kategorija,

• cena,

• namen uporabe,

• domaˇce – tuje.

To je samo nekaj primerov vsebinskih lastnosti, po katerih se lahko filtrira entitete.

Glavna prednost takega sistema je prilagajanje priporoˇcil samemu upo- rabniku brez potrebe po podatkih o drugih uporabnikih. V primeru sodelo- valnega filtriranja so podatki o uporabnikih najbolj kritiˇcen del sistema in brez teh popolnoma propade. Med slabosti pa spada potreba po vsebinskih podatkih. Podatkovna baza mora v tem primeru vsebovati kar se da veliko vsebinskih podatkov o izdelkih. ˇCe kateri izdelek teh podatkov nima, potem verjetnost priporoˇcila za tak izdelek praktiˇcno ne obstaja. Druga slabost pa je prostorska zahteva takega sistema. Odvisno od velikosti spletne trgovine je lahko teh podatkov ogromno.

(24)

10 Domen Dobnikar

2.3.1 Temeljeˇ c na izdelku

Pri vsebinskem filtriranju sem se odloˇcil filtrirati vsebino izdelkov glede na znaˇcke.

Znaˇcke sem dodal v spletno trgovino v obliki tabele znotraj podatkovne baze. Vsaka znaˇcka predstavlja neko lastnost, po kateri se lahko izdelke filtrira v manjˇse skupine. Primer nekaj znaˇck:

• fitnes,

• za dom,

• za delo,

• izguba maˇsˇcobe,

• pridobivanje miˇsiˇcne mase.

Uporabnik v spletni trgovini izbere nek izdelek za pregled. Sistem predvi- deva, da je uporabniku tak izdelek zanimiv in na podlagi tega ustvari tabelo znaˇck za izbran izdelek in vse ostale obstojeˇce izdelke. Te znaˇcke sistem nato uporablja, da ustvari tabelo, kjer se hranijo podatki z vsemi izdelki in njiho- vimi znaˇckami. Ustvari torej binarno, ki vsebuje z enko, ˇce izdelek vsebuje znaˇcko, in niˇclo, ˇce je ne vsebuje.

Tabela se uporabi pri iskanju podobnosti z metodo kosinusna podobnost.

Ta metoda pa vrne tabelo podobnosti, iz katere se lahko razbere, kateri izdelek je podoben izbranemu. Bliˇzje kot je rezultat enki, bolj sta si izdelka med seboj podobna. Prednost takega sistema je, da ne potrebujemo nobenih dodatnih informacij v zvezi z uporabnikom, torej se praktˇcino znebimo vseh negativnih posledic sistema Na podlagi uporabnika.

Uporabnik lahko ostane anonimen, saj se informacija o trenutno gleda- nem izdelku ne spreminja, uporabniki ne vplivajo na znaˇcke, ki jih vsebuje izdelek. Problemi se lahko pojavijo pri veˇcjih spletnih trgovinah. Glede na ˇstevilo izdelkov in znaˇck so lahko tabele v podatkovni bazi ogromne, kar pa seveda vpliva na ˇcas raˇcunanja podobnosti in temu sledi poˇcasna odzivnost

(25)

Diplomska naloga 11 spletne trgovine. ˇSe ena slabost v primerjavi s prejˇsnimi sistemi je neav- tomatizirano delovanje. V primeru tega sistema mora razvijalec oziroma skrbnik spletne trgovine redno roˇcno pregledovati podatkovno bazo in vsa- kemu novemu produktu dodajati znaˇcke, kakrˇsnakoli avtomatizirana metoda za dodajanje znaˇck lahko pripelje do prevelike podobnosti med produkti, kar bi pomenilo slabˇse delovanje sistema.

2.3.2 Komplementarnost podobnih izdelkov

Sistem Komplementarnost podobnih izdelkov spada deloma pod sistem vse- binsko filtriranje in deloma pod nepersonalizirane sisteme, gre pa za nad- gradnjo nekaj ˇze prej opisanih sistemov, kot soNajbolj priljubljen, Komple- mentarni izdelki in sistem Temeljeˇc na izdelku. S tem sem ˇzelel zdruˇziti pozitivne lastnosti nepersonaliziranih sistemov in sistemov vsebinskega filtri- ranja, hkrati pa reˇsiti probleme prej naˇstetih sistemov, ki sem jih ˇze predstavil v prejˇsnjih podpoglavjih diplomske naloge. Sistem Komplementarni izdelki je imel teˇzave pri pomanjkanju podatkov v zvezi s samim trendom skupnih nakupov produktov, pri sistemu Najbolj priljubljen je priˇslo do obˇcasno ire- levantnih priporoˇcil, ker je sam sistem preveˇc sledil povrˇsinskim trendom, sistem Temeljeˇc na izdelku pa predstavlja problem pomanjkanja podatkov na stopnji produkta, torej podatkov v zvezi z opisom produktov. Moja ideja, kako reˇsiti te probleme, je bila zgraditi sistem, ki bo menjal med vsebinskim filtriranjem in nepersonaliziranimi priporoˇcili glede na pomanjkanje podat- kov, hkrati pa izvedel bolj natanˇcno priporoˇcanje, kadar so vsi podatki na voljo. Torej, ˇce nimamo na voljo podatkov v zvezi z opisom produkta, bo sistem uporabil metode v sistemuKomplementarni izdelki. ˇCe so na voljo le podatki o opisu produkta, bo sistem z uporabo metod v sistemuTemeljeˇc na izdelku poiskal najbolj podoben produkt trenutnemu in priporoˇcal glede na podatke o skupnem nakupu najbolj podobnega produkta. Na ta naˇcin sem reˇsil problem pomanjkanja podatkov v obeh primerih. Sama reˇsitev naredi ta sistem malo bolj kompleksen kot prejˇsnji, saj je poleg vseh metod iz prejˇsnjih sistemov potrebno ˇse dodati logiko, ki bo prepoznala pomanjkanje podatkov

(26)

12 Domen Dobnikar in uspeˇsno menjala med sistemi.

Pozitivne lastnosti sistema so: predstavlja reˇsitev za ˇze prej opisane pro- bleme, hkrati pa naredi boljˇsa priporoˇcila v primeru popolnih podatkov. Ne- gativne lastnosti sistema pa se lahko prikaˇzejo v obliki poˇcasnejˇse odzivnosti spletne trgovina. Dodatna logika za preverjanje nepopolnih podatkov sicer ni preveˇc potratna, vendar lahko pripelje do poˇcasnejˇsega delovanja. Ker sistem deloma uporablja metode iz sistema Temeljeˇc na izdelku, pomeni, da sistem ni popolnoma avtomatiziran, potrebno je skrbeti za podatkovno bazo.

Veˇc o sami implementaciji sistema pa v naslednjem poglavju.

2.4 Hibridni priporoˇ cilni sistemi

Hibridni priporoˇcilni sistemi (angl. hybrid recommenders) so vrsta priporoˇcilnih sistemov, kjer uporabimo kombinacijo sodelovalnega filtriranja in vsebinskega filtriranja. Ideja za tak sistem je izboljˇsano delovanje prejˇsnjih dveh metod, kjer bi vzeli pozitivne lastnosti obeh in se poskuˇsali znebiti negativnih.

Danes so taki sistemi zelo popularni, saj so kljub bolj zapleteni imple- mentaciji tudi najbolj uˇcinkoviti. Primer takega popularnega sistema bi bil priporoˇcilni sistem, ki ga uporablja Netflix. Netflix svojim uporabnikom pri- poroˇca filme in tv serije, za priporoˇcanje pa uporablja veˇc podatkov. Ob prvi prijavi sistem, uporabnika povpraˇsuje, o razliˇcnih naslovih in ˇzanrih. Tako sistem ˇze na zaˇcetku ustvari uporabnikov profil. Pozneje sistem uporablja ta profil in zgodovino ogledov, za primerjavo med uporabniki. Hkrati pa filtrira filme in tv serije, glede na vsebino. Pod filtrirano vsebino spada: ˇzanra, kate- gorija, igralci, leto izdaje. Poleg uporabnikovega profila in filtriranja vsebine, sistem pregleduje ˇse: kdaj je bil film gledan (ˇcas dneva), na kateri napravi in koliko ˇcasa je uporabnik porabil za ogled. Na podlagi vseh teh informacij, Netflix personalizira priporoˇcila [6].

(27)

Diplomska naloga 13

2.4.1 Filtriranje temeljeˇ ce na uporabnik-izdelek

Pri hibridnih sistemih sem se odloˇcil izdelati sistem, ki bo primerjal upo- rabnike in nato ˇse produkte. Zdruˇzil sem sistem Na podlagi uporabnika in sistem Temeljeˇc na izdelku. S tem sem poskuˇsal narediti sistem, ki bi imel veˇcjo nataˇcnost pri priporoˇcanju, kot pa omenjena sistema.

Sistem bi najprej uporabnike primerjal med seboj po zgodovini naku- pov in oceni zadovoljstva, nato pa najbolj podobnega uporabnika uporabil pri primerjanju produktov. Produkte primerja glede na znaˇcke in katego- rije. Primerja se trenutno izbran oziroma gledan produkt s produkti najbolj podobnega uporabnika.

Pod dobre lastnosti tega sistema spada veˇcja moˇznost za bolj natanˇcna priporoˇcila. Sistem izvaja personalizirana priporoˇcila na stopnji uporabnika in produkta. Slabe lastnosti sistema pa predstavljajo slabˇsa priporoˇcila pri pomanjkanju podatkov o uporabnikih in produktih. ˇCas procesiranja in po- raba pomnilnika se drastiˇcno poveˇcata glede na prejˇsnje sisteme. Sistem je delno avtomatiziran. Podatki v zvezi z uporabniki se posodabljajo samo- dejno, potrebna je roˇcna oskrba podatkov o produktih. Veˇc o sami imple- mentaciji pa v naslednjem poglavju.

(28)

14 Domen Dobnikar

(29)

Poglavje 3

Implementacija priporoˇ cilnih sistemov v spletno trgovino

V tem poglavju sem opisal implementacijo za vsakega izmed naˇstetih pri- poroˇcilnih sistemov, opisal sem teˇzave, na katere sem naletel pri implemen- taciji in kako sem jih deloma ali pa popolnoma reˇsil.

3.1 Najbolj priljubljen

Pri implementaciji sistema Najbolj priljubljen nisem imel veˇcjih problemov, saj gre za dokaj enostaven sistem. Za implementacijo sem potreboval tri tabele v podatkovni bazi, in sicer tabelo o produktih, tabelo o zgodovini nakupov vseh uporabnikov ter tabelo, ki hrani podatki o kategorijah, v katere spadajo produkti. Izdelave sistema sem se lotil tako, da sem najprej ustvaril nov razred v novi python datoteki (ideja je lepˇsa in bolj pregledna koda), le-to sem nato uvozil v primarno oziroma glavno (angl. main) datoteko, kjer se izvajajo vse osnovne metode za delovanje spletne trgovine.

Naslednji korak je bil definirati par metod znotraj na novo ustvarjenega razreda. Potreboval sem glavno metodo, ki bo izvajala vse ostale metode in vrnila seznam najbolj popularnih produktov, metoda za sortiranje produktov glede na ˇstevilo nakupov iz tabele o zgodovini nakupov in pa konstruktor za

15

(30)

16 Domen Dobnikar ta novi razred. Najprej sem prebral celotno zgodovino nakupov iz tabele o zgodovini nakupov in jo uvozil v seznam vseh nakupov. Ta seznam sem nato sortiral padajoˇce s pomoˇcjo ustvarjene metode za sortiranje po ˇstevilu nakupov oziroma kolikokrat se produkt pojavi v tabeli o zgodovini nakupov.

Po ustvarjanju in sortiranju seznama sem iz njega prebral prvih kobjek- tov, jih pretvoril v podatkovni tipprodukt in jih vrnil kot seznamkproduktov v glavno datoteko spletne trgovine. Pozneje sem dodal ˇse preverjanje pro- duktov glede na kategorije; recimo da uporabnik iˇsˇce produkte znotraj neke kategorije, v tem primeru mu ˇzelim priporoˇcati produkte samo znotraj te kategorije glede na popularnost, saj je uporabnik ˇze sam od sebe pokazal zanimanje za specifiˇcno vrsto produktov.

3.2 Komplementarni izdelki

Gre za nadgradnjo prejˇsnjega sistema Najbolj priljubljen. ˇZelel sem razviti sistem, ki bo sledil boljˇsim trendom in s tem ustvaril bolj natanˇcna pri- poroˇcila. Pri implementaciji sta se pojavila dva problema, in sicer kateri trend bo sistem opazoval in kako ga bom naˇsel v podatkih spletne trgovine.

Odloˇcil sem se, da bom poskuˇsal razviti sistem, ki bo opazoval skupne nakupe produktov, torej kateri produkti se najbolj pogosto pojavijo skupaj pri nakupih. Da sem sistem lahko razvil, je bilo potrebno najprej dodati novo tabelo v podatkovno bazo. Potreboval sem tabelo, ki bo hranila podatke o skupnih nakupih. Vsaka vrstica v tabeli hrani identifikacijsko ˇstevilko pro- dukta in pa niz identifikacijskih ˇstevilk vseh produktov, ki so bili v preteklosti kupljeni skupaj s tem produktom. V kodi, kjer se zakljuˇcujejo nakupi, sem dodal logiko, ki preverja, ˇce sta v nakupovalnem voziˇcku dva ali veˇc pro- dukta. ˇCe je to res in uporabnik ˇzeli zakljuˇciti nakup, se v tabeli skupnih nakupov najprej preveri ˇce je kateri od produktov ˇze v tabeli. ˇCe, se nad tabelo izvede metoda posodobi (angl. update), spremeni niz identifikacijskih ˇstevilk in doda identifikacijske ˇstevilke ostalih produktov. ˇCe tega produkta v tabeli ni, potem se izvede metoda dodaj (angl. insert), ki v tabelo doda novo

(31)

Diplomska naloga 17 vrstico z identifikacijsko ˇstevilko produkta ter niz z vsemi identifikacijskim ˇstevilkam ostalih produktov v voziˇcku.

Po ustvarjeni osnovni logiki in novi tabeli je treba temu trendu ˇse slediti in ga uporabljati za priporoˇcila. Ustvaril sem novo python datoteko, ki bo definirala nov razred, ta pa bo predstavljal priporoˇcilni sistem Komplemen- tarni izdelki. V razredu sem definiral metodo za iskanje produktov po tabeli skupnih nakupov, metodo, ki ustvari in sortira seznam najveˇckrat skupaj kupljenih produktov, glavno metodo, ki nato vrne seznamknajbolj pogosto skupaj kupljenih produktov in pa konstruktor razreda, znotraj katerega se definira osnovne spremenljivke.

Ko se ustvari novi objekt tega razreda, se iz glavne datoteke poˇslje tre- nutno izbran produkt, to je produkt, ki si ga uporabnik trgovine ogleduje.

Na podlagi tega produkta se nato izvede metoda za iskanje skupaj kuplje- nih produktov iz tabele skupnih nakupov. Ta ustvari seznam vseh skupaj kupljenih produktov, ki se navezujejo na trenutno izbran produkt. Nad tem seznamom se nato izvede ˇse metoda za sortiranje po ˇstevilu pojavitev. Ta seznam se nato v glavni metodi razreda razdeli na dva dela, del, ki vsebuje k najbolj pogosto skupaj kupljenih produktov, se poˇslje nazaj kot rezultat oziroma objekt, ki kaˇze na ta razred. Datoteko z razredom sistema Kom- plementarni izdelki sem uvozil v glavno datoteko spletne trgovine in nato ustvaril objekt, ki kaˇze na razred tega priporoˇcilnega sistema.

3.3 Na podlagi uporabnika

Za sodelovalno filtriranje sem ˇzelel implementirati sistem, ki bo sledil vsa- kemu uporabniku posebej in na podlagi podatkov o uporabniku ustvaril pro- fil, katerega bo pozneje uporabljal za priporoˇcanje produktov. Pojavila sta se dva veˇcja problema, in sicer kako bo sistem sledil uporabniku in na podlagi katerih podatkov se bo gradil uporabnikov profil. Za sledenje uporabnika sem se odloˇcil, da bo sistem opazoval, s katerimi produkti uporabnik interaktira, nakup produkta in ocena zadovoljstva pa se bosta uporabljala kot podatka

(32)

18 Domen Dobnikar za grajenje uporabnikovega profila.

Najprej sem moral implementirati oceno zadovoljstva. Tega sem se lotil tako, da sem dodal novo tabelo v podatkovno bazo spletne trgovine, ki hrani podatke v zvezi z identifikacijsko ˇstevilko produkta, identifikacijsko ˇstevilko uporabnika in pa oceno, ki jo je uporabnik dal specifiˇcnemu produktu. To tabelo sem nato povezal z uporabniˇskim vmesnikom spletne trgovine, kjer lahko uporabnik na strani produkta oceni zadovoljstva na ravni od ena do pet. Po dodani logiki ocenjevanja sem ustvaril novo python datoteko, v kateri sem definiral razred, ki predstavlja priporoˇcilni sistemNa podlagi uporabnika.

Znotraj razreda pa sem definiral metodo za ustvarjanje tabele z vsemi podatki o uporabnikih, metodo za iskanje najbolj podobnega uporabnika ter glavno metodo, ki vrne seznam kproduktov najbolj podobnega uporabnika.

Sistem najprej zgradi uporabnikov profil za vsakega uporabnika posebej.

To naredi metoda za ustvarjanje tabele o uporabniˇskih podatkih. Tabela predstavlja 2D numpy tabelo z vrednostmi od niˇc do tri, vsaka vrstica v ta- beli predstavlja uporabnika, stolpec pa produkt. Niˇcla pomeni, da uporabnik s produktom ni imel interakcije; enka pomeni, da je produkt kupil; dvojka pomeni, da je produkt ocenil; trojka pa, da je produkt ocenil in kupil. Nato sistem poiˇsˇce najbolj podobnega uporabnika z uporabo metode kosinusna podobnost. Ta vrne tabelo s podatki o podobnosti med trenutnim uporabni- kom in vsemi ostalimi uporabniki. Tabela o podobnosti se sortira padajoˇce, prebere se prvi zapis v sortirani tabeli, ki predstavlja najbolj podobnega upo- rabnika, in na podlagi nakupov, ki jih je ta uporabnik ˇze izvedel, se ustvari seznamkproduktov. Ta seznam se na koncu v glavni metodi vrne kot rezul- tat sistema v glavno datoteko spletne trgovine in se prikaˇze na uporabniˇskem vmesniku spletne trgovine kot priporoˇcilo.

3.4 Temeljeˇ c na izdelku

SistemTemeljeˇc na izdelku predstavlja primer sistema vsebinskega filtriranja.

Pri implementaciji sem reˇseval naslednje probleme:

(33)

Diplomska naloga 19 1. kaj bom vsebinsko filtriral,

2. kako bom vsebino prikazal,

3. na kakˇsen naˇcin bom iskal podobnost.

Odloˇcil sem se, da bom vsebinsko filtriral produkte po samem opisu pro- dukta, v katere kategorije spadajo in pa njihov namen uporabe. Vsebino sem prikazal na veˇc naˇcinov. Na stopnji spletne trgovine sem opis in katego- rijo prikazal na strani produkta, ki si jo uporabnik lahko ogleda. Na stopnji podatkovne baze sem vsebino prikazal v veˇc tabelah, v kodi pa sem vsebino prikazal v obliki veˇc dimenzionalne numpy tabele. Za iskanje podobnosti sem si izbral metodo kosinusna podobnost. Ta metoda je vrnila boljˇse rezultate kot ostale, saj gre za veˇcdimenzionalne podatke.

Implementacije sem se lotil tako, da sem najprej ustvaril dve novi tabeli v podatkovni bazi. Potreboval sem tabelo, ki vsebuje znaˇcke, in pa tabelo, ki povezuje znaˇcke s produkti. Znaˇcke predstavljajo kratek opis produkta, v katero kategorijo spada in pa namen uporabe produkta. Za priporoˇcilni sis- tem sem ustvaril novo python datoteko, v kateri sem definiral razred sistema in pa vse potrebne metode za delovanje. Definiral sem metodo, ki ustvari tabelo s podatki o produktih, metodo, ki iˇsˇce podobnost med produkti, in pa glavno metodo, ki vrne seznam knajbolj podobnih produktov.

Sistem deluje tako, da uporabnik na stopnji uporabniˇskega vmesnika iz- bere produkt, ki si ga ˇzeli ogledati. Sistem nato poˇslje informacijo v zvezi s produktom v razred priporoˇcilnega sistema. Tam se v glavni metodi kliˇce metoda za ustvarjenje numpy tabele, ki zgradi tabelo o podatkih za vse pro- dukte. Vrstice predstavljajo produkt, stolpci znaˇcke, sama vsebine tabele pa je zapisana z niˇclami in enkami. Niˇcla pove, da produkt ne vsebuje specifiˇcne znaˇcke, enka pa, da jo. Po zgrajeni numpy tabeli se kliˇce metoda za iskanje podobnosti. Ta vrne tabelo o podobnosti med produkti, ki se nato sortira.

V glavni metodi se zgradi seznam k najbolj podobnih produktov. Seznam se poˇslje kot rezultat sistema v glavno datoteko spletne trgovine, ta pa nato prikaˇze seznam na strani ogledanega produkta.

(34)

20 Domen Dobnikar

3.5 Komplementarnost podobnih izdelkov

Sistem je nadgradnja sistema Komplementarni izdelki in sistema Temeljeˇc na izdelku, z implementacijo pa sem ˇzelel reˇsiti problem pomanjkanja podat- kov v zvezi s skupnimi nakupi produktov. Priporoˇcilni sistem bi v primeru pomanjkljivih podatkov ali pa v primeru na novo dodanega produkta poiskal najbolj podoben produkt in na podlagi tega priporoˇcal skupni nakup.

Implementacije sem se lotil tako, da sem vzel ˇze narejeno logiko iz sistema Komplementarni izdelki o skupnih nakupih ter jo zdruˇzil skupaj z logiko o is- kanju podobnih produktov iz sistemaTemeljeˇc na izdelku. Ustvaril sem novo python datoteko in v njej definiral razred ter metode, ki predstavljajo sistem Komplementarnost podobnih izdelkov. Za delovanje sistema sem potreboval naslednje metode:

1. konstruktor razreda,

2. glavna metoda, v kateri se izvajajo vse ostale metode in na koncu vrne seznamk produktov,

3. metoda, ki ustvari numpy tabelo s podatki vseh produktov,

4. metoda, ki najde najbolj podoben produkt in sortira tabelo podobnosti.

V konstruktor razreda se poˇslje produkt, ki si ga uporabnik trenutno ogleduje, nato se kliˇce glavna metoda razreda, ta pa kliˇce metodo, ki ustvari tabelo s podatki o vseh produktih. V tabeli vrstice predstavljajo produkte, stolpci pa znaˇcke produkta, sama vsebina tabele pa vsebuje cela ˇstevila od niˇc do tri.

Pomen tabele je enak kot pri sistemuTemeljeˇc na izdelku oziroma predstavlja popolnoma enako stvar. Iz glavne metode se nato kliˇce metoda, ki najde najbolj podoben produkt s pomoˇcjo kosinusna podobnost. Ta vrne tabelo podobnosti, ki se jo v tej metodi tudi sortira padajoˇce. Prvi zapis v sortirani tabeli podobnosti predstavlja najbolj podoben produkt. S pomoˇcjo tega produkta nato sistem najde vse produkte, ki so bili v preteklosti skupno nabavljeni. Glavna metoda na podlagi tega ustvari seznam k produktov in

(35)

Diplomska naloga 21 ga vrne v glavno datoteko spletne trgovine, ta pa se nato uporabi kot seznam priporoˇcenih produktov, ki ga uporabnik lahko vidi in z njim interaktira v spletni trgovini.

3.6 Filtriranje temeljeˇ ce na uporabnik-izdelek

Predstavlja primer hibridnega sistema, v katerem sem zdruˇzil sistemNa pod- lagi uporabnika in sistemTemeljeˇc na izdelku. Pri implementaciji sem naletel na naslednje teˇzave:

• kako zdruˇziti sistema,

• po ˇcem primerjati produkte in uporabnike,

• pohitritev delovanja.

Zdruˇzevanja sistema sem se lotil tako, da sem najprej pripravil naˇcrt delova- nja sistema. Sistem bo najprej iskal podobnost uporabnikov, nato pa glede na zgodovino nakupov najbolj podobnih uporabnikov primerjal ˇse produkte.

Rezultat sistema bo seznam produktov, ki so najbolj podobni trenutno izbra- nemu produktu in se hkrati nahajajo v zgodovini nakupov najbolj podobnega uporabnika.

Uporabnike sistem primerja po zgodovini nakupa in oceni zadovoljstva.

Sistem ustvari dve tabeli, in sicer tabelo o trenutnem uporabniku in tabelo o vseh ostalih uporabnikih. Vsebina tabele predstavljajo cela ˇstevila od niˇc do tri. Logika tabele je enaka kot pri sistemu Na podlagi uporabnika. Z uporabo kosinusna podobnost sistem najde najbolj podobnega uporabnika.

Sistem primerja trenutno gledan produkt s seznamom ˇze kupljenih produktov najbolj podobnega uporabnika. Ustvarita se dve tabeli, tabela o trenutnem produktu in tabela o vseh ostalih produktih iz zgodovine nakupov. Vsebina tabele je enaka kot pri sistemu Temeljeˇc na izdelku. Kosinusna podobnost najde k najbolj podobnih produktov.

(36)

22 Domen Dobnikar Cas delovanja sistema je bil trikrat daljˇsi v primerjavi z vsemi ostalimi.ˇ Iskanja reˇsitve sem se lotil tako, da sem s pomoˇcjo Visual studio code pro- grama izraˇcunal, katera metoda porabi najveˇc ˇcasa [1]. Najbolj potratna je bila metoda, ki ustvarja in primerja podatke o produktih. Naˇsel sem reˇsitev, ki sicer ni popolna, menja ˇcas delovanja za natanˇcnost priporoˇcil. Spreme- nil sem naˇcin gradnje tabele. Namesto vseh produktov sem pregledal samo produkte, ki se nahajajo v isti kategoriji kot trenutno ogledovan produkt.

Cas delovanja se je za polovico zmanjˇsal, natanˇˇ cnost priporoˇcil pa malo po- slabˇsala.

(37)

Poglavje 4

Spletna trgovina in podatkovna baza

V tem poglavju sem opisal strukturo in tehnologije, uporabljene pri razvoju spletne trgovine, podrobno sem ˇsel skozi podatkovno bazo in prikazal bolj pomembne oziroma zanimive tabele.

4.1 Spletna trgovina

Spletno trgovino sem razvijal v jeziku python, pomagal sem si s spletnim okvirjem (angl. web framework) Django [3] za spletno programiranje v pythonu, za urejevalnik kode, pa sem uporabljal program Visual Studio Code [9]. S pomoˇcjo Django okvirja sem projekt razdelil na veˇc map:

• algorithm,

• static,

• templates,

• views.

V mapi algorithm se nahajajo vse python datoteke v zvezi s priporoˇcilnimi sistemi. Znotraj teh datotek so definirani vsi razredi in vse metode, potrebne

23

(38)

24 Domen Dobnikar za delovanje vseh opisanih priporoˇcilnih sistemov.

Mapa static vsebuje vse statiˇcne datoteke, ki jih spletna trgovina upo- rablja za okraˇsevanje vsebine na doloˇcenih straneh. Sem spadajo vse CSS datoteke in vse slike produktov.

Templates vsebuje vse datoteke zapisane v HTML jeziku. Te se upora- bljajo kot stebri pri prikazovanju vsebine uporabniku.

V mapi views pa se nahaja glavna datoteka spletne trgovine. Ta opravlja vse logiˇcne funkcije, povezuje vse ostale datoteke in mape skupaj ter defi- nira glavne spremenljivke in razrede, ki se uporabljajo za delovanje spletne trgovine. Na sliki 4.1 je prikazana zaˇcetna stran (angl. home page) sple- tne trgovine, kjer lahko uporabnik izbira med kategorijami izdelkov in menja med priporoˇcilnimi sistemi. Na sliki 4.2 je ponazorjena stran izdelka, kjer lahko uporabnik: izdelek kupi, si ga ogleda, ga oceni in pregleda priporoˇcene izdelke.

Slika 4.1: Zaˇcetna stran spletne trgovine

(39)

Diplomska naloga 25

Slika 4.2: Ogled izdelka in priporoˇcenih izdelkov v spletni trgovini

4.2 Podatkovna baza

Podatkovno bazo sem razvil znotraj Django spletnega okvirja. Podpira veˇc razliˇcnih vrst podatkovne baze, sam pa sem izbral SQLite. Django sam po sebi ustvari vse pomembne povezave na podatkovno bazo, razvijalec pa nato po ˇzelji definira in dodaja nove tabele. Model podatkovne baze je prikazan na sliki 4.3. V podatkovni bazi se nahajajo naslednje bolj zanimive tabele:

• User vsebuje vse potrebne podatke v zvezi z uporabnikom. Te podatke se uporablja pri vpisu v spletno trgovino, tabela pa je naprej povezana na vse ostale tabele, ki hranijo podatke v zvezi z uporabnikovo inte-

(40)

26 Domen Dobnikar rakcijo s spletno trgovino.

• Product – v tej tabeli so podatki o produktu, sama tabela pa je naprej povezana z vsemi ostalimi tabelami, ki hranijo podatke o interakciji produkta znotraj spletne trgovine.

• ProductInCart hrani podatke o produktih in nakupovalnih voziˇckih, pove, kateri produkt se nahaja v nakupovalnem voziˇcku uporabnika.

• ProductInCategory doda dodatne informacije v zvezi s produktom in pove, v katero kategorijo spada.

• ProductWithTag se uporablja pri priporoˇcilnih sistemih vsebinskega fil- triranja, hrani podatke v zvezi z znaˇckami, ki pripadajo opisu spe- cifiˇcnega produkta.

• PurchaseHistory vsebuje zgodovino nakupov vseh uporabnikov, hrani informacije v zvezi s koliˇcino in ceno nakupa.

• JointProductPurchase se posebej uporablja pri sistemu Temeljeˇc na izdelku, vsebuje podatke o skupnih nakupih produktov.

• UserRatedProduct ima podatke o ocenah zadovoljstva uporabnikov nad produkti.

(41)

Diplomska naloga 27

Slika 4.3: Model podatkovne baze

(42)

28 Domen Dobnikar

(43)

Poglavje 5

Testiranje, anketa in rezultati

V tem poglavju sem opisal, kako sem testiral priporoˇcilne sisteme. Predstavil sem proces priprave testnih podatkov in uporabniˇskih raˇcunov. Opisal sem proces izdelave ankete ter predstavil rezultate testiranja.

5.1 Testiranje s podatki

Testiranje sem opravil na dva naˇcina, in sicer s podatki o uporabnikih in njihovih interakcijah s produkti ter brez teh podatkov. Na ta naˇcin sem dobil dobro idejo, kateri sistemi se boljˇse odzovejo v primeru novega uporabnika in kateri so boljˇsi z uporabo interakcijskih podatkov.

Podatke sem pripravil tako, da sem ustvaril petdeset umetnih uporab- nikov. Vsak tak uporabnik je imel svojo uporabniˇsko zgodbo, zgodovino nakupov, zanimanja ter ocene zadovoljstva. Ti uporabniki mi sluˇzijo kot ˇze obstojeˇci podatki in predstavljajo aktivno spletno trgovino. Poleg teh sem ustvaril ˇse petnajst uporabnikov, te sem uporabljal pri roˇcnem testiranju in anketi.

Testiranja s podatki sem se lotil tako, da sem roˇcno testiral vsak sistem posebej s petimi uporabniki, deset uporabnikov pa sem predal anketirancem.

Pri roˇcnem testiranju sem za vsakega od uporabnikov opravil nekaj nakupov in ocenil nekaj produktov. Enaka navodila sem dal anketirancem. Temu pa je

29

(44)

30 Domen Dobnikar sledil pregled priporoˇcil za vsakega izmed priporoˇcilnih sistemov. Rezultate in anketo sem predstavil v podpoglavju Rezultati in v podpoglavju Anketa.

5.2 Testiranje brez podatkov

V primeru spletne trgovine v samem zaˇcetku nimamo veliko podatkov o uporabnikih in njihovih interakcijah. Pomanjkanje teh podatkov v veˇcini primerov predstavlja negativne posledice za priporoˇcilni sistem. Testiranje brez podatkov o uporabniku in njihovih interakcijah sem opravil, ker me je zanimalo, kateri sistem se boljˇse odzove v primeru novega uporabnika.

Podatke sem pripravil tako, da sem ustvaril petnajst novih uporabnikov, ki niso vsebovali podatkov o interakcijah. Med take podatke spadajo:

• podatki o oceni zadovoljstva,

• podatki o zgodovini nakupov,

• podatki o skupnih nakupih.

Testiranja sem se lotil tako, da sem pet uporabnikov uporabil pri roˇcnem testiranju vsakega sistema posebej, deset sem jih dal anketirancem. Uporab- nike sem direktno testiral s priporoˇcilnimi sistemi brez opravljanja nakupov.

Enaka navodila sem dal anketirancem. Rezultate in anketo sem predstavil v podpoglavju Rezultati in v podpoglavju Anketa.

5.3 Anketa

Anketo sem izdelal s pomoˇcjo aplikacije Freeonlinesurveys [4]. Razdelil sem jo na dva dela, prikazana pa je na sliki 5.1. Prvi del se osredotoˇci na testiranje s podatki, sestavljen je iz dveh vpraˇsanj. Prvo vpraˇsanje je zaprtega tipa.

Anketiranec izbira med priporoˇcilnimi sistemi in izberega tistega, ki jim je bil najbolj vˇseˇc. Drugo vpraˇsanje je odprtega tipa, kjer uporabnik utemelji svojo izbiro.

(45)

Diplomska naloga 31 Drugi del ankete se osredotoˇci na testiranje brez podatkov in je prav tako sestavljen iz dveh vpraˇsanj. Obe vpraˇsanji sta enakega tipa kot v prvem delu, uporabnik izbere priporoˇcilni sistem in nato utemelji svojo izbiro.

Slika 5.1: Anketa

Anketiral sem deset oseb. Vsaki sem dodelil dva ustvarjena uporabnika. Prvi uporabnik se je uporabljal pri testiranju s podatki, drugi pa pri testiranju brez podatkov. S tem sem ˇzelel postopek narediti kar se da enostaven in poskrbeti za ˇcim manj zapletov pri testiranju.

(46)

32 Domen Dobnikar

5.4 Rezultati

5.4.1 Testiranje s strani razvijalca

Pri testiranju s strani razvijalca sem se osredotoˇcil na dve stvari:

• kvaliteta priporoˇcil,

• odzivnost celotnega sistema.

Z uporabo desetih uporabniˇskih raˇcunov sem testiral vsakega izmed sistemov posebej.

Pri testiranju brez podatkov se je najveˇcja razlika v kvaliteti priporoˇcil opazila pri sistemu Na podlagi uporabnika in sistemu Filtriranje temeljeˇce na uporabnik-izdelek. Ta razlika je priˇcakovana, saj oba sistema uporabljata podatke o uporabniˇskih interakcijah in to v veˇcji meri kot vsi ostali sistemi.

Kvaliteta priporoˇcil je bila veliko niˇzja v primeru teh dveh. Odzivnost celo- tne spletne trgovine je bila najboljˇsa v primeru sistema Najbolj priljubljen in najslabˇsa s sistemom Filtriranje temeljeˇce na uporabnik-izdelek. Na podlagi kvalitete priporoˇcil in odzivnosti celotne spletne trgovine sta Najbolj prilju- bljen inKomplementarni izdelki imela najboljˇse rezultate.

Pri testiranju s podatki se je kvaliteta priporoˇcil opazno izboljˇsala v pri- meru sistema Na podlagi uporabnika ter Filtriranje temeljeˇce na uporabnik- izdelek. Odzivnost spletne trgovine pa je ostala v vseh primerih enaka.

Glede na kvaliteto priporoˇcil bi najviˇsje ocenil sistem Filtriranje temeljeˇce na uporabnik-izdelek, glede na odzivnost pa sistem Najbolj priljubljen. Kot najslabˇsi sistem bi ocenil Na podlagi uporabnika, sistem je imel najslabˇso odzivnost spletne trgovine, kvaliteta priporoˇcil pa je bila podpovpreˇcna.

5.4.2 Testiranje s strani uporabnikov

V primeru priporoˇcilnega sistema za spletno trgovino je najbolj pomembna uporabniˇska izkuˇsnja. Zaradi tega so se pri testiranju anketiranci osredotoˇcili na kvaliteto priporoˇcil in odzivnost celotne spletne trgovine. Pomembnost

(47)

Diplomska naloga 33 ene oziroma druge lastnosti je popolnoma odvisna od posameznega anketi- ranca.

Pri testiranju brez podatkov je bil najviˇsje ocenjen sistem Najbolj prilju- bljen, sledil mu je sistem Komplementarni izdelki. Najbolj pogosta utemelji- tev je bila hitra odzivnost spletne trgovine. Najniˇzje ocenjeni sistemi so bili Na podlagi uporabnika, Komplementarnost podobnih izdelkov in Filtriranje temeljeˇce na uporabnik-izdelek. Iz utemeljitev sklepam, da je bila odzivnost teh sistemom najslabˇsa. Na sliki 5.2 je prikazan rezultat glasov s stolpˇcnim grafom, ki sem ga izdelal s pomoˇcjo aplikacije Freeonlinesurveys.

Slika 5.2: Rezultati ankete brez podatkov

Pri testiranju s podatki je bil najviˇsje ocenjen sistem Komplementarni izdelki, sledil mu je sistem Najbolj priljubljen. Najbolj pogosta utemeljitev pri anketirancih, ki so glasovali za sistem Komplementarni izdelki, je bila kvaliteta priporoˇcil. Pri anketirancih, ki so glasovali za sistemNajbolj prilju- bljen, pa je bil najbolj pogost razlog odzivnost spletne trgovine. Najslabˇse ocenjena sistema sta bilaNa podlagi uporabnika inKomplementarnost podob- nih izdelkov. Iz utemeljitev sklepam, da je bil glaven razlog slabˇsa odzivnost

(48)

34 Domen Dobnikar spletne trgovine. Na sliki 5.3 je prikazan rezultat glasov s stolpˇcnim grafom.

Slika 5.3: Rezultati ankete s podatki

(49)

Poglavje 6

Sklepne ugotovitve

Med izdelavo diplomske naloge sem se bliˇzje spoznal z razliˇcnimi vrstami priporoˇcilnih sistemov in pregledal, katere algoritme se uporablja pri izdelavi takih sistemov. Sisteme sem nato priredil in implementiral v svojo spletno trgovino. Pri procesu implementacije sem se seznanil s pogostimi teˇzavami, na katere naleti razvijalec, in jih uspeˇsno, kdaj tudi neuspeˇsno, poskuˇsal reˇsiti. Ugotovil sem, da je najbolj pomemben del izdelave priprava podatkov.

Kvalitetni podatki in dobro izdelana podatkovna baza imata velik vpliv pri priporoˇcanju vsebine.

Pri testiranju in izdelavi ankete sem spoznal kriterije, po katerih uporab- niki ocenjujejo aplikacije in priporoˇcilne sisteme. Ugotovil sem, da ima od- zivnost sistema enako velik oziroma celo veˇcji vpliv na uporabniˇsko izkuˇsnjo, kot kvaliteta priporoˇcil.

Po testiranju sem glede na rezultate ugotovil, da od implementiranih sis- temov za mojo spletno trgovino najbolje delujeta sistem Najbolj priljubljen in sistemKomplementarni izdelki, najbolj pogosta utemeljitev s strani upo- rabnikov je bila boljˇsa odzivnost sistema.

35

(50)

36 Domen Dobnikar

6.1 Nadgradnja raziskave

V prihodnosti bi bilo smiselno ponoviti raziskavo, kjer bi poskuˇsali zmanjˇsati pomen posameznih pomanjkljivosti sistemov. Smiselno bi bilo izboljˇsati od- zivnost sistemov in najti ˇse kakˇsne druge moˇzne nadgradnje, ki bi vplivale na natanˇcnost priporoˇcil. Primer nekaj moˇznih izboljˇsav: izboljˇsati naˇcin gra- dnje numpy tabel, izboljˇsati tabelo o znaˇckah v podatki bazi (manj in bolj smiselne znaˇcke), izboljˇsati naˇcin iskanja podobnosti med izdelki in uporab- niki.

Izboljˇsane priporoˇcilne sisteme bi se splaˇcalo testirati v kakˇsni veˇcji spletni trgovini, ki vsebuje veˇc izdelkov in veliko veˇc uporabniˇskih interakcij. Na ta naˇcin bi dobili bolj natanˇcno sliko o tem, kateri izboljˇsan sistem deluje najbolje.

(51)

Diplomska naloga 37

(52)

38 Domen Dobnikar

(53)

Literatura

[1] Analyze cpu usage without debugging in the performance profi- ler. Dosegljivo: https://docs.microsoft.com/en-us/visualstudio/

profiling/cpu-usage?view=vs-2019. [Dostopano: 8. 2. 2022].

[2] Distance measures in data science. Dosegljivo: https:

//towardsdatascience.com/9-distance-measures-in-data- science-918109d069fa. [Dostopano: 3. 2. 2022].

[3] Django. Dosegljivo: https://www.djangoproject.com/. [Dostopano:

3. 2. 2022].

[4] Freeonlinesurveys. Dosegljivo: https://freeonlinesurveys.com/.

[Dostopano: 3. 2. 2022].

[5] The history of amazon’s recommendation algorithm. Dose- gljivo: https://www.amazon.science/the-history-of-amazons- recommendation-algorithm. [Dostopano: 5. 2. 2022].

[6] How netflix’s recommendations system works. Dosegljivo: https://

help.netflix.com/en/node/100639. [Dostopano: 5. 2. 2022].

[7] Python 3.10.2 documentation. Dosegljivo: https://docs.python.org/

3/. [Dostopano: 8. 2. 2022].

[8] Scikit-learn machine learning in python. Dosegljivo: https://scikit- learn.org/stable/. [Dostopano: 3. 2. 2022].

39

(54)

40 Domen Dobnikar [9] Visual studio code. Dosegljivo: https://code.visualstudio.com/.

[Dostopano: 3. 2. 2022].

[10] Ricci Francesco, Lior Rokach, and Bracha Shapira. Introduction to re- commender systems handbook. In Recommender Systems Handbook, pages 1–35. Springer, 2011.

[11] Bobadilla Sancho Jesus, Fernando Ortega Requena, Antonio Her- nando Esteban, and Jes´us Bernal Berm´udez. A collaborative filtering approach to mitigate the new user cold start problem. Knowledge-Based Systems, 26:225–238, 2012.

[12] Xia Peipei, Li Zhang, and Li Fanzhang. Learning similarity with cosine similarity ensemble. Information Sciences, 307:39–52, 2015.

Reference

POVEZANI DOKUMENTI

Na ta način lahko ugotovimo, kateri so najpogostejši vnosi uporabnikov za katere nimamo napisanih pravil ali pa se uporabijo pravila za zavlačevanje in izogibanje. Ko bo

Protokola IPv4 in IPv6 sta na ˇ zalost nezdruˇ zljiva, zato potrebujemo mehanizme, ki omogoˇ cijo prenos podatkov tako preko omreˇ zja IPv4 kot tudi preko omreˇ zja IPv6 in ki

Pridobivanje mo- delov oblaˇ cil se je prav tako izkazalo za teˇ zavno, saj pri simulaciji oblaˇ cil noˇ cemo imeti velikega ˇstevila toˇ ck, drugaˇ ce je izvajanje prepoˇ casno

Vizualno je spletna stran pregledna in intuitivna za uporabo. Sestavljena je iz splošno informativnih podstrani in podstrani za spletno trgovino. Ne vsebuje datotek Flash

Cilj diplomskega dela je izdelati spletno trgovino z dodatnimi funkcionalnostmi, ki poleg običajnih funkcionalnosti (prijave uporabnikov, pregleda izdelkov, izvedbe

Pri tretji metodi je sicer prišlo do nastanka močnih signalov pravilnih dolţin pri vzorcih kuţne zemlje, vendar je prišlo do takšnih produktov tudi pri vzorcih

Med pisanjem zaključne projektne naloge smo pridobili veliko teoretičnega znanja iz področij, ki smo jih zajeli v prvem delu naloge. Znanje iz področja podjetništva smo pridobili v

Čeprav je prav znanje romskega jezika pogosto izpostavljeno kot eden izmed ključnih elementov pomoči romskega pomočnika romskim učencem, pa se romski pomočniki v šoli in vrtcu