Kuidas Ei Sorteeri Keskmine Hinnang

Link: https://www.evanmiller.org/how-not-to-sort-by-average-rating.html

Evan Miller

veebruar 6, 2009 (Muudatused)

(vene tõlge)

(ukraina tõlge)

PROBLEEM: Sa oled veebi programmeerija. Sa pead kasutajad. Kasutajad määr kraami oma saidil. Sa tahad panna kõrgeima reitinguga kraami üleval ja madalaima reitinguga allosas. Teil on vaja mingi “keskmine”, et sortida.

VALE LAHENDUS #1: Score = (Positive ratings) − (Negative ratings)

Miks see on vale: Arvan, et üks punkt on 600 positiivset hinnet ja 400 negatiivne hinnang: 60% positiivne. Oletame, punkt kaks on 5,500 positiivset hinnet ja 4500 negatiivne hinnang: 55% positiivne. See algoritm paneb punkt kaks (keskmine = 1000, aga ainult 55% positiivne) eespool punkt üks (skoor = 200 ja 60% positiivne). VALESTI.

Saite, et muuta see viga: Urban Dictionary

VALE LAHENDUS #2: Hinne = Keskmine hinne = (Positiivset hinnet) / (Kokku reitingud)

Miks see on vale: Keskmine reiting toimib trahvi, kui sa alati on ton reitingud, kuid oletame, et punkt 1 on 2 positiivset hinnet ja 0 negatiivseid hinnanguid. Oletame, et punkt 2 on 100 positiivset hinnet ja 1 negatiivne hinnang. See algoritm paneb punkt kaks (tonni positiivset hinnet) allpool punkt üks (väga vähe positiivset hinnet). VALESTI.

Saite, et muuta see viga: Amazon.com

ÕIGE LAHENDUS: Tulemus = Alumine piir Wilson skoor usaldusintervalli Bernoulli parameeter

Öelda, mida: Meil on vaja tasakaalu osakaal positiivset hinnet ebakindlus väikese hulga vaatlusi. Õnneks on matemaatika selle oli välja töötanud 1927 poolt Edwin B. Wilson. Mida me tahame küsida: Antud reitingute mul on, on 95% võimalus, et “päris” fraktsioon positiivsed hinnangud on vähemalt, mida? Wilson annab vastuse. Võttes arvesse ainult positiivsed ja negatiivsed hinnangud (st mitte 5-tärni skaalal), alumine piir osatähtsuse kohta positiivsed hinnangud on antud:

(Kasuta miinus, kui ta ütleb, pluss/miinus, et arvutada alumine piir.) Siin p täheldatud fraktsioon positiivset hinnet, zα/2 on (1-α/2) quantile standardse normaaljaotusega, ja n on kokku arv reitingud. Sama valemit rakendada Ruby:


require 'statistics2'

def ci_lower_bound(pos, n, confidence)
    if n == 0
        return 0
    end
    z = Statistics2.pnormaldist(1-(1-confidence)/2)
    phat = 1.0*pos/n
    (phat + z*z/(2*n) - z * Math.sqrt((phat*(1-phat)+z*z/(4*n))/n))/(1+z*z/n)
end

UUENDUS aprill 2012: Siin on näitlik SQL et teeb trikk, eeldades, et olete vidinad tabel, kus positiivsed ja negatiivsed hinnangud ja soovid sortida neid alumine piir 95% usaldusvahemik:

SELECT widget_id, ((positive + 1.9208) / (positive + negative) – 1.96 * SQRT((positive * negative) / (positive + negative) + 0.9604) / (positive + negative)) / (1 + 3.8416 / (positive + negative)) AS ci_lower_bound FROM widgets WHERE positive + negative > 0 ORDER BY ci_lower_bound DESC;

Kui teie boss ei usu, et selline keeruline SQL võiks tagasi kasulik tulemus, lihtsalt võrrelda tulemusi teiste kahe eespool kirjeldatud meetodit:

SELECT widget_id, (positive – negative) AS net_positive_ratings FROM widgets ORDER BY net_positive_ratings DESC; SELECT widget_id, positive / (positive + negative) AS average_rating FROM widgets ORDER BY average_rating DESC;

Teil on kiiresti näha, et ekstra natuke matemaatika teeb kõik hea kraam mulli tippu. (Aga enne töötab see SQL tohutu andmebaas, rääkida oma sõbralik naabruskond andmebaasi administraatori kohta nõuetekohane kasutamine indekseid.)

UPDATE, Märts 2016: Siin on sama valemit Excelis:

=IFERROR((([@[Up Votes]] + 1.9208) / ([@[Up Votes]] + [@[Down Votes]]) - 1.96 * 
    SQRT(([@[Up Votes]] *  [@[Down Votes]]) / ([@[Up Votes]] +  [@[Down Votes]]) + 0.9604) / 
    ([@[Up Votes]] +  [@[Down Votes]])) / (1 + 3.8416 / ([@[Up Votes]] +  [@[Down Votes]])),0)

MUUD RAKENDUSED

Wilson skoor usaldusvahemik ei ole lihtsalt sorteerimiseks, muidugi. See on kasulik, kui soovite teada, enesekindlalt, milline protsent inimesi võttis mingi tegevus. Näiteks võiks kasutada:

  • Tuvastada rämpsposti/kuritarvitamise: Milline protsent inimesi, kes näevad selle kirje tähistab see nagu rämpspost?
  • Loo “best of” listi: kui suur protsent inimesi, kes näevad selle toote märgi, et see on “parim”?
  • Loo “Kõige saatsin” list: Milline protsent inimesi, kes näevad selle lehe nupul “E-post”?

Tõepoolest, see võib olla rohkem kasulik “edetabel” list kuvab need teemad, kus on suurim arv positiivset hinnet lehekülje vaadata, alla laadida või osta, pigem positiivset hinnet ühe hinnang. Paljud inimesed, kes leiavad, et midagi keskpärane ei viitsinud määr on üldse; õigusakti vaatamise või ostmise midagi ja vähenev määr, see sisaldab kasulikku infot, et toote kvaliteeti.

MUUDATUSED

  • Aprill. 20, 2016: Lisatud Exceli rakendamine (tänu Alessandro Apolloni)
  • Aprill. 4, 2012: Uus SQL-i rakendamine
  • Nov. 13, 2011: Fikseeritud statistilise usaldusväärsuse keel ja muuta koodi näide sellest
  • Veebruar. 15: Selgitada statistilist võimsust näide
  • Veebruar. 13 II: “Teised rakendused”
  • Veebruar. 13: Üldist selgitust, pluss linki vastavale Wikipedia artiklit.
  • Veebruar. 12, 2009: näiteks “Vale Lahendus #1”, on väär. See on fikseeritud.

VIITED

Kaheosaline osa usaldusvahemik (Wikipedia)

Agresti, Alan ja Brent A. Coull (1998), “Ligikaudne on Parem kui “Täpse” Intervall Hinnang Kaheosaline Proportsioonides,” Ameerika Statistik, 52, 119-126.

Wilson, E. B. (1927), “Tõenäoline Järeldada, Õiguse Pärandile, ja Statistiline Järeldus,” Teataja American Statistical Association, 22, 209-212.


Sa loed evanmiller.org, juhuslik kogumine, matemaatika, tehnoloogia ja musings. Kui sulle meeldis see, mida võib nautida ka 

 

Saada uusi artikleid, kui need on avaldatud, via Twitter või RSS.


Soovite otsida statistilisi mudeleid oma MySQL, PostgreSQL, SQLite ‘ i või andmebaasi? Minu desktop statistika tarkvara Wizard aitab teil analüüsida rohkem andmeid vähem aegaja suhelda avastusi visuaalselt ilma veeta päeva hädas mõttetu käsu süntaks. Check it out!

 

Leave a Reply

Your email address will not be published. Required fields are marked *