Tot ce trebuie să știți despre filtrarea colaborativă
- ia-o clasă Demo
- tipuri de filtrare colaborativă
- algoritm bazat pe memorie sau cel mai apropiat cartier
- filtrare colaborativă bazată pe Model
- filtrare colaborativă hibridă
- exemplu de filtrare colaborativă
- set de date
- crearea algoritmului de filtrare colaborativă
- algoritm de filtrare colaborativă bazat pe memorie
- calculând ratingul
- limitări ale filtrării colaborative
- aplicații ale sistemelor de recomandare a filtrării colaborative
ia-o clasă Demo
(nu furnizează datele de contact, link-ul de download va fi trimis la tine în câteva secunde)
înainte de a intra în concepte de bază, cum ar fi sistemele de recomandare de filtrare colaborativă și algoritmii de filtrare colaborativă, să înțelegem sistemele de recomandare.
un sistem de recomandare își propune să prezică preferința unui utilizator, pentru a ‘recomanda’ un articol, care ar putea fi un produs precum hainele sau ar putea fi filme, servicii etc., sistemele de recomandare au devenit foarte importante astăzi din cauza surplusului de opțiuni din fiecare domeniu și ajută companiile să își plaseze mai bine produsele sau serviciile pentru o mișcare sporită.
există două moduri de a construi un sistem de recomandare; unul este bazat pe conținut, iar celălalt este filtrarea colaborativă. Vom analiza în profunzime filtrarea colaborativă în acest articol, împreună cu exemple de filtrare colaborativă.
35% din Amazon.com veniturile sunt generate de motorul său de recomandare.
există două moduri, sau simțuri, în care filtrarea colaborativă rulează sisteme de recomandare, și aceasta este una îngustă și una mai generală.
în sens restrâns, filtrarea colaborativă funcționează prin prezicerea preferințelor unui utilizator, prin colectarea și studierea preferințelor multor alți utilizatori similari.
descărcați Curriculum detaliat și obțineți acces GRATUIT la sesiunea de orientare
ora: 10:30 AM – 11: 30 AM (IST/GMT + 5:30)
de exemplu, dacă utilizatorul A și utilizatorul B preferă aceeași mașină de spălat, celelalte preferințe ale utilizatorului B ar putea fi ceva de care utilizatorul a va fi interesat, deoarece gusturile și nevoile lor sunt similare. Acest lucru se face, desigur, luând în considerare mulți utilizatori diferiți și numeroase preferințe și reacții, de unde și termenul de filtrare colaborativă.
sistem de filtrare colaborativă sursă – recomandare
într-un sens mai general, filtrarea colaborativă este procesul de prezicere a preferinței unui utilizator prin studierea activității sale pentru a obține modele.
de exemplu, studiind aprecierile, antipatiile, omiterile și vizualizările, un sistem de recomandare poate prezice ce îi place unui utilizator și ce nu-i place.
diferența dintre filtrarea colaborativă și filtrarea bazată pe conținut este că prima nu are nevoie de informații despre articol, ci funcționează în schimb pe preferințele utilizatorului.
tipuri de filtrare colaborativă
algoritm bazat pe memorie sau cel mai apropiat cartier
Recommender system Source-către știința datelor
această metodă folosește un sistem de evaluare pentru a prezice preferințele unui utilizator luând în considerare preferințele unui utilizator similar sau ale ‘vecinului’. Există două moduri de a calcula preferințele aici, filtrarea colaborativă bazată pe utilizator și filtrarea colaborativă bazată pe articole.
să luăm în considerare mai întâi filtrarea colaborativă bazată pe utilizatori. Să presupunem că avem o matrice de ratinguri n X M, pentru utilizatorul u hectolix, i = 1,…n și item p, XXIX, j=1,…m. Să presupunem că trebuie să prezicem rating-ul itemuluir7, un item J pe care utilizatorul i nu l-a vizionat/evaluat. Modul în care funcționează această metodă este de a calcula preferințele utilizatorului i și de a le potrivi cu alți utilizatori, de a selecta utilizatorii similari de Top X, de a lua evaluările lor pentru elementul R X și de a găsi media ponderată pentru a prezice evaluarea/preferința posibilă a utilizatorului i a elementului.
luând în considerare faptul că unii utilizatori tind să fie prea îngăduitori, oferind ratinguri ridicate pentru articolele de care nu se bucură cu adevărat, în timp ce unii utilizatori tind să fie prea stricți, oferind ratinguri scăzute chiar și pentru articolele care le plac, această metodă de filtrare colaborativă corectează formula pentru a scăpa de prejudecăți. Pentru a corecta acest lucru, scădem evaluarea medie a fiecărui utilizator a tuturor elementelor atunci când calculăm media ponderată și apoi o adăugăm înapoi pentru utilizatorul țintă:
similitudinea poate fi calculată în 2 moduri: corelația Pearson și similitudinea cosinusului.
rezumând această metodă, ideea este de a găsi utilizatorii cei mai asemănători cu utilizatorul nostru țintă în ceea ce privește preferința, de a cântări evaluările lor pentru un articol și de a prezice că, ca evaluare potențială pentru utilizatorul nostru țintă, pentru elementul selectat.
în filtrarea colaborativă bazată pe elemente, comparăm două elemente și presupunem că acestea sunt similare atunci când un utilizator acordă celor două elemente evaluări similare. Apoi, prezicem Evaluarea utilizatorului pentru un articol calculând media ponderată a evaluărilor pentru majoritatea elementelor X similare de la acest utilizator. Vedeți imaginea de mai jos ca exemplu.
sursă de filtrare bazată pe elemente-Mediu
filtrare colaborativă bazată pe Model
în această metodă de sisteme de recomandare a filtrării colaborative, diferiți algoritmi de extragere a datelor și de învățare automată sunt utilizați pentru a dezvolta un model pentru a prezice evaluarea unui utilizator a unui articol Neevaluat. Câteva exemple ale acestor modele sunt rețelele Bayesiene, modelele de clustering, descompunerea valorii singulare, analiza semantică latentă probabilistică, factorul multiplicativ multiplu, alocarea latentă Dirichlet și modelele bazate pe procesul de decizie Markov.
filtrare colaborativă hibridă
această metodă combină sistemele de filtrare colaborativă bazate pe memorie și pe model pentru a elimina limitările precum raritatea și pierderea informațiilor. Cu toate acestea, această metodă este mai complexă de construit.
descărcați Curriculum detaliat și obțineți acces GRATUIT la sesiunea de orientare
ora: 10:30 AM – 11: 30 AM (IST/GMT + 5:30)
exemplu de filtrare colaborativă
pentru a obține o bună înțelegere a sistemelor de recomandare a filtrării colaborative, să luăm un exemplu de filtrare colaborativă în timp real și să construim un algoritm de filtrare colaborativă în Python. Primul pas este definirea setului de date. Dacă sunteți începător în Python, consultați acest articol de cunoștințe:
set de date
pentru acest exemplu de filtrare colaborativă, trebuie să acumulăm mai întâi date care conțin un set de elemente și utilizatori care au reacționat la aceste elemente. Această reacție poate fi explicită, cum ar fi o evaluare sau un like sau dislike, sau poate fi implicită, cum ar fi vizualizarea unui articol, adăugarea acestuia la o listă de dorințe sau citirea unui articol.
aceste seturi de date sunt de obicei reprezentate ca o matrice care constă dintr-un set de utilizatori, elemente și reacțiile date de acești utilizatori la aceste elemente. Iată un exemplu:
o matrice cu cinci utilizatori și cinci elemente sursă – real Python
această matrice reprezintă cinci utilizatori u1-u5, care au evaluat cinci elemente i1-i5, între evaluări 1-5 (de asemenea, fără evaluări). În majoritatea cazurilor, aceste matrice au mai multe celule goale decât cele pline, deoarece este foarte puțin probabil ca mulți utilizatori să evalueze multe dintre elementele din listă. Aceasta este cunoscută sub numele de matrice rară.
puteți utiliza această listă de surse de date de înaltă calitate pentru proiectele dvs. de algoritm de filtrare colaborativă. Un loc bun pentru a începe este setul de date MovieLens 100k care conține 100.000 de evaluări pentru 1682 de filme date de 943 de utilizatori, fiecare utilizator având cel puțin 20 de filme.
în timp ce setul de date are multe câmpuri utile, cele pe care le concentrăm în special sunt:
u.item: the list of moviesu.data: the list of ratings given by users
fișierul u. data conține o listă separată de evaluări și ID utilizator, ID element, evaluare și marcaj de timp. Iată un exemplu:
primele 5 rânduri de MovieLens 100k Data Source-real Python
întregul fișier conține date pentru 100.000 de astfel de evaluări.
crearea algoritmului de filtrare colaborativă
ideea din spatele executării acestui proiect este de a 1. Identificați utilizatorii cu preferințe similare și apoi 2. Preziceți o evaluare pentru un film de către un utilizator, care nu l-a evaluat încă. De asemenea, va trebui să luăm în considerare acuratețea rezultatelor noastre.
1 și 2 sunt realizate folosind diferite seturi de algoritmi. Un punct important de reținut este că nu suntem preocupați de vârsta, demografia etc. a utilizatorilor eșantionului. sau genul filmelor etc. Tot ceea ce ne preocupă sunt evaluările implicite și/sau explicite pentru aceste filme de către acești utilizatori.
pentru a măsura acuratețea rezultatului nostru, putem folosi opțiuni precum Root Mean Square Error sau Mean Absolute Error.
algoritm de filtrare colaborativă bazat pe memorie
în această metodă, încercăm să prezicem ratingul R pe care un utilizator U l-ar da eventual unui element (filmul) I.
primul pas este găsirea utilizatorilor care au preferințe similare cu utilizatorul U, apoi calculați ratingul R.
Iată un exemplu despre cum găsim utilizatori cu preferințe similare. Luați în considerare setul de date mic:
acestea sunt evaluări pentru 2 filme, date de 4 utilizatori A, B, C și D. trasând evaluările, graficul arată astfel:
trasarea rating Sursa-real Python
distanța dintre punctele de complot este o modalitate de a obține o idee despre similitudini în interes. Putem folosi următorul program pentru a calcula distanța:
de la SciPy import spațial
folosim scipy.spațială.distanța.funcția euclidiană pentru a calcula distanța. Calculăm distanța dintre C și A, B și D. Putem vedea, din rezultat și, de asemenea, din tabelul în sine, că C este cel mai apropiat de B. Dar, de asemenea, am dori să știm din A și D cine este cel mai apropiat de C. În ceea ce privește distanța, am putea spune D, dar uitându-ne la tabel, am putea spune că A și C sunt mai aliniate, deoarece amândurora le place filmul 2 de două ori mai mult decât filmul 1 (luând în considerare raporturile și nu ratingul real), în timp ce utilizatorului D îi plac ambele filme aproape în mod egal, indicând preferința lor poate fi diferită. Ceea ce distanța euclidiană nu poate prezice, putem deriva din unghiul liniei care leagă utilizatorii. Alăturându-se utilizatorilor, graficul ar arăta astfel:
putem vedea că cu cât unghiul dintre două linii este mai mic, cu atât referințele lor sunt mai similare. Pentru a găsi acest lucru în program, putem rula următoarele:
puteți vedea că asemănarea cosinusului dintre a și b este 0, indicând o asemănare strânsă. Folosind distanța euclidiană și similitudinea cosinusului este 2 dintre diferitele metode pe care le puteți utiliza pentru a calcula similitudinea în preferință.
calculând ratingul
odată ce am identificat utilizatori cu preferințe similare cu utilizatorul nostru U, vom anticipa ratingul pe care R U L-ar da pentru un film dacă nu au evaluat încă. Din nou, există multe modalități de a face acest lucru.
o modalitate simplă este de a găsi media ratingurilor acordate pentru acel film de către utilizatorii de top similari. Expresia matematică ar fi:
formula matematică pentru evaluarea medie dată de utilizatorii n Source – real Python
puteți merge, de asemenea, pentru o abordare ponderată în cazul în care în utilizatorii similare de top există o mulțime de diferență în opinie. Asta ar însemna să oferiți celui mai apropiat utilizator similar mai multă greutate și apoi să coborâți greutăți. Expresia ar fi:
limitări ale filtrării colaborative
o ființă, nu ia în considerare metadatele. Utilizatorii ar putea evalua un film în funcție de preferința lor pentru actorul din el, de exemplu, dar filtrarea colaborativă nu va lua în considerare acest lucru.
un alt dezavantaj este că filtrarea colaborativă nu este foarte eficientă decât dacă mulți utilizatori au evaluat o mulțime de articole. Numai atunci poate face cel mai bun meci pentru un public similar și apoi prezice ratingul.
deoarece filtrarea colaborativă are nevoie de seturi uriașe de date, pentru a putea obține utilizatori cu asemănări strânse, există adesea problema rarității datelor. Așa cum am văzut mai devreme, o matrice rară este una cu mai multe celule goale decât cele pline, ceea ce este aproape întotdeauna cazul.
scalabilitatea este o altă problemă, deoarece algoritmul de filtrare colaborativă este de obicei scris având în vedere n utilizatori. Pe măsură ce setul de date crește, programul general poate deveni masiv.
aplicații ale sistemelor de recomandare a filtrării colaborative
sisteme de recomandare a filtrării colaborative sursă – real Python
filtrarea colaborativă găsește cea mai mare utilizare în rețeaua socială. Veți vedea filtrarea colaborativă în acțiune pe aplicații precum YouTube, Netflix și Reddit, printre multe altele. Aceste aplicații utilizează filtrarea colaborativă pentru a recomanda videoclipuri/postări pe care utilizatorul este cel mai probabil să le placă pe baza algoritmului lor predictiv.
filtrarea colaborativă este o metodă populară pentru programele de recomandare, în ciuda limitărilor. De asemenea, este utilizat în platformele de comerț electronic pentru a recomanda produse, pe baza achizițiilor de către utilizatori de preferințe sau gusturi similare.
ca programator, va trebui să amestecați algoritmi pentru a face filtrarea colaborativă mai precisă și, de asemenea, să amestecați metode sau predicții pentru a obține cele mai precise rezultate. Capitolul Recommender Systems din cartea Mining Massive Dataset este, de asemenea, o sursă excelentă de informații despre filtrarea colaborativă.
descărcați Curriculum detaliat și obțineți acces GRATUIT la sesiunea de orientare
ora: 10:30 AM – 11: 30 AM (IST/GMT + 5:30)
avem, de asemenea, un ghid complet despre cum să devii un om de știință de date, ceea ce aspiră să devină majoritatea pasionaților de învățare automată.
pentru a obține dreptul de date știință skillset, ar trebui să vă înscrieți într-un curs de știință de date. Acest lucru vă va ajuta să vă ridicați cariera ca om de știință de date.