Home » Articole » RO » 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

Facebook pentru afaceri şi utilizatori
Facebook pentru afaceri şi utilizatori

Ediția a doua (revăzută și îmbunătățită) Un ghid pentru dezvoltarea profilului propriu al utilizatorilor Facebook, şi pentru promovarea imaginii, produselor şi serviciilor firmei prin paginile de Facebook. Include volumele Ghid Facebook pentru utilizatori și Ghid pagini Facebook – Campanii de … Citeşte mai mult

Nu a fost votat $4,99$7,18 Selectează opțiunile
Ghid WordPress pentru dezvoltatori
Ghid WordPress pentru dezvoltatori

WordPress este o platformă pentru site-uri web rapidă, fiabilă, cu facilități multiple pentru dezvoltatori și ușor de utilizat. Totusi, dezvoltatorii și beneficiarii au de multe ori nevoie să adauge funcționalități suplimentare pentru a răspunde nevoilor lor. Acest ghid oferă unele … Citeşte mai mult

Nu a fost votat $3,99 Selectează opțiunile
Introducere în Business Intelligence
Introducere în Business Intelligence

Colecția ȘTIINȚA INFORMAȚIEI ”Introducere în Business Intelligence” oferă cititorilor informații cuprinzătoare despre business intelligence, explorând toate aspectele importante ale inteligenței de afaceri în scenariul actual. Subiectele tratate se referă la abordările de bază ale business intelligence. Cartea își propune să … Citeşte mai mult

Nu a fost votat $2,99$4,80 Selectează opțiunile

Lasă un răspuns

Adresa ta de email nu va fi publicată.