SPECIALIZAREA INFORMATICĂ ROMÂNĂ LUCRARE DE LICENȚĂ SISTEM DE RECOMANDARE COLLABORATIVE FILTERING Conducător științific Lector Dr. Camelia Șerban… [627025]

UNIVERSITATEA BABEȘ -BOLYAI CLUJ -NAPOCA
FACULTATEA DE MATEMATICĂ ȘI INFORMATICĂ
SPECIALIZAREA INFORMATICĂ ROMÂNĂ

LUCRARE DE LICENȚĂ
SISTEM DE RECOMANDARE
COLLABORATIVE FILTERING

Conducător științific
Lector Dr. Camelia Șerban
Absolvent: [anonimizat]

2019

Abstract

Consuming and buying products or services online started being a habit for almost everyone
that has internet access. Therefore, while it became a frequent process that people follow, the
experience that comes with it has a grea t impact, not only on the use r, but also on the provider. The
biggest challenge for the seller would be to find the right buyers for their products. Spending money
on ads which reach the wrong target will result in no benefit. Finding the right target, tho ugh, will
minimize the costs of advertising. It is self -understandable that the consumers will be satisfied too,
when they will always find the products that best fit their needs.
This is the reason why the recommender systems are used that often, while t he money
invested in their im provements is also consisten t. As better the predictions and recommendations
the system can make, the more benefits the owner will gain, and the better the experience of the
buyer will be. This is however influenced not only by the quality of the system, b ut also by the type
of the system chosen for the given context. This is, broadly, the subject of this paper. What the
recommender systems are, what is the input needed for making the right predictions, and what are
the possible system types that can be imp lemented, given the type of users, products and other
context factors. Not least, a specific recommender system is implemented behind a web application
which will make books prediction s based on user ratings .
Structure -wise, t he study is composed of 6 chapters, which go through different aspects of
the recommender systems.
The first chapter is a short introduction into the recommender systems.
The second one describes some general aspects of these systems, shows some famous c ases
where they work excel lently, and smooths the way for the next chapter by showing the two big
categories of recommender systems.
The third chapter represents the main part of this paper, focusing on Collaborative Filtering
recommendation systems, exp laining how they can be de signed, and also showing some
implementation details of one of the most used type: neighborhood -based system. The Slope One
algorithm, which is used in the application, is also detailed in this section.
The fourth chapter disclos es other type s of recommen der systems, rather than Collaborative
Filtering. The content -based and knowledge -based systems are ones of the best candidat: [anonimizat].
The fifth chapter represents the original part of this work, containing the description and
details of the developed application, a books recommender system provided through a web –
application interface. As mentioned above, there are already a fair number of platforms using
recommender systems, however they are in a continuous development, always looking for
improvements, while trying to offer the user the best experience. Most of them are integrated into
other applications, which have a different focus. That is why they might be missing important
aspects while generating the predictions. The application developed here has as main focus the
recommending process itself. Even when it has a great amount of data which “trained” the
algorithm, which all systems should have, one key element is the user input, which combined with
the community input can result in great recommendat ions.
The closing chapter summarizes the paper into some conclusions, focusing on the project
potential and highlighting how it can be a real useful application for real -life scenarios.

Cuprins
Capitolul I ………………………….. ………………………….. ………………………….. ………………………….. ………. 1
Introducere ………………………….. ………………………….. ………………………….. ………………………….. …….. 1
Capitolul II ………………………….. ………………………….. ………………………….. ………………………….. ……… 3
Sisteme de R ecomandare – Generalități ………………………….. ………………………….. ………………………… 3
2.1 Informații obținute dintr -un Sistem de Recomandare ………………………….. ………………………….. …….. 3
2.2. Exemple celebre de utilizare a sistemelor de recomandare ………………………….. ………………………… 3
2.3 Cele două tipuri principale de Sisteme de Recomandare ………………………….. ………………………….. … 5
2.4 Modele fundamentale utilizate în Sistemele de Recom andare ………………………….. …………………….. 6
Capitolul III ………………………….. ………………………….. ………………………….. ………………………….. …….. 8
Collaborative Filtering ………………………….. ………………………….. ………………………….. …………………… 8
3.1 Introd ucere în Collaborative Filtering ………………………….. ………………………….. ………………………….. . 8
3.2 Modele pentru metodele Collaborative Filtering ………………………….. ………………………….. …………… 9
3.3 Tipuri de rating -uri………………………….. ………………………….. ………………………….. ……………………….. 13
3.4 Relația cu alte tehnici de Machine Learning ………………………….. ………………………….. ………………… 14
3.5 Aplicarea în contextul aplicației dezvoltate ………………………….. ………………………….. …………………. 15
Capitolul IV ………………………….. ………………………….. ………………………….. ………………………….. …… 17
Alte tipuri de sisteme de recomandare ………………………….. ………………………….. ……………………….. 17
4.1 Sisteme de recomandare bazate pe conținut (content -based) ………………………….. …………………… 17
4.2 Sisteme de Recomandare bazate pe Informații ………………………….. ………………………….. ……………. 20
Capitolul V ………………………….. ………………………….. ………………………….. ………………………….. ……. 23
Descri erea Aplicației ………………………….. ………………………….. ………………………….. ……………………. 23
5.1 Descrierea funcționalităților ………………………….. ………………………….. ………………………….. ………….. 23
5.2 Analiză și proiectare ………………………….. ………………………….. ………………………….. …………………….. 24
5.2.1 Pr oiectarea bazei de date ………………………….. ………………………….. ………………………….. ……….. 24
5.2.2 Diagrama de clase ………………………….. ………………………….. ………………………….. …………………. 25
5.2.3 Diagrama cazurilor de utilizare ………………………….. ………………………….. ………………………….. … 26
5.2.4 Diagrama de secvență ………………………….. ………………………….. ………………………….. ……………. 26
5.3 Tehnologii folosite ………………………….. ………………………….. ………………………….. ……………………….. 27
5.4 Documentație de utilizare ………………………….. ………………………….. ………………………….. …………….. 30
Capitolul VI ………………………….. ………………………….. ………………………….. ………………………….. …… 36
Concluzii ………………………….. ………………………….. ………………………….. ………………………….. ………. 36
Bibliografie ………………………….. ………………………….. ………………………….. ………………………….. …… 37

1

Capitolul I
Introducere
Frecvența achiziționării produselor și serviciilor online a crescut dramatic în ultimii ani, și
este într -o continuă creștere. Mai mult, un număr mare de comercianți își axează activitățile
exclusiv în mediul online. Prin urmare, unul dintre c ele mai importante asp ecte, sau probabil cel
mai important, atunci când vine vorba despre activitatea online, este ca potențialul cumpărător sau
utilizator să găsească produsele sau serviciile pe care și le dorește într -un mod cât mai ușor, iar de
cealaltă parte, furnizorul să reușească să ajungă cu produsele potrivite la consumatorii potriviți. În
acest context își fac apariția sistemele de recomandare , care vin în ajutor atât pentru consumatori,
cât și pentru furnizori, în egală măsură.
Un sistem de recom andare este un program care ajută un utilizator să aleagă și să
descopere produse și conținut prin încercarea de a ‘intui’ care ar fi rating -ul utilizatorului pentru
anumite produse, recomandând -i-le ulterior pe cele care ar avea rating -urile cele mai bune . În alte
cuvinte, dac ă pentru un utilizator ar exista un număr n de produse disponibile care -i pot fi
recomandate, programul va încerca să prezică măsura în care utilizatorului i -ar plăcea fiecare dintre
aceste n produse, oferindu -i-le în final pe cele di n top. (Madhav Mishra, 2018)
Aceste sisteme de recomandare sunt, în prezent, foarte răspândite. Un exemplu celebru este
compania Netlflix. Sistemele de recomandare utilizate în această aplicație vor încerca mereu să
prezică cât de mult utilizatorului i -ar plăcea titlurile dispo nibile, recomandându -i-le pe cele care
par să fie cele mai potrivite. Evident, aceste sisteme joacă un rol foarte important în îndrumarea
utilizatorilor spre găsirea produselor și conținutului potrivit pentru gusturile și nevoile lor.
În spatele acestor si steme stă o anumită funcție (sau funcții) de recomandare. Datele de
intrare pentru această funcție sunt informații despre utilizator, și un anumit produs sau produse.
Astfel se va încerca prezicerea rating -ului pe care utilizatorul l -ar da produsului. Ceea ce se
urmărește este ca sistemul să fie capabil să prezică un rating pe care utilizatorul l -ar da unui anumit
produs înainte ca utilizatorul să vadă măcar produsul respectiv. Aceasta ar însemna capacitatea de
a oferi și recomanda unu i utilizator produse d e care, foarte probabil, utilizatorul este interesat.
(Madhav Mishra, 2018)

2
Să luăm un exemplu concret. De pildă, un utilizator încearcă să -și găsească meniul preferat
într-o listă de meniuri de la diferite restaurante, centralizate într -o singură aplicați e. În funcție de
informațiile din tr ecut, precum cumpărăturile anterioare și preferințele cu privire la diferitele tipuri
de mâncare, aplicația (sau mai precis sistemul de recomandare utilizat de către aceasta), va încer ca
să prezică cât de mult utilizator ului i -ar plăcea fiecare meniu din l ista disponibil ă, astfel
recomandându -i niște opțiuni care, foarte probabil, sunt pe gustul utilizatorului. Făcând un salt la
un alt domeniu mai vast, precum cel al cărților, ne putem da ușor seama că aplicând aici aceea și
logică, utilizatorului nu doar că -i vor fi recomandate cărți pe placul lui, ci în același timp el va reuși
să descopere, spre exemplu, autori noi, genuri noi, stiluri noi, care, cu toate că au aspecte comune
cu ceea c e utilizatorul experimentase în trec ut în materie de literatură, ele îi erau încă necunoscute.
Iar fără aceste recomandări, probabil , utilizatorul nu le -ar fi descoperit niciodată.
În altă ordine de idei, consumatorul poate beneficia de o experiență mult î mbunătățită atunci
când ea este „inf luențată” de un sistem de recomandar e. Printre altele, el va găsi lucruri care lui i
se par interesante, setul de alegeri pentru diferite produse se va micșora, eliminându -le pe cele care,
cel mai probabil, nu prezintă n iciun interes personal, și va avea p osibilitatea de a explora game
largi de produse găsind lucruri noi. (Dietmar Jannach, 2014)

3
Capitolul II
Sisteme de Recomandare – Generalități

2.1 Informații obținute dintr -un Sistem de Recomandare

Sistemele de recomandare pot fi utilizat e în mai multe scopuri. Cel mai comun și utilizat
este acela în care se urmărește cât de mult unui utilizator i -ar plăcea anumite produse. Când un
utilizator explorează o anumită colecție , vrem să i le r ecomandăm prima dată pe cele din topul
listei , obținu tă prin acest sistem. (Madhav Mishra, 2018)
Un alt caz este cel în care sistemul de recomandare este folosit pentru a determina măsura
în care anumite produse, aparent diferite din anumite puncte de vedere, sunt similare, în principal
în ceea ce privește p referințele utilizatorilor. Dacă mai multe produse sunt s imilare din acest punct
de vedere, este foarte probabil ca ele să se potrivească pentru aceiași utilizator i. În alte cuvinte,
dacă unui utiliz ator i -a plăcut un produs X, este foarte probabil ca lui să-i placă și produsul Y, dacă
cele două produse sunt sim ilare. Această similaritate a produselor este foarte importantă , mai ales
atunci când nu avem încă foarte multe informații despre un anumit ut ilizator. Spre exemplu, dacă
utilizatorul a achiziționat un singur produs, acestuia îi pot fi recomandate alte pro duse similare,
fără ca alte informații despre utilizator să fie cunoscute. (Madhav Mishra, 2018)
Nu în ultimul rând, sistemele de recomandare pot determina, de asemenea, și similaritatea
dintre doi u tilizator i. Dacă cei doi au în comun produse cărora aceștia le -au dat un rating bun, e
probabil ca cei doi să se asemene din punct de vedere al gusturilor. O rețea de socializare poate, de
exemplu, s ă folosească acest tip de abordare pentru a oferi utiliza torilor sugestii de prieteni noi.
(Madhav Mishra, 2018)

2.2. Exemple celebre de utilizare a sistemelor de recomandare

Într-adevăr, sistemele de recomandare sunt foarte răspândite în aplicațiile și site -urile de
cumpărături, ceea ce este și foarte evide nt. În majoritatea cazurilor, atunci când un utilizator se
reîntoarce pe un site de pe care a achiziționat un anumit produ s sau produse, acestuia îi sunt
sugerate în primă fază produse de care el ar putea fi interesat. (Madhav Mishra, 2018)

4
Cu toate aceste a, există și alte cazuri în care aceste sisteme sunt foarte bine exploatate, fără
ca rezultatele să fie atât de evidente p entru utilizatori. Site -urile de social media, precum Facebook
și Instagram, se bazează foarte mult pe astfel de recomandări. În funcț ie de preferințele
utilizatorului, ele decid ce postări să afișeze în pagina utilizatorului și ce prieteni noi să sugereze .
(Madhav Mishra, 2018)
Revenind la Netflix, și ei sunt faimoși pentru modul în care reușesc să exploateze sistemele
de recomandare . În 2006, compania Netflix a dat startul unui concurs, oferind un milion de dolari
pentru echipa care îmbunătățește acurateț ea recomandărilor cu 10%. Trei ani mai târziu sarcina a
fost îndeplinită, și premiul a fost acordat unei echipe. (Madhav Mishra, 2018)
Întrucât acest tip de predicții personalizate a început să dea tot mai multe roade, el a fost
adoptat în multe aplicații de comerț online, devenind un element esențial în cadrul acestora. De
exemplu, în aplicații pentru închirieri de filme (MovieLens; Mil ler et al. 2003), ghiduri pentru
restaurante (Entree; Burke 2002), recomandări de cărți (Amazon; Linden et al. 2003), știr i
personalizate (Daily learner; Billsus and Pazzani 2000). (Ben Dai, 2019)
Aducând în discuție domeniul știrilor sau articolelor onlin e, pe parcurs s -a observat că
recomandarea acestora bazată doar pe un profil conturat prin prisma sesiunii curente din bro wser
dă rezultate slabe. Astfel, chiar dacă majoritatea articolelor și a știrilor se schimbă frecvent, iar
astfel este relativ greu de construit un istoric consistent, aplicarea unui sistem Collaborative
Filtering pe articole individuale dă cele mai bune r ezultate. (Florent Garcin et al. 2012)
Câteva cifre exacte de la unele dintre cele mai mari companii: (Alexandros Karatzoglou,
2013)
• Netflix : 2/3 din filme sunt vizionate în urma recomandărilor ;
• Știri Google : recomandările generează cu 38% mai multe click -uri;
• Amazon : 35% din vânzări vin din recomandă ri;
• Choicestream : 28% din oameni cumpără mai multă muzică, dacă reușesc să găsea scă ceva
pe placul lor .

5
2.3 Cele două tipuri principale de Sisteme de Recomandare

1) Sisteme de Recomandare bazate pe Conținut
Aceste sisteme fac predicția bazându -se în principal pe atributele produselor. Astfel,
determinând anumite similarități dintre produse, ele sunt recomandate aceluiași utilizator sau
utilizatorilor similari. Spre exemplu, dacă un utilizator a văzut filmul Source Code și i -a plăcut,
este foarte probabil ca și filmul Enemy, să -i placă, întrucât face parte din același gen și îl are î n rol
principal pe același actor. În altă ordine de idei, cele două filme au aspecte similare, care i-au plăcut
utilizatorului.

2) Collaborative filtering
Sistemele de recomandare Collaborative Filtering fac predicții bazându -se doar pe rating –
urile utilizat orilor din trecut, pentru anumite produse, fără să ia în calcul produsele și atributele
acestora. U n sistem din această categorie nu are informații despre produsul pe care îl recomandă,
știe doar cum a fost acesta evaluat de mai mulți utilizator. (Madhav Mishra, 2018)
Spre exemplu, utilizatorul X a cumpărat jocurile A, B și C. Utilizatorul Y a cumpărat
jocurile A și B. Dacă cei doi utilizatori sunt similari (dar nu neapărat), este foarte probabil ca și lui
Y să-i placă jocul C, și să -l cumpere. Un scenariu similar regăsim și în Figura 1 , în care utilizatorul
din dreapta alege o carte (fapt evide nțiat de săgeata roșie) datorită asemănării cu utilizatorul din
mijloc în ceea ce privește alegerea cărților (în teorie, săgețile ar reprezenta rating -uri).
Un mare avantaj pe care Collaborative Filtering îl are în favoarea sistemelor de
recomandare bazat e pe conținut, este acela că nu e nevoie de informații despre produse, pentru ca
acestea să poată fi recomandate, ci doar de părerile utilizatorilor despre acele prod use. Dar aici
intervin și limitările acestui tip de sisteme. În primul rând este nevoie de o colecție consistentă de
rating -uri asupra produselor pentru ca predicțiile să fie cât mai precise. Aceasta înseamnă că
recomandarea unui produs nou ce apare pe pia ță, de pildă, este dificilă, întrucât la început nu există
evaluări asupra lui. Nu în ulti mul rând, în acest caz produsele cu multe rating -uri vor fi mereu
favorizate, chiar dacă există alte produse, care eventual ar fi mai potrivite, dar care au un număr
mai mic de rating -uri. Aceasta poate împiedica într -o anumită măsură posibilitatea utiliza torului de
a descoperi produse noi. (Madhav Mishra, 2018)

6

Figura 1
https://theda tascientist.com/right -way-recommender -system -startup/

2.4 Modele fundamentale utilizate în Sistemele de Recomandare

Modelele fundamentale în sistemele de recomandare sunt reprezentate de două tipuri de
date. Primul din ele se bazează pe inte racțiunea di ntre produse și utilizatori, precum rating -urile și
obișnuințele utilizatorilor când vine vorba de achiziția produselor. Al doilea este reprezentat de
atributele și informațiile atât ale utilizatorilor, cât și a produselor cu care aceștia inter acționează
(ex.: preferi nțe ale utilizatorilor ce pot proveni din cuvinte cheie folosite de către aceștia). (Charu
C. Aggarwal , 2016)
Metodele care folosesc ultimul tip de modele menționat mai sunt numite și metode de
recomandare bazate pe conținut . Un lucru important de menționat aici este acela că aceste metode
pot și ele folosi, la un moment dat, matrice ale rating -urilor date de utilizatori, însă accentul, în
procesul de predicție, nu este pus pe întreaga mulțime de rating -uri, ci rating -ul utili zatorului vizat
este cel mai important. (Charu C. Aggarwal , 2016)

7
Metodele care folosesc primul tip menționat, cel focusat pe interacțiunea utilizator -produs,
sunt numite și metode de collaborative filtering . Mai multe detalii despre aceste metode se vor
regăsi în cele ce ur mează.
Un alt tip de sisteme de recomandare sunt cele bazate pe informații (knowledge -based ).
Acestea furnizează recomandările bazându -se pe preferințele sau cerințele utilizatorilor, care sunt
oferite în mod explicit, spre deosebire de celelalte metode me nționate, care au la bază informații
din trecut în legătură cu comportamentul utilizatorilo r. Unele sisteme combină mai multe metode,
devenind astfel sisteme hibride . Sistemele hibride pot utiliza punctele forte ale mai multor metode
pentru a obține rezult ate foarte acurate, în diferite contexte și respectând anumite criterii, devenind
astfel ma i costisitoare și din punct de vedere al puterii de calcul necesară. (Charu C. Aggarwal ,
2016)

8
Capitolul III
Collaborative Filtering

3.1 Introducere în Collaborative Filtering

Sistemele de recomandare bazate pe metoda Collaborative Filtering generează predicții
bazate pe date concrete despre acțiunile și comportamentul din trecut al utilizatorilor. Acest tip de
informații (sau input -uri) sunt, de alt fel, folosite de multe alte t ehnici de Machine Learning.
Concret, utilizatorilor le sunt sugerate diferite produse în funcție de experiența din trecut cu privire
la produse similare și de preferințele acestora. (Shuyu Luo, 2018)
Termenul „collaborative fil tering” a fost introdus în co ntextul primului sistem de
recomandare comercial, numit Tapestry , care a fost proiectat să recomande documente din seturi
de știri unor grupuri specifice de utilizatori. Motivația principală a fost de a îmbunătăți cât mai mult
colaborarea în cadrul social, pentru a preveni scenariile în care utilizatorilor le sunt oferite prea
multe documente, majoritatea acestora neprezentând niciun interes pentru ei. (Prem Melville &
Vikas Sindhwani)
Reamintim pe scurt că, în paralel, metodel e Bazate pe Conținut fac subi ectul principalei
‘concurențe’ a metodei Collaborative Filtering. Acestea, în schimb, se bazează pe caracteristicile
produselor, nu ale utilizatorilor, și necesită multe informații despre produse. Poate fi vorba aici
despre atr ibute precum genul unui film, sau chiar detalii mai amănunțite, cum ar fi actorii, coloana
sonoră etc. Mai mult decât atât, dacă vorbim despre conținut, în special articole, caracteristicile
acestora pot fi deduse prin aplicarea Procesării Limbajului Natur al, o altă ramură vastă din
domeniul Inteligenței Artificiale. (Shuyu Luo, 2018)
Revenind la sistemele bazate pe Collaborative Filtering , principala caracteristică a acestora
este aceea că funcțiile de acest tip nu au nevoie de alte informații, decât info rmații „istorice ” despre
comportamentul, acțiunile și preferințele utilizatorilor cu privire la diferite produse. Întrucât aceste
metode se bazează pe atribute ale utilizatorilor, se asumă faptul că utilizatorii care au prezentat
anumite similarități în tr ecut, tind să le aibă și în viitor. (Shuyu Luo, 2018)
Din punct de vedere al preferințelor utilizatorilor, există două tipuri de rating -uri asociate
acestora. Primul dintre ele este Ratingul Explicit . Acesta este reprezentat de evaluarea directă a

9
unui anu mit produs, de exemplu un utilizator poate să evalueze un film sau o carte cu o notă de la
1 la 10. Astfel se evidențiază o părere explic ită despre un produs, pe o anumită scară. Ratingul
Implicit reprezintă preferințele utilizatorilor deduse din alți fact ori, nefiind o exprimare directă a
utilizatorului despre pro dus. Spre exemplu, preferințele unei persoane despre un film pot fi deduse
din tipul de muzică ascultat, frecvența accesării site -urilor ce conțin filme, achiziții de produse
similare, ș.a.m.d. (Shuyu Luo, 2018)

3.2 Modele pentru metodele Collaborative Filtering

Modelele utilizate în metodele Collaborative Filtering utilizează ra ting-uri furnizate de mai
mulți utilizatori , pentru a calcula predicțiile. Această ipoteză ne duce către cea mai mare p roblemă
care poate apărea în acest context, și de care trebuie ținut cont a tunci când avem în vedere
implementarea unui astfel de sistem. Problema constă în faptul că în modelele utilizate în aceste
metode, care pot fi vizualizate ca niște matrice, există foarte multe elemente ‘lipsă’ . Provocarea
este găsirea celor mai optime soluții de a acoperi aceste „lipsuri”. Ce înțelegem prin „element ele
lipsă”? (Charu C. Aggarwal , 2016)
Să presupunem că este vorba de rating -uri alte utilizatorilor, date anumitor cărț i. O singură
persoană, cu siguranță poate acoperi doar o foarte mică parte din în tregul univers al cărților (sau,
mai concret, din întrea ga colecție de cărți pe care o luăm în considerare pentru sistemul
implementat). Prin urmare, utilizatorul va da rating -uri la cărțile pe care le -a citit, iar pentru toate
celelalte cărți rămase în colecție ( infinit mai mare decât colecția evaluată de util izator), va trebui
ca sistemul de recomandare să facă predicțiile. Acesta este, în fond, scopul principal al unui siste m
de recomandare Collaborative Filtering. Problema este ușor de rezolvat atunci când găsim
similarități între utilizato r. Spre exemplu, d acă doi utilizatori A și B au gusturi asemănătoare
(rezultat obținut în urma „constatării” că ei au dat rating -uri simi lare acelorași cărți), atunci rating –
urile lipsă ale utilizatorului A vor fi ușor de prezis, dacă pentru utilizatorul B există rating -uri date
acelor produse. Cărțile pentru care nu există însă multe rating -uri, vor fi, evident, dezavantajate,
întrucât mer eu va fi riscul (problema algoritmului în sine), ca pentru acelea să nu se poată face o
predicție din cauza lipsei de i nformații. (Charu C. Aggarwal , 2016)
Pentru rezolvarea acestor probleme, multe din modele construiesc corelații combinate, nu
doar între utilizatori, ci și între produse . Astfel, prin diferite tehnici de optimizare, un model poate

10
fi „antrenat” să poată acoperi elementele lipsă. Există două tipuri de metode care sunt folosite în
majoritatea cazurilor în collaborative filtering, cunoscute ca metode bazate pe memorie și met ode
bazate pe modele.

1. Metode bazate pe memorie
Cunoscute și sub numele de algoritmi de collaborative filtering bazați pe vecinătate ,
metodele bazate pe memorie au fost printre primele metode de collaborative filtering, util izând
rating -urile utilizatorilo r pentru a prezice vecinătățile. Aceste vecinătăți pot fi din nou împărțite în
două categorii:
• Bazat e pe utilizatori – varianta în care rating -urile date de utilizatorii similari cu un
utilizator dat X stau la baza calculă rii predicției pentru ratin g-urile lipsă ale utilizatorului X. Scopul
este de a descoperi acei utilizatori similari , calculând apoi media ponderată a rating -urilor din acest
„grup” pentru obținerea predicțiilor. (Charu C. Aggarwal , 2016)
• Bazat e pe produs e – varianta în care, evident, accentul este pus pe produs, în sensul că
dorim să obținem rating -ul utilizatorului X pentru un produs A specific, spre deosebire de cealaltă
variantă, în care dorim să prezicem toate rating -urile lipsă. Pentru a face această predicție, în acest
caz, va trebui mai întâi să găsim o mulțime de produse care sunt similare cu produsul A vizat.
Această mulțime va fi cea care va „decide” , prin prisma algoritmului, dacă utilizatorului îi va plăcea
produsul A sau nu. (Charu C. Aggarwal , 2016) În practică, d acă lui A îi plac filmele Memento și
Shutter Island (care am putea spune că sunt similare prin genul comun – mister), atunci este foarte
probabil să -i placă și filmul Zodicac (ce face parte din același gen). Este important de menționa t
aici faptul că algor itmul, în acest caz, nu are acces la informații cu privire la filme. Concret, el nu
va „ști” că Memento și Shutter Island fac parte din genul de mister, spre deosebire de metodele
bazate pe conținut ( content -based) , care au acces la a ceste detalii, și care , de fapt, se bazează pe
atributele produselor. Deducția conține pur și simplu informația că cele două produse sunt similare,
prin prisma rating -urilor date de același utilizator, însă nu se cunosc și alte detalii cu privire la
aceast ă similaritate.
Amint im din nou că tehnicile bazate pe memorie sunt avantajoase întrucât sunt relativ ușor
de implementat, iar rezultatele sunt destul de exacte și explicabile. Pe de altă parte, poate interveni
din nou problema principală, menționată și a nterior, în cazul în c are nu există destule rating -uri
pentru a face posibilă calcularea tuturor celorlalte predicții.

11
Variante de implementare pentru metoda bazată pe Cea mai Apropiată Vecinătate
După cum este menționat și mai sus, una dintre primele meto de, care este și în ziua de azi
printre cele mai răspândite , este metoda bazată pe algoritmul de Cea mai apropiată vecinătate
(Nearest Neighborhood) . Algoritmul poate avea la bază Utilizatorii sau Produsele. Reamintim, nu
este nevoie de informații despre produse (atributele acestora), ci despre părerile și evaluările
utilizatorilor vis -a-vis de ele.
Când la bază sunt utilizatorii, se încearcă găsirea similitudinilor dintre utilizatori, pentru a
putea prezice preferințele acestora. Presupunem că avem o matr ice cu N linii și M coloane. Fiecărei
linii îi corespunde u n Utilizator, iar fiecărei coloane îi corespunde un Produs. Astfel, fiecare
utilizator este asociat cu un produs. Mai exact, fiecare eleme nt Aij al matricei reprezintă rating -ul
utilizatorului de p e linia i a produsului de pe coloana j. În matrice vom avea , evident, atât elemente
nule, cât și nenule. Pozițiile în care avem elemente nule sunt rating -uri ce trebuie prezise. Dacă
elementul Rij este nul, înseamnă că dorim să prezicem care ar fi ratingul utilizatorului de pe linia i
cu privire la produsul de pe linia j. (Shuyu Luo, 2018)
În acest proces va trebui prima dată să calculăm similitudinile dintre utilizatorul vizat și toți
ceilalți util izatori. Apoi se vor selecta primii (un număr predefinit de ) utilizatori și se va considera
media ponderată a ratingur ilor acestora, ponderile fiind similitudinile cu utilizatorul vizat. În alte
cuvinte, dacă , de exemplu, un utilizator a dat o notă de 10 t itlurilor X și Y, cel mai probabil un alt
utilizator cu pre ferințe similare ar trebui să aibă note apropiate de 10 pen tru aceleași titluri X și Y.
(Shuyu Luo, 2018)

Din cauză că modul în care utilizatorii evaluează produsele nu este unul constat, trebui e
tratată și această problemă. Unele persoane sunt mai gene roase când vine vorba de acordarea unei
note unui produs, p e când altele sunt mult mai stricte, evaluând adesea produsele cu note mici. De
pildă, doi utilizatori ar putea avea un grad de satisfacți e apropiat în ceea ce privește un anumit film,
dar unul din tre ei îi va oferi nota 10, iar celălalt 8, doar pentru că stilul de evaluare al acestora
diferă. Pentru a rezolva această problemă, atunci când este calculată media ponderată, rating -ul

12
mediu al u tilizatorului poate fi scăzut la fiecare pas, iar mai apoi adăugat la media ponderată finală.
(Shuyu Luo, 2018)

Două modalități de a calcula asemănările dintre utilizatori sunt Pearson Correlation și
Cosine Similarity. (Shuyu Luo, 2018)

Ideea de bază aici este să determinăm utilizatorii cu cele mai multe ase mănări față de
utilizatorul vizat , pentru a folosi rating -urile acestora în determinarea predicției rating -ului.
Dacă nu avem destule informații despre utilizatori și produse, considerăm că doi utilizatori
sunt similari atunci când ei evaluează similar ac elași produs. Analog, pentru metoda bazată pe
Produse , menționată mai sus, spunem că două produse sunt similare at unci când primesc rating –
uri similare de la același utilizator. Astfel, putem calcula rating -ul utilizatorului pentru un produs
calculând medi a ponderată a rating -urilor date de acea persoană celor mai similare (un număr
predefinit, de asemenea) produse. U n avantaj în acest caz este acela că rating -urile vis -a-vis de un
anumit produs sunt în general constante, deoarece produsul în sine este cons tant. În schimb,
gusturile utilizatorilor pot varia în timp. (Shuyu Luo, 2018)

13
2. Metodele bazate pe modele
Când vine vorba de metode bazate pe modele, aducem în discuție tehnici de machine
learning și data mining, folosite în contextul modelelor pentru pre dicții. În cazurile în care modelul
este parametrizat, parametrii acestuia sunt învățați în contextul unei rețele de optimizare. Câteva
exemple ar fi arborii de decizii, modelele bazate pe reguli, metode Byesiane. Astfel de metode au
o capacitate mult mai mare de acoperire, chiar și pentru cazurile în care există multe date lipsă ce
trebuie completate. (Charu C. Aggarwal , 2016)

3.3 Tipuri de rating -uri

Modul în care sunt implementați algoritmii de recomandare este influențat de tipul de
rating -uri. Aceste a sunt, în general, specificate pe o scară ce indică un anumit grad de satisfacție
cu privire la un anum it produs. Este posibil care valorile disponibil e pentru un rating să fie valori
continue dintr -un interval larg, precum [-10, 10], ceea ce se întâmplă însă destul de rar. De obicei,
valorile sunt dintr -un interval mai redus, în care fiecare punct reprezintă un grad de satisfacție sau
insatisfacție. Ace ste rating -uri sunt cunoscute sub numele de rating -uri bazate pe intervale
(interval -based ). De exemplu, poate fi un interval cu valori de la 1 la 5 ( {1, 2, 3, 4, 5}) , în care
valoarea 1 să reprezinte insatisfacție totală, iar valoarea 5 să reprezinte pref erință ridicată față un
anumit produs. (Charu C. Aggarwal , 2016)
Evident, tipurile de rating -uri poate v aria foarte mult. Cele mai folosite sunt cele care
utilizează valori pe o scară de la 1 la 5, la 7 sau la 10. În Figura 2 este reprezentat un sistem de
rating cu valori de la 1 la 5 (interval -based). Împreună cu fiecare valoare, este reprezentată și o
transpunere în cuvinte, care reprezintă echivalentul acelei valori în limbaj natural. Acestea, din
nou, pot varia. Faptul că aceste „transpuneri” în cuvinte variază spune multe și despre modul în
care sunt procesate rating -urile. Luând ca exemplu rating -urile de pe platforma Netflix: nota 4
reprezintă „really liked it”, iar nota 3 este echivalentul la „liked it” . Prin urmare, dintr -un total de
5 rating -uri po sibile, trei sunt favorabile, iar două sunt nefavorabile, ceea ce duce la o scară de
rating neechilibrat ă. În unele cazuri, sistemul de rating -uri poate pune la dispoziție doar evaluări
pozitive și negative, iar cele neutre lipsesc. Aceste tipuri sunt sist eme de rating care obligă un
anumit tip de alegere ( forced choice rating system ). (Charu C. Aggarwal , 2016)

14

Figura 2 . (Charu C. Aggarwal , 2016)

3.4 Relația cu alte tehnici de Machine Learning

Metodele de Collaborative Filtering pot fi văzute ca o generalizare a bine -cunoscutelor
metode de Clasificare și Regresie. În contextul clasificării sau al progres iei, clasa, sau variabila
dependentă, poate fi văzută ca un atribut cu valori lipsă. Alte coloane sunt tratate ca variabile
independente. Contextul pentru Collaborative Filtering poate fi văzut ca o generalizare a acestei
probleme, întrucât fiecare coloană poate să aibă valori lipsă, și nu doar variabila. În varianta
recomandării, nu se poate face o distincție exactă între variabil ele de clasă și variabilele
independente, deoarece fiecare variabilă joacă rolul dual de variabilă dependentă și independentă.
Această distincție există în problema clasificării doar pentru că valorile lipsă sunt restricționate la
o singură coloană. Mai mu lt decât atât, în contextul Collaborative Filtering nu există distincție nici
între rândurile de test și rândurile antrenare, pe ntru că fiecare rând poate avea, din nou, valori lipsă.
Astfel, privind problema dintr -un alt unghi, mai general, putem spune că în problema Collaborative
Filtering este vorba mai degrabă despre elemente de test și de antrenament, decât de rânduri.
Mergând pe aceeași idee, se poate afirma faptul că acest sis tem de recomandare este o generalizare
a clasificării sau a regresiei, întrucât predicția se face element cu element, și nu rând cu rând.
Această rela ție dintre clasificare/regresie și collaborative filt ering este importantă, în sensul că mai
multe principii ale regresiei și clasificării pot fi generalizate în sistemele de recomandare. (Charu
C. Aggarwal , 2016)

15
3.5 Aplicarea în contextul aplicației de zvoltate

Pentru aplicația dezvoltată este folosit u n algoritm Slope One , o variantă de implementare
pentru sistemele Collaborative Filtering. Acest tip de algoritmi este bazat strict pe rating -urile
primite de la utilizatori, ele fiind singurele date de intrare pentru procesarea predicțiilor (evident,
dacă privim datele de intrare la nivel de „obiecte”, fiec are rating specificat ca valoare dintr -un
interval predefinit este însoțit de utilizatorul care a dat rating -ul și de produsul evaluat, ambele
identif icate unic).
Algoritmii Slope One sunt ușor de impl ementat, nu sunt f oarte costisitori de rulat, pot fi
adaptați pe parcurs, și , având în vedere raportul dintre simplicitate + scalabilitate și eficiență,
rezultatele sunt foarte satisfăcătoare. Toate aces te avantaje fac ca algoritmii Slope One să fie buni
candidați pentru sisteme de recomandare adaptate la ca zuri din lumea reală. (Lemire Daniel &
Anna Maclachlan, 2005)
Câteva dintre punctele forte ale algoritmilor Slope One sunt: (Lemire Daniel & Anna
Maclachlan, 2005)
• ușor de implementat și de întreținu t: datele de intrare și de ieșire sunt ușor de înțeles și de
construit sau interpretat, prin urmare și testarea va fi eficientă din punct de vedere al costului;
• pot fi actualizați și îmbunătățiți pe parcurs. Tot ce trebuie făcut este adăugarea noilor
rating-uri și reactualizarea calculelor ale căror rezultate sunt folosite pentru predic ție. Ba chiar mai
mult, printr -o implementare „inteligentă”, în momentul în care unui utilizator îi sunt făcute anumite
recomandări (și, evident, sunt furnizate rating -uri din partea utilizatorului), aceste rating -uri pot fi
salvate și folosite pentru reac tualizarea calculelor (imediat, sau la intervale prestabilite);
• eficiente ca timp d e execuție: cel mai important este faptul că nu este nevoie de procesarea
tuturor rat ing-urilor în momentul predicției, doar a rating -urilor utilizatorului vizat împreună cu
rezultatele obținute prin procesarea (într -un moment anterior) a celorlalte rating -uri din baza de
date;
• nu este nevoie de mult input din partea utilizatorilor. Doar cu ajutorul câtorva rating -uri
se pot obține predicții valide și destul de exacte;
• scalabilitate și simplicitate. Algoritmii Slope One concurează ca acuratețe cu cei mai
populari și exacți algoritmi de predicție, care sunt mult mai costisitori și mai complecși. Întrebarea
care rămână ridicată, al cărui răspuns rămâne la decizia deținătorului, este dacă o mică îmbunătățire

16
din punct de vedere al corectitudinii și exacti tății rezultatelor meri tă sacrificiul scalabilității,
simplicității și al costului minimal necesar algoritmilor Slope One.

17
Capitolul IV
Alte tipuri de sisteme de recomandare

4.1 Sisteme de recomandare bazate pe conținut (content -based)
Sistemele de recomandare bazate pe conținut se concentrează pe informațiile, detaliile,
atributele produselor, spre deosebire de cele Collaborative Fitlering, care au în evidență
interacțiunea din trecut dintre utilizator și produ se. Mai exact, termenul de „conținut” (content) se
referă exact la aceste detalii. Cu toate acestea, rating -urile utilizatorilor date produselor nu sunt
scoase din ecuație nici în acest context. Ele sunt , de fapt , combinate cu informațiile despre produse.
(Charu C. Aggarwal , 2016)
De exemplu, utilizatorul X a evaluat cu o anumită notă produsul A. Dacă pentru produsul
A nu avem acces la rating -uri și de la alți utilizatori, nu vom putea aplica Collaborative Filteri ng
în acest caz. În schimb, un sistem de recomandare bazat pe conținut e mult mai probabil să poată
face predicții în scenariul respectiv . Dacă produsul A are în comun anumite atribute cu alte produse
B și C (cuvinte cheie, actori, gen etc), atunci B și C sunt buni candidați pentru a fi recomandați
utilizatorului A.
În Figura 3 putem observa principala diferență dintre cele două mari tipuri de sisteme de
recomandare: Collaborative Filtering (care se bazează pe asemănările dintre utilizatori), și Content –
Based (bazată pe asemănările dintre produse). Din nou menționăm faptul că cele două articole din
figură sunt similare prin prisma atributelor lor, și nu datorită rating -urilor date de utilizator
(variantă care poate fi utilizată și în Collaborative Filtering ).
Mergând puțin mai în profunzime cu metodele bazate pe conținut, acestea se ase amănă cu
(sau chiar utilizează) algoritmi de clasificare sau regresie. Mai concret, atributele produselor, care
sunt „conectate” cu rating -uri, reprezintă informații de antren are pentru un algoritm de clasificare
sau regresie. Pentru fiecare utilizator, da tele de antrenare sunt reprezentate de atributele produselor
pe care acesta le -a cumpărat sau evaluat. Clasa (sau variabila dependentă) este reprezentată de
rating -urile sau „ comportamentul” în materie de achiziții al utilizatorului. Informațiile obținute
astfel sunt folosite pentru a crea o clasificare sau o regresie, care va fi specifică acelui utilizator.
Acest model, care vizează utilizatorul, este folosit pentru a prezice dacă acestuia i -ar plăcea un
anumit produs, produs pe care el încă nu l -a evaluat sau cumpărat. (Charu C. Aggarwal , 2016)

18
Probabil cel mai mare avantaj al metodelor bazate pe conținut este dat de faptul că
produsele noi nu vor fi dezavantajate. Pentru produsele noi, în general nu vor exista destule rating –
uri pentru a face o prezicere corectă cu ajutorul unui algoritm de Collaborative Filtering. Însă acele
produse vor avea cu siguranță atribute comune cu alte produse, pentru care există deja suficiente
rating -uri.

Figura 3
http://datameetsmedia.com/an -overview -of-recommendation -systems/

Astfel, metodele bazate pe conținut vor putea acoperi și aceste cazuri, problematice pentru
sistemele Collaborative Filtering.
Cu toate acestea, metodele bazate pe conțin ut au și ele dezavantajele lor.
Unul dintre acestea este reflectat de faptul că exist ă mereu riscul ca recomandările făcute
să fie prea evidente, din cauza atributelor comune ale produselor. Acesta nu este un aspect rău în
sine, partea mai puțin favorabil ă îl constituie lipsa recomandărilor pentru produsele care nu au un
set de atribute pe care utilizatorul le -a evaluat sau cumpărat. Dacă un utilizator a evaluat anumite
produse care au un set de atribute (presupunem toate atributele din intervalul [1,50] ), aceasta nu
reprezintă o certitudine că aceluiași utilizator nu i -ar plăcea anumite pr oduse care au alte atribute

19
(atribute din intervalul [51,100]) . Cu toate acestea, acele produse „noi” nu vor avea șanse să fie
recomandate de către un astfel de sistem. P roblema este cauzată de faptul că, așa cum este descris
mai sus, metodele bazate pe co nținut construiesc un model specific utilizatorului, fără ca alte
comportamente (de la utilizatori cu gusturi comune) să fie luate în considerare. Concluzia acestui
dezav antaj poate fi însumată la reducerea diversității în recomandarea produselor, care, ev ident, se
dorește a fi evitată atât de experiența de utilizator, cât și de comercializatorii produselor
recomandate. (Charu C. Aggarwal , 2016)
Un alt dezavantaj, care la prima vedere este un dezavantaj și pentru metodele Collaborative
Filtering, este acela că, chiar dacă metodele bazate pe conținut pot oferi recomandări bune pentru
produsele noi prin prisma atributelor acestora, ele nu sunt la fe l de eficiente când vine v orba despre
utilizatori noi. Iar aceasta pentru că în modelul de antrenare, care vizează un utilizator specific, este
nevoie de un număr consistent de rating -uri ale utilizatorului vizat, pentru ca predicția să fie cât
mai exactă. În contextul Collaborativ e Filtering numărul de rating -uri de la utilizatorul vizat nu
trebuie să fie mereu foarte mare, ci cel mai important în acest caz este să existe destule rating -uri
de la alți utilizatori pentru produsele pentru care se dorește pre zicerea rating -ului. (Char u C.
Aggarwal , 2016)
Pe lângă funcționalitățile de bază ale metodei bazate pe conținut descrise, pot veni abordări
mai ample care completează sau îmbunătățesc acest tip de metode. De exemplu, utilizatorii pot
specifica aspecte ch eie relevante, care să îi definească, și cu ajutorul cărora li se poate contura câte
un profil propriu, specific, fiecăruia dintre ei. Aceste profiluri construite pot fi apoi corelate cu
atributele produselor, astfel rezultând predicții mai exacte. O astfe l de abordare nu folosește deloc
rating -uri, fiind prin urmare excelentă pentru scenariile în care nu se dispune de multe informații
(de exemplu utilizatori noi, care încă nu au evaluat sau cumpărat destule produse). Aceste metode
sunt însă încadrate într -o categorie puțin diferită , din sistemele de recomandare, și anume sisteme
bazate pe informații (knowledge -based systems). Sistemele de recomandare bazate pe informații
sunt adesea considerate foarte asemănătoare cu cele bazate pe conținut, fiind uneori greu de trasat
o linie exact ă care să diferențieze concret cele două tipuri de sisteme. (Charu C. Aggarwal , 2016)

20
4.2 Sisteme de Recomandare bazate pe Informații
Sistemele de recomandare bazate pe informații ( knowledge -based ) sunt utilizate pentru un
context puțin mai diferit față de cazurile majoritare în care se poate utiliza un sistem din cele
precedente. Aspectul definitiv, care diferențiază aceste contexte, este reprezentat de tipul de
produse care se dorește a fi recoma ndat. Într -adevăr, metodele bazate pe conținut sunt i deale pentru
produse noi, care încă nu au suficiente rating -uri pentru a putea fi recomandate de un sistem
Collaborative Filtering sau bazat pe conținut. Dar, în fond, tipul de produse pe care -l avem în
evidență aici nu este redus doar la produsele „noi”. (Charu C. Aggarwal , 2016)
Când vine vorba de metodele bazate pe informații, aducem în context produse care au o rată
mai mică de cumpărare, produse care nu sunt cumpărate în masă zi de zi, care se încad rează de cele
mai multe ori în anumite nișe, iar pote nțialii cumpărători fac și ei parte dintr -o categorie aparte,
fiecare din ei având preferințe specifice. Exemple concrete de produse , în acest caz , ar fi mașinile,
proprietățile imobiliare, bijuterii le, și în general produse le cu prețuri ridicate, comparat iv cu gama
largă de produse care sunt cumpărate în masă, poate zi de zi. Pentru tipul acesta de produse nu mai
putem aduce în discuție recomandările bazate pe rating -uri. Ba mai mult, rating -urile sunt s coase
în totalitate din context, întrucât este extrem de grea găsirea unui număr optim de rating -uri date
unui produs cu atribute specifice. Să luăm ca exemplu o persoană care dorește să achiziționeze o
proprietate imobiliară. Evident, preferințele vor fi particulare, specifice persoanei vizate.
Provocarea u nui sistem de recomandare bazat pe informații este să facă cea mai bună legătură între
preferințele utilizatorului (profilul acestuia) și descrierea, atributele produselor. Preferințele
utilizatorului ( de exemplu locația, dimensiunea, numărul de camere, m obilierul, tipul de
construcție , anul construcției etc) vor contura un tip de produs pentru care poate fi dificil sau chiar
imposibil să se găsească destule rating -uri asociate acestor detalii, pentru o recomandare adecvată.
(Charu C. Aggarwal , 2016)
Mai mult decât atât, atunci când vine vorba despre astfel de produse, preferințele
utilizatorilor se pot schimba semnificativ în timp. De pildă, un model de mașină evoluează ca
performanță și facilități în timp, iar astfel și așteptările potențialilor cump ărător se vor schimba.
Prin urmare, recomandările pentru produsele din categoria descrisă pot fi făcute prin
sistemele de recomandare bazate pe informații, în care rating -urile nu mai sunt luate în considerare,
ci factorii decisivi sunt asemănările dintre cerințele utilizatorului și descrierile produselor. Astfel
se creează o bază de cunoștințe conținând informații despre funcțiile de asemănare ce trebuie

21
folosite în procesul de recomandare. Această bază de cunoștințe (sau informații) este pilonul
importan t al metodei discutate, de unde vine și numele ( knowledge -based ). Specificarea explicită
a preferințelor sau cerințelor utilizatorilor duce către un control mai mare asupra procesului de
recomandare. În sistemele Collaborative Filtering și cele bazate pe C onținut, recomandările sunt
făcute în urma procesării ratingurilor: ale utilizatorilor înșiși, ale altor utilizatori cu preferințe
asemănătoare, sau o combinație dintre acestea două. Spre deosebire de cele două metode, sistemele
bazate pe informații sunt u nice întrucât ele oferă posibilitatea utilizatorilor de a -și exprima
preferințele în mod explicit. Figura 4 ilustrează diferențele de bază dintre cele trei tipuri de sisteme.
(Charu C. Aggarwal , 2016)

Tipul de
sistem Caracteristica principală Date de intrare
Collaborative
Filtering Recomandări bazate pe rating -urile și acțiunile
mele sau ale utilizatorilor similari cu mine Rating -uri ale utilizatorului
Rating -uri ale comunității
Sisteme
bazate pe
conținut Recomandări bazate pe atributele produselor,
față de care există o preferință ce reiese din
rating -urile sau acțiunile mele din trecut Rating -uri ale utilizatorului
Atribute ale produselor
Sisteme
bazate pe
Informații Recomandări bazate pe preferințele sau
cerințele mele exprimate în mod explicit. Cerințe a le utilizatorului
Atribute ale produselor
Cunoștințe ale domeniului
Figura 4

În funcție de tipul de interfață (prin urmare și informațiile colectate) folosit pentru a obține
datele de la utilizator, sistemele de recomandare bazate pe informații se împar t în două categorii:
• Sisteme bazate pe constrângeri . În acest tip de sisteme, utilizatorul de obicei specifică
anumite criterii sau constrângeri (de exemplu limite superioare sau inferioare cu referire la un
anum it atribut) pe care și le doresc pentru p rodusul căutat. În general, aceste constrângeri sunt
valori din domenii exacte. În funcție de rezultatele obținute, utilizatorul poate să modifice ulterior
limitele setate, până când se ajunge la rezultate satisfăcă toare. (Charu C. Aggarwal , 2016)
Sisteme le bazate pe constrângeri au dat randament foarte bun în diferite aplicații
comerciale, în general atunci când vine vorba despre produse complexe sau cu multe specificații,

22
unde metodele collaborative filtering și c ele bazate pe conținut prezintă numeroase dezavantaje.
(Francesco Ricci , et al. 2011)
• Sisteme bazate pe exemple . Aici utilizatorul alege criterii mai specifice pentru produsul
căutat, criterii ce nu pot fi încadrate neapărat într -un anumit domeniu finit, exact. De exemplu:
mașina ar trebui să aibă culoarea x, capacitatea motorului y, culoare interioară z ș.a.m.d. Sau : casa
ar trebui să arate ca și casa de la adresa x. În aceste scenarii se vor folosi metrici pentru similitudini.
În funcție de criteriile selectate se vor alege produse cât mai as emănătoare cu cele specificate de
utilizator. Din nou, potențialul cumpărăt or va putea să -și reactualizeze criteriile. Un avantaj în acest
sens îl reprezintă posibilitatea de a utiliza un rezultat primit la o anumită căutare ca fiind un nou
punct de start, la care să mai fie adăugate noi atribute. Astfel se creează un proces prin care
utilizatorului îi este mai ușor să ajungă la produsul dorit . (Charu C. Aggarwal , 2016)
Chiar dacă în ambele cazuri căutătorul poate să -și modifice preferințele pe parcurs,
modurile în care acestea sunt procesate de către algoritmi sunt diferite. În primul caz se pune
accentul pe căutare, în care trebuie să fie respectate limitele specificate, pe când în cel de -al doilea
caz atributele specificate sunt folosite ca puncte cheie pe care se bazează căutarea, în combinație
cu metricile de similitudine pri n care se procesează imaginea produsului ca întreg, nu doar ca
specificații independente ce trebuie îndeplinite. (Charu C. Aggarwal , 2016)

23
Capitolul V
Descrierea Apl icației

5.1 Descrierea funcționalităților

Principala funcționalitate a aplicației, care reprezintă și scopul acesteia în sine, este
recomandarea de cărți pentru utilizator, în funcție de rating -urile acestuia. Colectând feedback de
la cititor, sub for mă de rating -uri pe care el le dă anumitor cărți, algoritm ul va face o predicție,
recomandându -i o carte.
Înainte de a ajunge la această funcționalitate, utilizatorul este nevoit să se autentifice, sau
dacă nu are deja cont, să se înregistreze. După aces t pas, el va avea acces la funcționalitatea de
recomandare . Pe această pagină, cititorul va trebui să furnizeze cel puțin trei rating -uri pentru ca
să primească o recomandare. În baza de date există un total de 4003 cărți pentru care există cel
puțin un ra ting. Numărul total de rating -uri procesate pentru recoman dare este de 300 000, care
acoperă numărul de 4003 cărți. Pentru a da un rating unei cărți, utilizatorul poate alege între două
opțiuni: căutarea unei cărți specifice, sau navigarea prin titluri pri mite aleator din întreaga colecție
de 4003 cărți. Prin urm are, se disting două sub -funcționalități:
• Căutarea unei cărți în întreaga colecție. Aceasta se face prin introducerea de text într -un
input, care declanșează o căutare la fiecare caracter introdu s. Căutarea se face atât după titlu, cât și
după autor. O secțiune dedicată rezultatelor căutării va afișa automat cărțile în funcție de textul
introdus.
• Alegerea unui titlu dintr -un set de cărți primite aleator din cele 4003 titluri disponibile.
Printr -un buton „Next” utilizatorul va primi următorul set de că rți aleator, având posibilitatea de a
face acest lucru de oricâte ori.
Pentru a evalua o carte, utilizatorul va trebui să dea click pe una dintre cărți, fie din cele
filtrate după titlu și autor, f ie din setul de cărți aleator. Cartea selectată va apărea într-o secțiune
dedicată funcționalității de rating. Aici vor apărea toate detaliile cu referire la carte, și un sistem de
evaluare cu note de la 1 la 5. După alegerea unei note din acest interval ș i la apăsarea butonului
Send se va trimite rating -ul pentr u procesare.

24
Din moment ce procesarea unui set de rating -uri pentru determinarea unei recomandări
durează câteva secunde, request -urile sunt trimise după o anumită regulă, sau mai bine zis după un
anumit algoritm. În primă fază, utilizatorul va trebui sa dea cel puțin trei rating -uri pentru ca
request -ul să se trimită. Cât timp cererea este procesată, un mesaj va înștiința utilizatorul de faptul
că ultimul rating nu a fost încă procesat. Recomandăr ile vor fi disponibile pe parcurs ce acestea
ajung de la s erver, dar dacă o altă cerere este deja în curs de procesare, mesajul încă va înștiința
utilizatorul de acest lucru. Cu toate acestea, mereu există posibilitatea de a vedea recomandările
calculate ș i primite de la server. În momentul în care utilizatorul t rimite un rating, dacă există deja
o cerere pentru recomandare în procesare, rating -ul se salvează local, iar când se primește răspuns
de la server va fi trimisă automat lista cu rating -urile salvat e local. Aceasta are ca scop scutirea
serverului de cereri trimise concomitent în mod inutil. Astfel toate cererile sunt rezolvate iterativ
de către server, atunci când este vorba de un singur utilizator.
Pentru vizualizarea recomandărilor trebuie acțion at butonul Show Now!, activat după
minim trei rating -uri date de utilizator.

5.2 Analiză și proiectare
5.2.1 Proiectarea bazei de date

Figura 5. Schema bazei de date

25
5.2.2 Diagrama de clase

Figura 6 . Diagrama de clase

26
5.2.3 Diagrama cazurilor de u tilizare

Figura 7 . Diagrama cazurilor de utilizare

5.2.4 Diagrama de secvență

Figura 8 . Diagrama de secvență pentru procesarea rating -urilor

27
5.3 Tehnologii folosite
• Java – Spring Boot
Aplicațiile Spring Boot sunt foarte ușor de creat, configurat, și sunt rulabile aproape
imediat. La crearea unei astfel de aplicație, bibliotecile externe sunt aduse și configurate automat,
pregătite pentru a fi folosite . De fapt, acesta este punctul forte principal al Spri ng Boot: auto
configurarea și libertatea dezvol tatorului de a se concentra pe implementare, în loc de configurare.
Caracteristici:
• Nu este nevoie de configurarea de fișiere XML;
• Framework -ul Spring si alte librării externe sunt și pot fi configurate automat;
• Dependințele cel mai des folosite s unt adăugate automat în configurare ;
• Tomcat, Jetty sau Undertow integrat, fără nevoia de a deploya fișiere WAR ;
• Aplicațiile create sunt independente, pregătite pentru a fi rulate

• Maven
Maven este un instrument ce poate fi folosit pentru a administ ra build -ul oricărui proiect
Java. Prin crearea de JAR -uri, proiectele pot fi ulterior utilizate în cadrul altor proiecte, iar acest
instrument este menit s ă facă acest întreg proces unul foarte simplu și ușor de realizat. Configurarea
este una intuitivă, într-un fișier POM (.xml), în care pot fi aduse alte „proiecte”. Acestea vor fi
integrate automat în proiect și vor putea fi folosite imediat. Pe site -ul ce ntral Maven pot fi găsite
aceste proiecte externe, iar integrarea lor în aplicație se rezumă, mai mu lt sau mai puțin, la copierea
a câtorva linii xml, care identifică proiectul ce se dorește a fi adus.
Caracteristici:
• Ușurință în procesul de build al un ui proiect
• Adăugarea de proiecte externe (jars) și alte dependințe
• Posibilitatea de a exporta proiecte JAR, WAR etc, fără nevoia de a scrie scripturi
• Ușurința de a integra un Git Repository împreună cu Maven

• MySql
MySql este un sistem open -source de gestiune a bazelor de date relațional. Acesta poate fi
utilizat și integrat într -o gamă largă de aplicații, dar este cel mai adesea folosit pentru aplicații web.

28

• Liquibase
Liquibase este o librărie open -source utilizată pentru administrarea acțiunilor asupra bazei
de date. Acestea includ aproape orice tip de acțiuni: creare, ștergere, refactori zare etc. Tipurile de
baze de date suportate sunt multiple. „Scripturile” pe care le execută Liquibase, numite Changese ts,
pot fi furnizate sub diferite formate: XML, JSON, YAML, SQL, dar cel mai folosit dintre ele este
XML.
Principala caracteristică este versionarea. După fiecare changeset executat, Liquibase ține
cont de schimbările făcute, fiind oricând posibilă revenir ea la o anumită versiune a bazei de date.
(Shay Shmeltzer )

• React
React este o bibliotecă JavaScript creată de Facebook, pentru crearea și dezvoltarea de
interfețe pentru aplicații web. La baza tuturor aplicațiilor web sunt componentele . O componentă
este un modul care randează un anumit output. (Ari Lerner) El poate conține la rândul lui una sau
mai multe componente, iar granularitatea e ste un aspect ce rămâne la latitudinea dezvoltatorului.
Componenta poate fi una foarte mare și generală, de exemplu o p agină întreagă, sau poate fi una
mică, precum un buton cu anumite proprietăți, un input sau un container pentru text. Mergând puțin
mai d eparte în detalii privind componentele, acestea pot să aibă proprietăți ( Props ), care pot fi
privite ca parametri pentr u funcții, pe baza cărora ele „își formează” un anumit comportament. De
asemenea, o componentă poate avea starea sa internă proprie ( State), care poate fi modificată de
factori externi, și pe baza căreia pot fi randate diferite elemente.
Punctul forte al acestei librării este modul în care elementele și componentele sunt randate
în DOM -ul browser -ului. De fapt, React nu manipulează DOM -ul în mod direct, întrucât acest
lucru ar duce la o randare lentă, și astfel la performanță scăzută. În schimb, React folo sește un
DOM virtual , care este manipulat în memorie, iar aici sunt actualizate și administrate toate
elementele ce trebuie afișate. Mai apoi, React decide ce trebuie modificat și ce nu trebuie modificat
în DOM -ul browser -ului, făcând acțiunile necesare în consecință. (Ari Lerner) În altă ordine de
idei, dacă într -o componentă relativ mică (de exemplu un buton) s -a schimbat State -ul, iar ac esta
trebuie re -randat, doar acea componentă va fi actualizată, fără necesitatea re -actualizării întregii
pagini, sau mai exact a întreg DOM -ului.

29
DOM -ul virtual este deci o reprezentare în memorie a DOM -ului browser -ului, iar astfel,
atunci când o nouă co mponentă este scrisă, ea nu este scrisă direct în DOM -ul browser -ului, ci e
scrisă în DOM -ul virtual, pe c are React o va transpune mai apoi în DOM -ul browser -ului. (Ari
Lerner)

• Typescript
TypeScript este un superset peste JavaScript , care are ca element e adiționale principale
Clasele și Interfețele. Proiectele în care se adoptă TypeScript tind să fie mai ușor de menținut și
mai stabile, putând fi în același timp lansate și rulate în orice medii în care se poate rula o aplicație
JavaS cript.
Unul dintre ma rile beneficii pe care le mai are TypeScript este acela că IDE -urile pot fi în
general mai bine configurate pentru a detecta erori de orice tip, în timp real, la dezvoltarea unei
aplicații prin TypeScript. Astfel procesul de dezvoltare devine mai eficient, erorile la timpul rulării
sunt minimizate (ceea ce nu se întâmplă și în cazul folosirii JavaScript), iar bug -urile sunt detectate
și rezolvate timpuriu. În alte cuvinte, dezvoltarea aplicațiilor folosind TypeScript se aseamănă cu
expe riența utilizării unu i limbaj de nivel înalt, într -un IDE consacrat (de exemplu Java – IntelliJ).

• Redux
Din moment ce React nu este un framework, ci o bibliotecă (spre deosebire de Angular,
spre exemplu), atunci când vine vorba de scalabilitate și extin dere va fi nevoie, ce l mai probabil,
de instalarea mai multor biblioteci externe pentru a acoperi diferite necesități. Una dintre aceste
biblioteci, folosită în majoritatea cazurilor, este Redux. Redux este un container ce menține starea
întregii aplicații . În alte cuvinte, Re dux ajută la administrarea stării aplicației, prin urmare la
manipularea tuturor datelor pe care dorim să le afișăm, în funcție de interacțiunea utilizatorului cu
aplicația. De exemplu, dacă pe o pagină sunt randate mai multe component e ce sunt independent e
(sau relația dintre ele este una foarte îndepărtă, iar comunicarea directă între ele ar fi prea
costisitoare), acestea pot fi conectate, fiecare în parte, la containerul Redux, și pot declanșa diferite
acțiuni pentru schimbarea datel or din acel container . Fiecare componentă conectată la Redux va fi
astfel „conștientă” de schimbările făcute, indiferent de sursa de proveniență a declanșărilor. În altă
ordine de idei, o componentă poate fi actualizată (din punct de vedere al conținutului afișat) în

30
funcție d e schimbările ce au loc într -o altă componentă, chiar dacă între cele două nu există nicio
legătură.
5.4 Documentație de utilizare
Pagina Home (Figura 9) oferă utilizatorului posibilitatea de a se autentifica sau înregistra,
în cazul în care acesta nu are un cont. Pagina următoare nu va fi disponibilă până când se va realiza
autentificarea.

Figura 9 . Pagina Home
La acționarea butonului Login, din pagină sau din header, se va deschide un modal prin
care utilizatorul își poate introduce datele de autenti ficare (Figura 10) .

31

Figura 10 . Login
După autentificare utilizatorul va avea acces la pagina de recomandări, iar în header va fi
evidențiat faptul că vizitatorul este autentificat (Figura 11).

Figura 11. Utilizator autentificat
În cazul în care utili zatorul nu are un cont, acesta se poate înregistra, prin acționarea
butonului Register din header. Un modal pentru înregistrare îi va oferi posibilitatea creării unui
cont nou (Figura 12).

32

Figura 12 . Înregistrare

La acționarea butonului Start de pe pag ina Home, se va deschide pagina dedicată recomandărilor
(Figra 13) .

Figura 13 . Pagina de recomandări
Pentru a primi o recomandare, utilizatorul va trebui să evalueze cel puțin trei titluri, după
care titlurile recomandate vor fi disponibile. Cu cât vor f i mai multe rating -uri date de cititor, cu
atât cărțile sugerate se vor apropia mai mult de preferințel e acestuia. Pentru a evalua o carte, există

33
două posibilități: căutarea unei cărți (Figura 14) după titlu sau autor, sau navigarea prin titluri
oferite a leator din întreaga colecție de care dispune aplic ația (Figura 15) . Pentru căutare se va
introduce titl ul sau autorul în inputul dedicat, iar în mod automat cărțile găsite vor fi afișate în
partea stângă , filtrarea având loc în timp real, la introducerea f iecărui caracter.

Figura 14 . Căutare
Pentru alegerea cărților din seturi aleatoare (Figura 15) , secțiunea de jos va oferi câte patru
cărți, iar la acționarea butonului Next, se vor aduce alte patru cărți alese aleator, acțiunea putând fi
repetată de or icâte ori. Nu este recomandat însă evalua rea unei cărți necitite, întrucât aceasta poate
să nu reflecte preferințele reale ale cititorului.

Figura 15 . Cărți aleatoare
Pentru a evalua oricare dintre cărți, din secția cu rezultatele căutării sau din secți a cu seturi
aleatoare, se va selecta una dintre cărți, iar aceasta va apărea în secțiunea special dedicată
procesului de evaluare (Figura 16) .

34

Figura 16 . Cartea selectată
Pentru trimiterea rating -ului se va selecta nota, reprezentată în steluțe de la 1 la 5, și se va
acționa butonul Send. În p artea dreaptă, dedicată sugestiilor, utilizatorul va putea vedea câte titluri
a evaluat. De asemenea, faptul că o cerere este în curs de procesare (un rating este procesat pentru
algoritmul de recomandare), este evi dențiat printr -un mesaj corespunzător. Id eea aici este că pentru
procesarea rating -urilor server -ul are nevoie de un anumit interval de timp, iar utilizatorul va fi
mereu informat de faptul că titlurile ce urmează să fie sugerate (dacă există) nu iau în ca lcul și
ultimele rating -uri trimise. Cu t oate acestea, utilizatorul are mereu posibilitatea de a acționa butonul
Show Now pentru a vedea titlurile sugerate (Figura 17) , chiar dacă ele nu iau în considerare
ultimele rating -uri (și dacă, bine -nțeles, au fost furnizate cel puțin 3 rating -uri).

35

Figura 17 . Recomandarea

36
Capitolul VI
Concluzii

Privite în ansamblu , din perspectiva unei persoane prezente în mediul online, Sistemele de
Recomandare pot aduce beneficii considerabile în ceea ce priveș te consumul frecvent sau mai
puțin frecvent, al produselor și serviciilor, prin intermediul platformelor online. Oferind sugestii
adecvate potențialilor consumatori, satisfacția acestora va crește, iar im plicit, furnizorii vor avea și
ei de câștigat. Prin urmare, ambele părți sunt în avantaj.
Pentru a obține rezultate optime, tipul de sistem de recomandare folosit trebuie ales cu grijă,
în funcție de mai mulți factori: frecvența cu care se cumpără / consum ă produsele oferite, tipul de
consumatori vizat, tip ul de produse; iar unul dintre cei mai importanți: momentul în care se adoptă
această abordare. Mai exact, dacă produsele au ajuns deja la mulți consumatori, sau sunt într -un
stadiu incipient. Existența/a bsența rating -urilor din partea consumatorilor asupr a produselor sau
serviciilor consumate influențează dramatic alegerea tipului de sistem de recomandare potrivit .
Aplicația dezvoltată în cadrul acestui proiect utilizează un algoritm de tip Slope One , care
se încadrează în sistemele de recomandare de tip Collaborative Filtering . Acest tip de algoritmi
este relativ ușor de implementat, dar în ciuda acestui fapt, rezultatele se ridică la standarde înalte,
fiind comparabile cu rezultatele unor algoritmi de Cl asificare sau Regresie, care sunt mai
costisitori, a tât din punct de vedere al procesului de dezvoltare, cât și al procesării și rulării.
Consider că, în contextul adăugării unor noi funcționalități, aplicația ar putea fi un succes,
iar mulți utilizatori a r beneficia în urma utilizării ei. Cea mai important ă extindere ar fi adăugarea
filmelor în context, prin urmare posibilitatea recomandării filmelor într -un mod asemănător. Cele
mai multe platforme în care este vorba de recomandare, procesul este unul intu itiv, cu date adunate
din istoricul consumatorului ( de ex. Netflix), dar acestea sunt de cele mai multe ori insuficiente. În
schimb, cererea anumitor detalii în mod explicit de la utilizator pot aduce îmbunătățiri dramatice
în procesul de recomandare.
În concluzie, originalitatea și calitatea sistemului de recomandare folosit stă în capacitatea
de a combina și asocia preferințe ale utilizatorului cu ale altor milioane de utilizatori, în scopul de
a face o predicție care să reflecte cât mai exact afinitățile consumatorului . Acest lucru este posibil
și datorit ă interfeței pusă la dispoziție, prin care cititorul își poate exprima preferințele, și care are
în spate o bază de date consistentă folosită în procesul de recomandare.

37
Bibliografie

[1] Aggarwal, Charu C.: Recommender Systems, Springer International Publ ishing
Switzerland, New York, 2016
[2] Clozer, Brian, Nicoll, Stephane : It’s Kind of Magic: Under the Covers of Spring Boot
https://content.pivotal.io/springone -platform -2017/its -a-kind-of-magic -under -the-covers –
of-spring -boot-brian -clozel -st%C3%A9phane -nicoll
[3] Dai, Ben, Wang, Junhui: Smooth neighborhood recommender systems, Journal of
Machine Learning Research 20 (2019), 1 -24
http://jmlr.org/papers/volume20/17 -629/17 -629.pdf
[4] Garcin, Florent, Zhou Kai, Faltings, Boi: Personalized News Recomendation B ased on
Collaborative Fitlering, IEE/WIC/ACM International Conferences on Web Intelligence and
Intelligent Agent Technology, 2012
http://florent.garcin.ch/pubs/garcin_wi12.pdf
[5] Introduction to Apache Maven | A build automation tool for Java projects
https://www.geeksforgeeks.org/introduction -apache -maven -build -automation -tool-java-
projects/
[6] Jannach, Dietmar: Recommender Systems. An Introduction, Dortmund, 2014
https://pdfs.semanticscholar.org/5d1d/d378962c7601526f65f69e408f8800a0d3c4.pdf
[7] Karatzog lou, Alexandros: Recommender Systems, Telefonica Research, Barcelona,
2013,
https://www.ugr.es/~essir2013/slides/ESSIR_2013_ Recsys_final.pdf
[8] Lemire , Daniel, Maclachlan, Anna: Slope One Predicttors for Online Rating -Based
Collaborative Filtering, 2005
http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.60.4503&rep=rep1&type=pdf
[9] Lerner, Ari: What is React?
https://ww w.fullstackreact.com/30 -days-of-react/day -1/
[10] Luo, Shuyu: Introduction to Recommender System , 2018
https://towardsdatascience.co m/intro -to-recommender -system -collaborative -filtering –
64a238194a26

38
[11] Melville, Perm, Sindhwanim Vikas: Recommender Systems, IBM T.J. Watson
Research Center, Yorktown Heights
https://vikas.sindhwani.org/recommender.pdf
[12] Mishra, Madhav: Learning How R ecommendation System Recommends, 2018,
August
https://towardsdatascience.com/learning -how-recommendation -system -recommends –
45ad8a941a5a
[13] Ricci, Francesco, Rokach, Lior, Shapira, Bracha, Kantor, Paul B.: Recommender
systems handbook, Springer Science+Bu siness Media, New York, 2011
[14] Shmeltzer, Shay: Introduction to Liquibase and Managing Your Database Source
Code, 2017
https://dzone.com/articles/introduction -to-liquibase -and-managing -your-databa

Similar Posts