Home » Articole » Articole » Afaceri » Știința datelor (Data Science) » Data mining » Mineritul datelor (Data Mining): Coeficientul de corelație Pearson

Mineritul datelor (Data Mining): Coeficientul de corelație Pearson

Mineritul datelor (Big Data): Coeficientul de corelație Pearson

Să aruncăm o privire mai detaliată asupra evaluărilor utilizatorilor. Vedem că utilizatorii au comportamente foarte diferite atunci când vine vorba de evaluarea trupelor:

Angelica Bill Chan Dan Hailey Jordyn Sam Veronica
Blues Traveler 3.5 2 5 3 5 3
Broken Bells 2 3.5 1 4 4 4.5 2
Deadmau5 4 1 4.5 1 4
Norah Jones 4.5 3 4 5 3 5
Phoenix 5 2 5 3 5 5 4
Slightly Stoopid 1.5 3.5 1 4.5 4.5 4 2.5
The Strokes 2.5 4 4 4 5 3
Vampire Weekend 2 3 2 1 4

Lui Jordyn se pare că îi place totul. Evaluările ei variază de la 4 la 5.

Bill pare să evite extremele. Evaluările sale variază de la 2 la 4

Hailey este o persoană binară care dă fie 1, fie 4 trupelor.

Deci, cum putem compara, de exemplu, Hailey cu Jordan? „4” al lui Hailey înseamnă același lucru ca „4” al lui Jordyn sau „5” al lui Jordyn? Aș presupune că seamănă mai mult cu „5” al lui Jordyn. Această variabilitate poate crea probleme cu un sistem de recomandare.

Broken Bells sunt ok. Le-aș da un „4”.

Ador absolut Broken Bells! Sunt buni! Le dau un 4.

Coeficientul de corelație Pearson

O modalitate de a rezolva această problemă este utilizarea coeficientului de corelație Pearson. În primul rând, ideea generală. Luați în considerare următoarele date (nu din setul de date de mai sus):

BluesTraveler NorahJones Phoenix TheStrokes Weird Al
Clara 4.75 4.5 5 4.25 4
Robert 4 3 5 2 1

Acesta este un exemplu de ceea ce se numește „inflație de grad” în comunitatea de minerit a datelor. Cea mai mică evaluare a Clarei este 4 – toate ratingurile ei sunt cuprinse între 4 și 5. Dacă ar trebui să reprezentăm grafic acest grafic, ar arăta astfel

Data Mining - Coeficientul de corelație Pearson

Linie dreaptă = Acord perfect !!!

Faptul că aceasta este o linie dreaptă indică un acord perfect între Clara și Robert. Ambii l-au clasat pe Phoenix ca fiind cea mai bună formație, Blues Traveler în continuare, Norah Jones după aceea și așa mai departe. Pe măsură ce Clara și Robert sunt de acord mai puțin, cu atât punctele de date se află mai puțin pe o linie dreaptă:

Acord destul de bun:

Data Mining - Coeficientul de corelație Pearson

Acordul nu este atât de bun:

Data Mining - Coeficientul de corelație Pearson

Deci, în grafic, acordul perfect este indicat printr-o linie dreaptă. Coeficientul de corelație Pearson este o măsură a corelației dintre două variabile (în acest caz specific corelația dintre Angelica și Bill). Acesta variază între -1 și 1 inclusiv. 1 indică un acord perfect. -1 indică un dezacord perfect. Pentru a vă oferi o impresie generală în acest sens, graficul de mai sus cu linia dreaptă are un Pearson de 1, graficul de mai sus pe care l-am etichetat „acord destul de bun” are un Pearson de 0,91, iar graficul „nu atât de bun” are un Pearson de 0,81 Deci putem folosi acest lucru pentru a găsi persoana care este cea mai asemănătoare cu persoana care ne interesează.

Formula pentru coeficientul de corelație Pearson este

Data Mining - Coeficientul de corelație Pearson

Matematica

În afară de aspectul complex, problema cu formula de mai sus este că algoritmul pentru implementarea acestuia ar necesita mai multe treceri prin date. Din fericire pentru noi, oamenii algoritmici, există o formulă alternativă, care este o aproximare a lui Pearson:

Data Mining - Coeficientul de corelație Pearson

Această formulă, pe lângă aspectul complex, este, mai important, instabilă din punct de vedere numeric, ceea ce înseamnă că ceea ce ar putea fi o mică eroare este amplificat de această reformulare. Marele plus este că o putem implementa folosind un algoritm cu o singură trecere. Să disecăm această formulă și să analizăm exemplul nostru:

BluesTraveler NorahJones Phoenix The Strokes Weird Al
Clara 4.75 4.5 5 4.25 4
Robert 4 3 5 2 1

Pentru început, să calculăm

Σi=1nxiyi

care este în prima expresie de la numărător. Aici x și y reprezintă Clara și Robert.

BluesTraveler NorahJones Phoenix The Strokes Weird Al
Clara 4.75 4.5 5 4.25 4
Robert 4 3 5 2 1

Pentru fiecare trupă vom merge împreună la mai multe ratinguri ale lui Clara și Robert și vom rezuma rezultatele:

(4.75 × 4)+ (4.5 × 3)+ (5 × 5)+ (4.25 × 2)+ (4 ×1) = 19 +13.5 + 25 + 8.5 + 4 = 70

Grozav! Acum să calculăm restul numărătorului:

i=1nxi Σi=1nyi)/n

Astfel

Σi=1nxi

este suma evaluărilor Clarei, care este 22,5. Suma lui Robert este de 15 și ei au evaluat 5 trupe:

(22,5 ×15)/5 = 67,5

Deci, numărătorul din formulă este 70 – 67,5 = 2,5

Acum să disecăm numitorul.

√((Σi=1nxi2) – ((Σi=1nxi)2)/n))

În primul rând,

Data Mining - Coeficientul de corelație Pearson

Am calculat deja suma evaluărilor Clarei, care este 22,5. Pătratul ei este 506,25. Împărțim asta la numărul de trupe cotate (5) și obținem 101,25.

Punem totul împreună:

√(101,875 −101,25) = 0,625 = 0,79057

Apoi facem același calcul pentru Robert:

√((Σi=1nxi2) – ((Σi=1nxi)2)/n)) = √(55 − 45) = 3,162277

Punând totul în valoare obținem:

r = 2,5 / 0,79057(3,162277) = 2.5 / 2.5 = 1.00

Așa că rezultă că a existat un acord perfect între Clara și Robert!

Exercițiu

Înainte de a merge mai departe, implementați algoritmul în Python. Ar trebui să obțineți următoarele rezultate.

>>> pearson(users['Angelica'], users['Bill'])
-0.90405349906826993
>>> pearson(users['Angelica'], users['Hailey'])
0.42008402520840293
>>> pearson(users['Angelica'], users['Jordyn'])
0.76397486054754316
>>>

Pentru această implementare veți avea nevoie de 2 funcții Python sqrt (rădăcină pătrată) și operatorul de putere ** care ridică argumentul său stâng la puterea argumentului său drept:

>>> from math import sqrt
>>> sqrt(9)
3.0
>>> 3**2
9

Soluție

Iată implementarea mea a coeficientului de corelație Pearson

def pearson(rating1, rating2):
   sum_xy = 0
   sum_x = 0
   sum_y = 0
   sum_x2 = 0
   sum_y2 = 0
   n = 0
   for key in rating1:
      if key in rating2:
         n += 1
         x = rating1[key]
         y = rating2[key]
         sum_xy += x * y
         sum_x += x
         sum_y += y
         sum_x2 += x**2
         sum_y2 += y**2
   # if no ratings in common return 0
   if n == 0:
      return 0
   # now compute denominator
   denominator = sqrt(sum_x2 - (sum_x**2) / n) *
               sqrt(sum_y2 - (sum_y**2) / n)
   if denominator == 0:
      return 0
   else:
      return (sum_xy - (sum_x * sum_y) / n) / denominator

Sursa: Ron Zacharski, A Programmer’s Guide to Data Mining – The Ancient Art of the Numerati. Licența CC BY-NC 3.0. Traducere și adaptare: Nicolae Sfetcu

Articol oferit sub licență CC BY-NC 3.0

Ghid WordPress pentru dezvoltatori
Ghid WordPress pentru dezvoltatori

Resursa esențială care te va ghida pas cu pas în lumea complexă a platformei WordPress.

Nu a fost votat 19.28 lei Selectează opțiunile Acest produs are mai multe variații. Opțiunile pot fi alese în pagina produsului.
Lucrul cu baze de date
Lucrul cu baze de date

Descoperă puterea bazelor de date cu acest ghid complet.

Nu a fost votat 19.28 lei38.61 lei Selectează opțiunile Acest produs are mai multe variații. Opțiunile pot fi alese în pagina produsului.

Lasă un răspuns

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *