proiecte

17 martie 2013

E-Commerce (uneori) face greșit

cele mai multe site-uri de e-commerce sunt oferindu-vă pentru a sorta rezultatele căutării de rating client… și destul de mult fac greșit. Să presupunem că aici caut o carte despre CSS. Vreau să obțin cea mai bună carte pe care o pot cumpăra banii, așa că voi apăsa cu siguranță butonul Sortare după evaluare. Site-ul oferă două opțiuni

  • cartea a : 1 rating de 5. Evaluare medie de 5.
  • cartea B: 50 evaluări. Evaluare medie de 4.5

gândiți-vă la asta, ați prefera ca cartea A să vină mai întâi din cartea Bcome mai întâi. Probabil cartea B nu? Asta înseamnă că avem nevoie de câteva lucrurimarter decât doar sortarea după evaluarea medie.

un prim răspuns simplu, care ar fi cu siguranță o îmbunătățire în comparație cu sortarea după evaluarea medie ar putea fi plasarea produsului cu mai puțin de K evaluări în partea de jos. Dar atunci, cum să alegi k? Ce se întâmplă dacă căutăm o nișă și toate produsele au mai puțin de K evaluări, cu excepția unuia, care are un K+1 evaluări îngrozitoare. Ar trebui să meargă pe partea de sus ?

un al doilea răspuns la care ați putea veni ar fi să alegeți o formulă empirică de notare care pare să se potrivească constrângerilor noastre.

majoritatea formulelor de acolo se bazează pe estimarea Bayesiană. În general vorbind, estimarea Bayesiană strălucește într-adevăr asupra acestui tip de situație : doriți să măsurați ceva, dar știți că nu veți avea suficiente date pentru a ajunge la o estimare perfectă.

Dacă m este media evaluărilor și n este numărul evaluărilor, am putea lua în considerare ceva de genul:

$$rating(m, n) = {mn \over {n+K}}$$

Acest lucru va funcționa probabil foarte bine. Probabil … totuși trebuie să alegeți K-ul potrivit fără să știți la ce valori fizice se referă. Mai important, va trebui să-ți convingi colegul că aceasta este soluția frumoasă care va acoperi perfect cazurile de margine.

Bayesian estimation crash course

marea idee este că, în loc să încercăm să calculăm direct estimarea noastră, mai întâi calculăm o distribuție de probabilitate care descrie “ceea ce știm” despre valoarea pe care vrem să o estimăm și apoi (și numai atunci) putem extrage o estimare a acestei valori care se potrivește scopului nostru.

separarea îngrijorării în acea ultimă parte este de fapt destul de importantă. În funcție de punctul dvs. de vedere, puteți considera o valoare foarte diferită ca estimări ale unei valori fizice.

de exemplu, dacă trebuie să estimez numărul de seruri pe care un guvern trebuie să le cumpere pentru a face față unei epidemii, voi dori să ofer o cifră pentru care pot spune : Sunt sigur la 90% că acest lucru va fi suficient. Această cifră poate fi uneori foarte departe de așteptări. Dacă de fapt lucrez ca în contabilitate în compania care vinde acele seruri și vreau să-mi fac o idee despre o limită mai mică pentru venitul meu pentru luna viitoare, probabil că voi lua o cuantilă total diferită.

un exemplu simplu

Să presupunem că tocmai ați descoperit un parazit numit toxoplasmoză și doriți să estimați raportul $X$ al persoanelor infectate de un parazit numit toxoplasmoză.

pacienții umani infectați de parazit nu prezintă deloc simptome, așa că, din câte știți, ar putea fi orice. Am putea descrie viziunea dvs. asupra distribuției probabilității acestei valori ca fiind o distribuție uniformă. .

vorbind despre probabilitate aici s-ar putea simți un pic ciudat.În primul rând, este legitim să vorbim despre probabilitate atunci când estimăm ceva o valoare foarte tangibilă, non-aleatorie? În termeni de probabilitate Bayesiană, o variabilă este aleatorie dacă nu îi cunoașteți exact valoarea. Este o informație care rezumă cunoștințele noastre despre ceva.

dar să revenim la problema noastră. Pe măsură ce testați oamenii pentru toxoplasmoză, veți face observații.Fiecare persoană va avea o probabilitate X de a avea toxoplasmoză și doriți să estimați acest lucru foarte X. să presupunem că după ce ați văzut persoane $n$, ați detectat k persoane cu toxoplasmoză.

ați început cu o probabilitate prealabilă uniformă și fiecare observație vă va îndoi viziunea pe X, făcând-o din ce în ce mai precisă.Această viziune actualizată a lui X se numește distribuția sa posterioară.NumimO (ca în observație) secvența rezultatelor testelor noastre N.

Bayes oferă o mică formulă pentru a o calcula

 $$P(X | O) = { P( O | X) P(X) \over { P(O)} }$$

$p(O)$ este probabilitatea de a observa ceea ce am observat. Este constant cu X și, prin urmare, de puțin interes. De asemenea, am ales probabilitatea noastră anterioară $P(X)$ să fie uniformă și, prin urmare, nu variază cu X. suntem interesați doar de relația de proporționalitate :

 $$ P(X | O) \propto P( O | X) $$
$$P( O x)$$ se numește Probabilitatea. Se dă x (valoarea pe care o căutăm) probabilitatea de a observa ceea ce am observat. Asta e, de obicei, ceva destul de simplu pentru a calcula.

în cazul nostru, probabilitatea de a observa secvența de observații independente

 $$ O = ({o_1}, ..., {o_N}) $$

este dată prin înmulțirea probabilității fiecărei observații:

 $$ P(O | X) = P({o_1}| X) \times ... \times P({o_N} | X) $$

pentru o singură observație, probabilitatea de a observa oi pozitiv (respectiv negativ) este prin definiție x (respectiv 1-x). În cele din urmă, dacă observăm k pozitiv și n-k negativ probabilitatea posterioară este

 $$ P(X | O) \propto X^{K}(1-X)^{N-K} $$

această distribuție se mai numește distribuție binomială.

este interesant să vedem cum evoluează probabilitatea posterioară cu numărul de observații. Graficul de mai jos arată cum posteriorul devine din ce în ce mai rafinat cu numărul de observații pe care le obținem.

acum că avem probabilitatea exactă, am putea lua în considerare calculul oricărui tip de estimare din această distribuție. Probabil că cea mai comună ieșire ar fi calcularea unui interval de încredere : un interval pentru care putem pretinde cu o încredere de 90% valoarea noastră se află undeva între a și b.

În zilele noastre, toată lumea are un computer și probabil cel mai simplu mod de a produce un astfel de interval de încredere este probabil să calculăm funcția de distribuție cumulativă a acestei distribuții.

o mulțime de statisticieni au lucrat, de asemenea, la găsirea unor intervale de încredere foarte precise pentru distribuțiile binomiale atunci când aproximarea normală nu este valabilă. Poate doriți să verificați această pagină wikipedia dacă doriți să utilizați una dintre aceste formule.

înapoi la stele

să ne întoarcem la rating stele! În această secțiune, pentru simplificare vom lua în considerare o gamă de 1, 2 sau 3 stele. Vom încerca să estimăm, având în vedere răspunsul oamenilor, distribuția posterioară a proporției de oameni care i-ar da respectiv 1,2 , sau 3 stele, dacă am avea șansa de a cere un număr infinit de oameni.

variabila aleatorie pe care o observăm urmează o așa-numită distribuție categorică. Aceasta este practic o variabilă care își ia valorile în {1,2,3} cu unele probabilități p1, p2, p3 cu

$$ {p_1} + {p_2} + {p_3} = 1 $$

ceea ce face mai greu este că nu ne uităm la distribuția unei valori scalare, ci la distribuția comună a trei valori scalare (sau mai degrabă două având în vedere constrângerea liniară).

totuși, putem aplica același raționament ca și cu estimarea unei singure probabilități:

 $$ P({p_1}, {p_2}, {p_3} | O) \propto P( O | {p_1}, {p_2}, {p_3}) P({p_1}, {p_2}, {p_3}) $$

de data aceasta vom include totuși un prior. Pentru a simplifica calculele, este întotdeauna o idee bună să alegeți un prior care să aibă aceeași formă ca probabilitatea. Să calculăm mai întâi probabilitatea.

la fel ca în exemplul nostru anterior estimarea parametrilor, putem folosi independența observației noastre.

 $$ P(O | {p_1}, {p_2}, {p_3}) = P({o_1}| {p_1}, {p_2}, {p_3}) \times \cdots \times P({o_N} | {p_1}, {p_2}, {p_3}) $$

și probabilitatea fiecărei observații individuale este dată de probabilitatea asociată

 $$\forall j \in \{1,2,3\}, ~~ \forall 1\leq i \leq N, ~~P( {o_i = j} | {p_1}, {p_2}, {p_3}) = {p_j} $$

prin urmare, dacă în n recenzii pe care le-am primit au existat recenzii K1, K2, K3 cu respectiv 1,2 și 3 stele, avem o probabilitate de

 $$ P(O | {p_1}, {p_2}, {p_3}) = {p_1}^{K_1} {p_2}^{K_2} {p_3}^{K_3} $$

care se numește distribuție Dirichlet cu parametrul

 $$ \alpha = \left( \begin{array}{c} {K_1} + 1 \\ {K_2} + 1 \\ {K_3} + 1 \end{array} \right) $$

pentru a face matematica mult mai simplă, să luăm în considerare un prior cu aceeași formă și parametrul alpha0.

posteriorul, este proporțional cu

 $$ P({p_1}, {p_2}, {p_3} | O) \propto { {p_1}^{K_1} } { {p_2}^{K_2} } { {p_3}^{K_3} } { {p_1}^{ {\alpha_1^0} - 1 } } { {p_2}^{ {\alpha_2^0} - 1 } } { {p_3}^{ {\alpha_3^0} - 1 } } $$

pe care îl putem factoriza în

 $$ P({p_1}, {p_2}, {p_3} | O) \propto { {p_1}^{ {K_1} + {\alpha_1^0} - 1 } } { {p_2}^{ {K_2} + {\alpha_2^0} - 1 } } { {p_3}^{ {K_3} + {\alpha_3^0} - 1 } }. $$

în care vedem o distribuție dirichlet cu parametrul

 $$ {\alpha^1} = \left( \begin{array}{c} {K_1} + \alpha_1^0 \\ {K_2} + \alpha_2^0 \\ {K_3} + \alpha_3^0 \end{array} \right) $$

acum, ceea ce ne dorim cu adevărat este un estimarea numărului mediu de stele. Să luăm în considerare utilizarea speranței acestei medii, având în vedere posteriorul nostru.

 $$ E( {p_1} + 2{p_2} + 3{p_3} | O ) = E( {p_1} | O ) + 2 E({p_2} | O ) + 3E({p_3} | O ) $$

speranța probabilității de a obține 1,2 sau 3 Număr de stele este dată de distribuția dirichlet

 $$ E(p_i | O) = { {\alpha_i^1} \over { {\alpha_1^1} + {\alpha_2^1} + {\alpha_3^1} } } $$

avem deci pentru media bayesiană :

 $$ rating({K_1}, {K_2}, {K_3}) = \frac{ {K_1} + \alpha_1^0}{ N + A} + 2 \frac{ {K_2} + \alpha_2^0}{ N + A} + 3 \frac{ {K_3} + \alpha_3^0}{ N + A}, $$

unde definim

 $$ N = {K_1} + {K_2} + {K_3}~~and~~A = {\alpha_1^0} + {\alpha_2^0} + {\alpha_3^0} $$

putem regrupa acest lucru ca

 $$ rating({K_1}, {K_2}, {K_3}) = \frac{ \left(\alpha_1^0 + 2 \alpha_2^0 + 3 \alpha_3^0 \right) + \left({K_1} + 2{K_2} + 3{K_3}\right) }{A + N} $$

voil inkt ! Să digerăm această formulă pentru a o face ceva utilizabil în viața reală. Media bayesiană pentru evaluarea stelelor ar consta în alegerea unui parametru C și m în care

  • m reprezintă un prior pentru media stelelor
  • C reprezintă cât de încrezători suntem în prior. Este echivalent cu o serie de observații.

atunci media bayesiană va fi

 $$ rating({K_1}, {K_2}, {K_3}) = \frac{ C \times m + total~number~of~stars }{C + number~of~reviews } $$

Dacă aveți datele relevante și timpul infinit, puteți seta aceste două valori prin montarea unei distribuții Dirichlet pe setul de date al evaluărilor tuturor cărților dvs. de computer. Cu toate acestea, este foarte obișnuit să alegeți doar o pereche de parametri care imită comportamentul pe care îl căutăm. m este valoarea spre care vom ajusta revizuirea medie a produselor cu foarte puține recenzii. Cu cât C este mai mare, cu atât este mai mare numărul de recenzii necesare pentru a “scăpa de m”.

Să aruncăm acum o privire la primul nostru exemplu. Două valori posibile ar putea fi, de exemplu, m=3 și C=5.

mediile bayesiene pentru cele două cărți devin

 $$ {rating_{book~A}} = \frac{5 \times 3 + 5 \times 1}{ 5 + 1 } = 3.3 $$ $$ {rating_{book~B}} = \frac{5 \times 3 + 4.5 \times 50 }{ 5 + 50 } = 4.36 $$

după cum era de așteptat, Cartea 2 are o medie bayesiană mai bună decât cartea 1.

Lasă un răspuns

Adresa ta de email nu va fi publicată.