projecten

17 maart 2013

E-Commerce (soms) doet het verkeerd

De meeste e-commerce websites bieden u aan om uw zoekresultaten te sorteren op klantbeoordelingen… en heel veel doen het verkeerd. Laten we aannemen dat ik hier op zoek ben naar een boek over CSS. Ik wil het beste boek dat geld kan kopen krijgen, dus Ik zal zeker op de knop Sorteren op waardering drukken. De website biedt twee opties

  • boek A: 1 rating van 5. Gemiddelde beoordeling van 5.
  • boek B: 50 beoordelingen. Gemiddelde waardering van 4.5

denk er eens over na, zou u liever boek A come first van boek Bcome first hebben. Waarschijnlijk boek B, toch? Dat betekent dat we een aantal dingen nodig hebben dan alleen Sorteren op gemiddelde waardering.

een eerste eenvoudig antwoord, dat zeker een verbetering zou zijn in vergelijking met Sorteren op gemiddelde waardering, zou kunnen zijn om product met minder dan k-ratings onderaan te plaatsen. Maar dan, hoe k te kiezen? Wat als we op zoek zijn naar een niche en alle producten hebben minder dan k ratings behalve een, die een K+1 vreselijke ratings heeft. Moet het bovenop?

een tweede antwoord zou kunnen zijn om een empirische scoreformule te kiezen die lijkt te voldoen aan onze beperkingen.

De meeste formules die er zijn, zijn gebaseerd op Bayesiaanse schatting. In het algemeen, Bayesiaanse schatting echt schittert op dit soort situaties : je wilt iets meten, maar je weet dat je niet genoeg gegevens om een perfecte schatting te bereiken.

als m Het gemiddelde van de waarderingen is en n het nummer van de waarderingen is, kunnen we iets als :

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

Dit zal waarschijnlijk prima werken. Waarschijnlijk … moet je nog steeds de juiste K kiezen zonder te weten met welke fysieke waarden het verband houdt. Belangrijker is dat u uw collega ervan moet overtuigen dat dit de mooie oplossing is die de randgevallen perfect dekt.

Bayesian estimation crash course

het grote idee is, in plaats van direct te proberen onze schatting te berekenen, eerst een kansverdeling te berekenen die “wat we weten” beschrijft van de waarde die we willen schatten, en dan (en alleen dan) kunnen we een schatting van deze waarde extraheren die bij ons doel past.

de scheiding van zorg in dat laatste bit is eigenlijk heel belangrijk. Afhankelijk van uw standpunt kunt u zeer verschillende waarde beschouwen als schattingen van een fysieke waarde.

bijvoorbeeld, als ik het aantal serums moet schatten dat een overheid moet kopen om een epidemie het hoofd te bieden, zal ik een cijfer willen leveren waarvoor ik kan zeggen : Ik ben er zeker van dat dit bij 90% voldoende zal zijn. Dat cijfer kan soms heel ver van de verwachting zijn. Als ik eigenlijk werk als in de boekhouding in het bedrijf dat die serums verkoopt, en Ik wil een idee van een ondergrens voor mijn inkomen voor volgende maand te krijgen, zal ik waarschijnlijk een totaal andere kwantiel nemen.

een eenvoudig voorbeeld

laten we aannemen dat u zojuist een parasiet genaamd toxoplasmose heeft ontdekt en u wilt de verhouding $X$ schatten van de mensen die geïnfecteerd zijn door een parasiet genaamd toxoplasmose.

menselijke patiënten die geïnfecteerd zijn door de parasiet vertonen helemaal geen symptomen, dus je bent mooi voor zover je weet kan het van alles zijn. We kunnen uw visie op de kansverdeling van deze waarde beschrijven als een uniforme verdeling. .

praten over waarschijnlijkheid hier kan een beetje raar voelen.Ten eerste is het legitiem om over waarschijnlijkheid te praten als we iets een zeer tastbare, niet-willekeurige waarde schatten? In termen van Bayesiaanse waarschijnlijkheid, is een variabele willekeurig als je de waarde niet precies weet. Het is een stukje informatie dat onze kennis over iets samenvat.

maar laten we teruggaan naar ons probleem. Als je mensen test op toxoplasmose, zul je observaties maken.Elke persoon zal een waarschijnlijkheid hebben X om toxoplasmose te hebben, en u wilt dit precies schatten X. laten we aannemen dat u na het zien van $n$ personen k-mensen met toxoplasmose heeft gedetecteerd.

u begon met een uniforme voorafgaande waarschijnlijkheid, en elke waarneming zal uw zicht op X buigen, waardoor het steeds nauwkeuriger wordt.Deze bijgewerkte visie van X wordt de posterieure verdeling genoemd.We noemen O (zoals in observatie) de volgorde van de resultaten van onze N-tests.

Bayes levert een kleine formule om het te berekenen

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

$P(O)$ is de kans om te observeren wat we waargenomen hebben. Het is constant met X, en daarom van weinig belang. Op dezelfde manier kozen we onze eerdere waarschijnlijkheid $P(X)$ om uniform te zijn en het verschilt daarom niet met X. We zijn alleen geïnteresseerd in de proportionaliteit relatie :

 $$ P(X | O) \propto P( O | X) $$
$$p( O X)$$ wordt de waarschijnlijkheid genoemd. Het wordt gegeven X (de waarde die we zoeken) de kans om te observeren wat we waargenomen. Dat is meestal iets vrij eenvoudig te berekenen.

In ons geval, de kans dat de volgorde van onafhankelijke waarnemingen

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

gegeven is door vermenigvuldiging van de waarschijnlijkheid van iedere observatie :

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

Voor een enkele waarneming, de kans om te observeren oi positief (of negatief) is per definitie X (respectievelijk 1-X). Uiteindelijk, als we K positief waarnemen, en N-k negatief, is de posterieure waarschijnlijkheid

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

deze verdeling wordt ook binomiale verdeling genoemd.

Het is interessant om te zien hoe de posterieure waarschijnlijkheid evolueert met het aantal waarnemingen. De grafiek hieronder laat zien hoe het achterste meer en meer verfijnd wordt met het aantal waarnemingen dat we krijgen.

nu we de exacte waarschijnlijkheid hebben, kunnen we overwegen om schattingen uit deze distributie te berekenen. De meest voorkomende output zou zijn om een betrouwbaarheidsinterval te berekenen : een interval waarvoor we met een betrouwbaarheidsinterval van 90% kunnen beweren dat onze waarde ergens tussen a en b ligt.

tegenwoordig heeft iedereen een computer en waarschijnlijk is de eenvoudigste manier om een dergelijk betrouwbaarheidsinterval te produceren waarschijnlijk om de cumulatieve verdelingsfunctie van deze distributie te berekenen.

veel statistici werkten ook aan het vinden van zeer nauwkeurige betrouwbaarheidsintervallen voor binomiale distributies wanneer de normale benadering niet stand houdt. Je zou kunnen controleren op deze wikipedia pagina als u een van deze formules wilt gebruiken.

terug naar de sterren

laten we teruggaan naar de sterrenwaarderingen! In deze sectie, voor vereenvoudiging zullen we overwegen een bereik van 1, 2, of 3 sterren. We zullen proberen te schatten, gegeven het antwoord van mensen, de posterieure verdeling van het aantal mensen dat het zou geven respectievelijk 1,2 , of 3 sterren, als we de kans hadden om een oneindig aantal mensen te vragen.

De willekeurige variabele die we waarnemen volgt een zogenaamde categorische verdeling. Dat is in principe een variabele die zijn waarden neemt binnen {1,2,3} met een aantal waarschijnlijkheden p1, p2, p3 met

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

wat het moeilijker maakt is dat we niet kijken naar de verdeling van een scalaire waarde, maar de gezamenlijke verdeling van drie scalaire waarden (of liever twee gezien de lineaire beperking).

toch kunnen we dezelfde redenering toepassen als bij de schatting van een enkele waarschijnlijkheid :

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

Deze keer zullen we echter een prior opnemen. Om berekeningen te vereenvoudigen, is het altijd een goed idee om een prior te kiezen die dezelfde vorm heeft als de waarschijnlijkheid. Laten we eerst de waarschijnlijkheid berekenen.

net als in ons vorige voorbeeld parameterschatting, kunnen we de onafhankelijkheid van onze waarneming gebruiken.

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

En de waarschijnlijkheid van elke individuele waarneming is gegeven door de bijbehorende waarschijnlijkheid

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

Dus als binnen de N-beoordelingen wij ontvangen er werd respectievelijk K1, K2, K3 beoordelingen met respectievelijk 1,2 en 3 sterren we hebben een kans van

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

Dat is wel een Dirichlet-verdeling met parameter

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

om de wiskunde veel eenvoudiger, laten we er een voorafgaand met de zeer dezelfde vorm, en parameter alpha0.

de posterieure, is proportioneel aan

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

welke we kunnen factoriseren in

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

waarin we een Dirichlet distributie zien met 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) $$

wat we nu echt willen is een schatting van het gemiddelde aantal ster. Laten we eens kijken naar het gebruik van de verwachting van dit gemiddelde, gezien onze posterieure.

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

De verwachting van de kans van het krijgen van 1,2, of 3 aantal sterren is gegeven door de dirichlet distributie

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

daarom hebben We voor onze bayes gemiddelde :

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

waar we definiëren

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

Wij kunnen hergroeperen dat

 $$ 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à ! Laten we deze formule gewoon verteren om er iets bruikbaars van te maken in het echte leven. Bayesiaans gemiddelde voor sterrenclassificatie zou bestaan uit het kiezen van een parameter C en m waarin

  • m een prior vertegenwoordigt voor het gemiddelde van de sterren
  • C aangeeft hoe Zeker we zijn van onze prior. Het komt overeen met een aantal waarnemingen.

dan is het Bayesiaanse gemiddelde

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

Als u de relevante gegevens en oneindige tijd hebt, kunt u deze twee waarden instellen door een Dirichlet-distributie op de dataset van de waarderingen van al uw computerboeken aan te passen. Het is echter heel gebruikelijk om gewoon een paar parameters te kiezen die het gedrag nabootsen waarnaar we op zoek zijn. m is de waarde waarnaar we de gemiddelde beoordeling van producten met zeer weinig beoordelingen zullen aanpassen. Hoe groter C is, hoe hoger het aantal beoordelingen dat nodig is om “weg te komen van m”.

laten we nu eens kijken naar ons eerste voorbeeld. Twee mogelijke waarden zijn bijvoorbeeld m=3 en C=5.

de Bayesiaanse gemiddelden voor de twee boeken worden

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

zoals verwacht heeft Boek 2 een beter Bayesiaans gemiddelde dan Boek 1.

Geef een antwoord

Het e-mailadres wordt niet gepubliceerd.