projekter

marts 17, 2013

E-handel (nogle gange) gør det forkert

de fleste e-handel hjemmesider tilbyder dig at sortere dine søgeresultater efter kundebedømmelser… og en hel del gør det forkert. Lad os antage, at jeg her leder efter en bog om CSS. Jeg ønsker at få den bedste bog penge kan købe, så jeg vil helt sikkert ramt knappen Sorter efter rating. Hjemmesiden tilbyder to muligheder

  • book a : 1 bedømmelse af 5. Gennemsnitlig bedømmelse på 5.
  • bog B: 50 vurderinger. Gennemsnitlig bedømmelse på 4.5

tænk over det, vil du hellere have book a come first of book Bcome first. Sandsynligvis bog B rigtigt? Det betyder, at vi har brug for nogle tingarter end bare at sortere efter gennemsnitlig vurdering.

et første simpelt svar, som helt sikkert ville være en forbedring i forhold til sortering efter gennemsnitlig bedømmelse, kan være at sætte produkt med mindre end k ratings i bunden. Men så, hvordan man vælger k? Hvad hvis vi leder efter en niche, og alle produkter har mindre end k-ratings undtagen en, som har en K+1 forfærdelige ratings. Skal det gå på toppen ?

et andet svar, du måske kommer op til, ville være at vælge en empirisk scoringsformel, der synes at matche vores begrænsninger.

de fleste af formlerne derude er afhængige af Bayesian estimation. Generelt set skinner Bayesian estimation virkelig på denne slags situation : du vil måle noget, men du ved, at du ikke har nok data til at nå et perfekt estimat.

Hvis m er gennemsnittet af ratings og n er antallet af ratings, kan vi overveje noget som:

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

dette vil nok fungere fint. Sandsynligvis … stadig skal du vælge den rigtige K uden at vide, hvilke fysiske værdier det vedrører. Endnu vigtigere bliver du nødt til at overbevise din kollega om, at dette er den dejlige løsning, der dækker kantsagerne perfekt.

Bayesian estimation crash course

den store ide er, snarere end at forsøge at beregne vores estimat direkte, først beregner vi en sandsynlighedsfordeling, der beskriver “hvad vi ved” af den værdi, vi vil estimere, og derefter (og først da) kan vi udtrække et skøn over denne værdi, der passer til vores formål.

adskillelsen af bekymring i den sidste bit er faktisk ret vigtig. Afhængigt af dit synspunkt kan du overveje meget forskellige værdi som skøn over en fysisk værdi.

for eksempel, hvis jeg skal estimere antallet af serum, som en regering skal købe for at klare en epidemi, vil jeg gerne levere et tal, som jeg kan sige : Jeg er sikker på 90%, at dette vil være tilstrækkeligt. Dette tal kan undertiden være meget langt væk fra forventningen. Hvis jeg rent faktisk arbejder som i regnskab i virksomheden, der sælger disse serum, og jeg vil gerne få en ide om en lavere grænse for min indkomst for næste måned, vil jeg nok tage en helt anden kvantile.

et simpelt eksempel

lad os antage, at du lige har opdaget en parasit kaldet toksoplasmose, og du vil estimere forholdet $$ af de mennesker, der er inficeret af en parasit kaldet toksoplasmose.

humane patienter inficeret af parasitten viser slet ingen symptomer, så du er smuk, så vidt du ved, kan det være noget. Vi kan beskrive din vision om sandsynlighedsfordelingen af denne værdi for at være en ensartet fordeling. .

at tale om sandsynlighed her kan føles lidt underligt.Først og fremmest er det legitimt at tale om sandsynlighed, når vi estimerer noget en meget håndgribelig, ikke-tilfældig værdi? Med hensyn til Bayesian sandsynlighed er en variabel tilfældig, hvis du ikke kender dens værdi nøjagtigt. Det er et stykke information, der opsummerer vores viden om noget.

men lad os komme tilbage til vores problem. Når du tester folk for toksoplasmose, vil du foretage observationer.Hver person vil have en sandsynlighed X for at have toksoplasmose, og du vil estimere dette meget.

du startede med en ensartet forudgående sandsynlighed, og hver observation vil bøje dit syn på H, hvilket gør det mere og mere præcist.Denne opdaterede vision af H kaldes dens bageste fordeling.Vi kalder O (som i observation) sekvensen af resultater af vores N-test.

Bayes leverer en lille formel til at beregne den

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

$P(O)$ er sandsynligheden for at observere det, vi observerede. Det er konstant med K, og derfor af ringe interesse. Vi er kun interesserede i proportionalitetsforholdet :

 $$ P(X | O) \propto P( O | X) $$

$kaldes sandsynligheden. Det er givet H (den værdi, vi leder efter) sandsynligheden for at observere det, vi observerede. Det er normalt noget ret ligetil at beregne.

$$ P(O

i vores tilfælde er sandsynligheden for at observere sekvensen af uafhængige observationer

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

gives ved at multiplicere sandsynligheden for hver observation :

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

for en enkelt observation er sandsynligheden for at observere Oi-positiv (henholdsvis negativ) PR. I sidste ende, hvis vi observerer k positive og N-K negative, er den bageste Sandsynlighed

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

denne fordeling kaldes også binomial fordeling.

det er interessant at se, hvordan den bageste Sandsynlighed udvikler sig med antallet af observationer. Grafen nedenfor viser, hvordan den bageste bliver mere og mere raffineret med antallet af observationer, vi får.

nu hvor vi har den nøjagtige sandsynlighed, kan vi overveje at beregne enhver form for estimater fra denne fordeling. Formentlig den mest almindelige output ville være at beregne et konfidensinterval: et interval, som vi kan hævde med en tillid på 90%, ligger vores værdi et sted mellem A og b.

I dag har alle en computer, og sandsynligvis er den enkleste måde at producere et sådant konfidensinterval sandsynligvis at beregne den kumulative fordelingsfunktion for denne distribution.

mange statistikere arbejdede også på at finde meget nøjagtige konfidensintervaller for binomiale fordelinger, når den normale tilnærmelse ikke holder. Du vil måske tjekke for denne side, hvis du vil bruge en af disse formler.

tilbage til stjernerne

lad os gå tilbage til stjernebedømmelser! I dette afsnit vil vi for forenkling overveje en række 1, 2 eller 3 stjerner. Vi vil forsøge at estimere, givet folks svar, den bageste fordeling af andelen af mennesker , der ville give det henholdsvis 1,2 eller 3 stjerner, hvis vi havde chancen for at spørge et uendeligt antal mennesker.

den tilfældige variabel, vi observerer, følger en såkaldt kategorisk fordeling. Det er dybest set en variabel, der tager sine værdier inden for {1,2,3} med nogle sandsynligheder p1, p2, p3 med

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

hvad der gør det sværere er, at vi ikke ser på fordelingen af en skalær værdi, men den fælles fordeling af tre skalære værdier (eller rettere to i betragtning af den lineære begrænsning).

alligevel kan vi anvende den samme begrundelse som vi gjorde med estimeringen af en enkelt Sandsynlighed:

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

denne gang vil vi dog inkludere en prior. For at forenkle beregninger er det altid en god ide at vælge en prior, der har samme form som sandsynligheden. Lad os først beregne sandsynligheden.

ligesom i vores tidligere eksempelparameterestimering kan vi bruge uafhængigheden af vores 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}) $$

og sandsynligheden for hver enkelt observation er givet af den tilknyttede Sandsynlighed

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

derfor, hvis der inden for de n anmeldelser, vi modtog, var henholdsvis K1, K2, K3 anmeldelser med henholdsvis 1,2 og 3 stjerner, har vi en sandsynlighed for

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

som kaldes en Dirichlet-distribution med parameter

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

for at gøre matematikken meget enklere, lad os overveje en prior med den samme form og parameter alpha0.

den bageste, er proportional med

 $$ 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 faktorisere i

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

hvor 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 er det, vi virkelig ønsker, 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 er det, vi virkelig ønsker, en Dirichlet-distribution med skøn over det gennemsnitlige antal stjerner. Lad os overveje brugen af forventningen til dette gennemsnit, givet vores bageste.

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

forventningen af sandsynligheden for at få 1,2 eller 3 Antal stjerner er givet af Dirichlet-fordelingen

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

Vi har derfor for vores Bayesianske gennemsnit:

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

hvor vi definerer

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

Vi kan omgruppere 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 Kristian ! Lad os bare fordøje denne formel for at gøre det til noget brugbart i det virkelige liv. Bayesian gennemsnit for stjerneklassificering ville bestå i at vælge en parameter C og m, hvor

  • m repræsenterer en prior for gennemsnittet af stjernerne
  • C repræsenterer, hvor sikker vi er i vores prior. Det svarer til en række observationer.

så vil det bayesiske gennemsnit være

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

Hvis du har de relevante data og uendelig tid, kan du indstille disse to værdier ved at montere en Dirichlet-distribution på datasættet for klassificeringerne af alle dine computerbøger. Det er dog meget almindeligt at bare vælge et par parametre, der efterligner den adfærd, vi leder efter. m er den værdi, som vi vil justere den gennemsnitlige gennemgang af produkter med meget få anmeldelser. Jo større C er, jo højere er antallet af anmeldelser, der kræves for at”komme væk fra m”.

lad os nu se på vores første eksempel. To mulige værdier kan for eksempel være m=3 og C=5.

de bayesiske gennemsnit for de to bøger bliver

 $$ {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 forventet har Bog 2 et bedre bayesisk gennemsnit end Bog 1.

Skriv et svar

Din e-mailadresse vil ikke blive publiceret.