projekt

Mars 17, 2013

E-handel (ibland) gör det fel

de flesta e-handelswebbplatser erbjuder dig att sortera dina sökresultat efter kundbetyg… och en hel del gör det fel. Låt oss anta att jag letar efter en bok om CSS. Jag vill få den bästa boken pengar kan köpa, så jag kommer definitivt att trycka på knappen Sortera efter betyg. Webbplatsen erbjuder två alternativ

  • boka a: 1 betyg av 5. Medelbetyg på 5.
  • bok B: 50 betyg. Medelbetyg på 4.5

Tänk på det, skulle du hellre ha bok A come first of book Bcome first. Förmodligen bok B rätt? Det betyder att vi behöver några sakermartare än att bara Sortera efter genomsnittligt betyg.

ett första enkelt svar, vilket definitivt skulle vara en förbättring jämfört med sortering efter genomsnittligt betyg kan vara att sätta produkt med mindre än k-betyg längst ner. Men då, hur man väljer k? Vad händer om vi letar efter en nisch och alla produkter har mindre än k betyg utom en, som har en K+1 hemska betyg. Ska det gå på toppen ?

ett andra svar du kan komma fram till skulle vara att välja en empirisk poängformel som verkar matcha våra begränsningar.

de flesta av formlerna där ute är beroende av Bayesian uppskattning. Generellt sett skiner Bayesian estimation verkligen på denna typ av situation : du vill mäta något, men du vet att du inte har tillräckligt med data för att nå en perfekt uppskattning.

om m är medelvärdet av betyg och n är antalet betyg, kan vi överväga något som :

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

detta kommer förmodligen att fungera bra. Förmodligen … fortfarande måste du välja rätt K utan att veta vilka fysiska värden det gäller. Ännu viktigare måste du övertyga din kollega om att det här är den fina lösningen som täcker kantfallen perfekt.

Bayesian estimation crash course

den stora tanken är, snarare än att försöka direkt beräkna vår uppskattning, först beräknar vi en sannolikhetsfördelning som beskriver “vad vi vet” av det värde vi vill uppskatta, och då (och först då) kan vi extrahera en uppskattning av detta värde som passar vårt syfte.

separationen av oro i den sista biten är faktiskt ganska viktig. Beroende på din synvinkel kan du överväga mycket olika värde som uppskattningar av ett fysiskt värde.

om jag till exempel behöver uppskatta antalet serum som en regering behöver köpa för att klara en epidemi, vill jag leverera en siffra som jag kan säga : Jag är säker på 90% att detta kommer att vara tillräckligt. Den siffran kan ibland vara väldigt långt ifrån förväntan. Om jag faktiskt arbetar som i redovisning i företaget som säljer dessa serum, och jag vill få en uppfattning om en lägre gräns för min inkomst för nästa månad, kommer jag förmodligen att ta en helt annan kvantil.

ett enkelt exempel

låt oss anta att du just upptäckt en parasit som heter toxoplasmos och du vill uppskatta förhållandet $X$ av de personer som smittats av en parasit som kallas toxoplasmos.

mänskliga patienter infekterade av parasiten visar inga symptom alls, så du är söt så långt du vet att det kan vara någonting. Vi kan beskriva din vision om sannolikhetsfördelningen av detta värde för att vara en enhetlig fördelning. .

att prata om Sannolikhet här kan kännas lite konstigt.Först och främst är det legitimt att prata om sannolikhet när vi uppskattar något ett mycket konkret, icke-slumpmässigt värde? När det gäller Bayesian sannolikhet är en variabel slumpmässig om du inte vet dess värde exakt. Det är en information som sammanfattar vår kunskap om något.

men låt oss komma tillbaka till vårt problem. När du testar människor för toxoplasmos kommer du att göra observationer.Varje person kommer att ha en sannolikhet X att ha toxoplasmos, och du vill uppskatta detta mycket X. låt oss anta att du efter att ha sett $n$ personer upptäckte k-personer med toxoplasmos.

du började med en enhetlig tidigare sannolikhet, och varje observation kommer att böja din vision på X, vilket gör det mer och mer exakt.Denna uppdaterade vision av X kallas dess bakre fördelning.Vi kallar O (som i observation) sekvensen av resultat från våra n-test.

Bayes levererar en liten formel för att beräkna den

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

$P(O)$ är sannolikheten för att observera vad vi observerade. Det är konstant med X, och därför av lite intresse. På samma sätt valde vi vår tidigare Sannolikhet $P(X)$ för att vara enhetlig och det varierar därför inte med X. Vi är bara intresserade av proportionalitetsförhållandet :

 $$ P(X | O) \propto P( O | X) $$
$$P( O X)$$ kallas sannolikheten. Det ges X (det värde vi letar efter) sannolikheten för att observera det vi observerade. Det är vanligtvis något ganska enkelt att beräkna.

i vårt fall ges sannolikheten för att observera sekvensen av oberoende observationer

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

genom att multiplicera sannolikheten för varje observation :

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

för en enda observation är sannolikheten att observera oi positiv (respektive negativ) per definition X (respektive 1-x). I slutändan, om vi observerar K-positiva och N-k-negativa är den bakre sannolikheten

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

denna fördelning kallas också binomialfördelning.

det är intressant att se hur den bakre sannolikheten utvecklas med antalet observationer. Diagrammet nedan visar hur den bakre blir mer och mer förfinad med antalet observationer vi får.

Nu när vi har den exakta sannolikheten kan vi överväga att beräkna någon form av uppskattningar från denna distribution. Förmodligen skulle den vanligaste produktionen vara att beräkna ett konfidensintervall: ett intervall som vi kan hävda med ett förtroende på 90% Ligger vårt värde någonstans mellan a och b.

numera har alla en dator och förmodligen är det enklaste sättet att producera ett sådant konfidensintervall förmodligen att beräkna den kumulativa distributionsfunktionen för denna distribution.

många statistiker arbetade också med att hitta mycket exakta konfidensintervall för binomialfördelningar när den normala approximationen inte håller. Du kanske vill söka efter den här wikipedia-sidan om du vill använda en av dessa formler.

tillbaka till stjärnorna

Låt oss gå tillbaka till stjärnklassificeringar! I det här avsnittet kommer vi att överväga ett intervall på 1, 2 eller 3 stjärnor för förenkling. Vi kommer att försöka uppskatta, med tanke på människors svar, den bakre fördelningen av andelen människor som skulle ge det respektive 1,2 eller 3 stjärnor , om vi hade chansen att fråga ett oändligt antal människor.

den slumpmässiga variabeln vi observerar följer en så kallad kategorisk fördelning. Det är i grunden en variabel som tar sina värden inom {1,2,3} med några sannolikheter p1, p2, p3 med

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

det som gör det svårare är att vi inte tittar på fördelningen av ett skalärt värde, men den gemensamma fördelningen av tre skalära värden (eller snarare två med tanke på den linjära begränsningen).

ändå kan vi tillämpa samma resonemang som vi gjorde med uppskattningen av en enda Sannolikhet :

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

den här gången kommer vi dock att inkludera en prior. För att förenkla beräkningarna är det alltid bra att välja en prior som har samma form som sannolikheten. Låt oss först beräkna sannolikheten.

precis som i vår tidigare exempelparameteruppskattning kan vi använda oberoende av vår observation.

 $$ 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}) $$

och sannolikheten för varje enskild observation ges av den associerade sannolikheten

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

därför om inom N-recensionerna vi fick var K1, K2, K3 recensioner med respektive 1,2 och 3 stjärnor, har vi en sannolikhet för

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

som kallas en Dirichlet-distribution med parameter

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

för att göra matten mycket enklare, låt oss överväga en prior med samma form och parameter alpha0.

den bakre, är proportionell mot

 $$ 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 } } $$

som vi kan faktorisera till

 $$ 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 } }. $$

där vi ser en Dirichlet-distribution med parameter

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

nu vad vi verkligen vill ha är en uppskattning av det genomsnittliga antalet stjärnor. Låt oss överväga användningen av förväntningen av detta genomsnitt, med tanke på vår bakre del.

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

förväntningen av sannolikheten för att få 1,2 eller 3 Antal stjärnor ges av Dirichlet-fördelningen

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

Vi har därför för vårt Bayesian-genomsnitt :

 $$ 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}, $$

där vi definierar

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

vi kan omgruppera det som

 $$ 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 XHamster ! Låt oss bara smälta denna formel för att göra den till något användbart i verkligheten. Bayesian genomsnitt för stjärnor skulle bestå av att välja någon parameter C och m där

  • m representerar en prior för genomsnittet av stjärnorna
  • C representerar hur säker vi i vår prior. Det motsvarar ett antal observationer.

då blir det bayesiska genomsnittet

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

Om du har relevant data och oändlig tid kan du ställa in dessa två värden genom att montera en Dirichlet-distribution på datauppsättningen för betyg för alla dina datorböcker. Det är dock mycket vanligt att bara välja ett par parametrar som efterliknar det beteende vi letar efter. m är det värde mot vilket vi kommer att justera den genomsnittliga översynen av produkter med mycket få recensioner. Ju större C är, desto högre antal recensioner krävs för att “komma bort från m”.

Låt oss nu ta en titt på vårt första exempel. Två möjliga värden kan till exempel vara m=3 och C=5.

de bayesiska medelvärdena för de två böckerna blir

 $$ {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 $$

som förväntat har Bok 2 ett bättre bayesiskt medelvärde än Bok 1.

Lämna ett svar

Din e-postadress kommer inte publiceras.