Jak wykrywać spolaryzowane opinie użytkowników (wysokie i niskie oceny w gwiazdkach)


15

Jeśli mam system oceny gwiazdek, w którym użytkownicy mogą wyrazić swoje preferencje dotyczące produktu lub przedmiotu, w jaki sposób mogę wykryć statystycznie, czy głosy są wysoce „podzielone”. Oznacza to, że nawet jeśli średnia wynosi 3 z 5 dla danego produktu, jak mogę wykryć, czy jest to podział 1-5 względem konsensusu 3, używając tylko danych (bez metod graficznych)


3
Co jest złego w stosowaniu odchylenia standardowego?
Spork


1
Czy próbujesz wykryć „rozkład bimodalny”? Zobacz stats.stackexchange.com/q/5960/29552
Ben Voigt

1
W politologii istnieje literatura na temat pomiaru polaryzacji politycznej, która badała różne sposoby definiowania, co należy rozumieć przez „polaryzację”. Jeden miły artykuł, który szczegółowo omawia 4 różne proste sposoby definiowania polaryzacji, jest następujący (patrz str. 692-699): educ.jmu.edu/~brysonbp/pubs/PBJ.pdf
Jake Westfall

Odpowiedzi:


12

Można skonstruować wskaźnik polaryzacji; to, jak dokładnie to zdefiniujemy, zależy od tego, co oznacza bycie bardziej spolaryzowanym (tj. co dokładnie masz na myśli, w szczególnych przypadkach brzegowych, przez mniej lub bardziej spolaryzowaną?):

Na przykład, jeśli średnia to „4”, czy podział 50–50 między „3” i „5” jest większy, czy mniej spolaryzowany niż 25% „1” i 75% „5”?

W każdym razie, przy braku takiej konkretnej definicji tego, co masz na myśli, zasugeruję miarę opartą na wariancji:

Biorąc pod uwagę konkretną średnią, zdefiniuj najbardziej spolaryzowany możliwy podział jako ten, który maksymalizuje wariancję *.

* (Uwaga: powiedziałoby to, że 25% „1” i 75% „5” jest znacznie bardziej spolaryzowane niż 50-50 podział „3” i „5”; jeśli to nie pasuje do twojej intuicji, nie używaj wariancji)

Zatem ten wskaźnik polaryzacji jest proporcją największej możliwej wariancji ( z obserwowaną średnią ) w obserwowanej wariancji.

Nazwij średnią ocenę ( m = ˉ x ).mm=x¯

Maksymalna wariancja występuje, gdy proporcja oznacza5,a1-pwynosi1; ma to wariancję (m-1)(5-m)np=m1451p1 .(m1)(5m)nn1

Wystarczy więc pobrać wariancję próbki i podzielić przez ; daje to liczbę od0(idealna zgodność) do1(całkowicie spolaryzowane).(m1)(5m)nn101

W wielu przypadkach, w których średnia ocena wynosi 4, dałoby to:

wprowadź opis zdjęcia tutaj


Zamiast tego możesz raczej nie obliczać ich w odniesieniu do największej możliwej wariancji z tą samą średnią, ale zamiast tego jako procent największej możliwej wariancji dla dowolnej średniej oceny . Oznaczałoby to podzielenie zamiast 4nn11

Każda z tych dwóch opcji jest całkowicie poprawnym wyborem - podobnie jak każda inna liczba alternatywnych sposobów konstruowania takiego indeksu.


Ale kiedy m = 1dostaniesz 1 - 1 = 0i 0 / 0. Jak to naprawisz?
Francesco

m=1m=5

8

„Brak metod graficznych” jest rodzajem dużego upośledzenia, ale ... oto kilka dziwnych pomysłów. Obie traktują oceny jako ciągłe, co jest słabością konceptualną i prawdopodobnie nie jedyną ...

Kurtosis

  • Kurtoza {1,1,1,5,5,5} = 1. Nie dostaniesz niższej kurtozy przy żadnej kombinacji ocen 1–5.
  • Kurtoza {1,2,3,4,5} = 1,7. Niższy oznacza więcej wartości ekstremalnych; wyżej oznacza więcej środka.
  • To nie zadziała, jeśli rozkład nie będzie w przybliżeniu symetryczny. Pokażę poniżej.

Ujemna regresja dwumianowa

RatingFrequency1312153749537
FrequencyRating+RatingRating

FWIW, oto kod , z którym bawiłem się:

x=rbinom(99,4,c(.1,.9))+1;y=sample(0:4,99,replace=T)+1 #Some polarized & uniform rating data
table(x);table(y)                                                         #Frequencies
require(moments);kurtosis(x);kurtosis(y)                                  #Kurtosis

Y=data.frame(n=as.numeric(table(y)),rating=as.numeric(levels(factor(y)))) #Data frame setup
X=data.frame(n=as.numeric(table(x)),rating=as.numeric(levels(factor(x)))) #Data frame setup
require(MASS);summary(glm.nb(n~rating+sqrt(rating),X))  #Negative binomial of polarized data
summary(glm.nb(n~rating+sqrt(rating),Y))                #Negative binomial of uniform data

Nie mogę się oprzeć rzuceniu spisku ...

require(ggplot2);ggplot(X,aes(x=rating,y=n))+geom_point()+stat_smooth(formula=y~x+I(sqrt(x)),method='glm',family='poisson')

Rating



Edycja: Właśnie zobaczyłem to pytanie reklamowane na pasku bocznym: a kiedy kliknąłem, zobaczyłem je w „Hot Network Questions” odsyłającym do siebie, jak to czasami bywa ,

więc pomyślałem, że może to zasługiwać na wizytę w bardziej ogólnie przydatny sposób. Postanowiłem wypróbować moje metody w recenzjach klientów Amazon dotyczących koszulki z krótkim rękawem The Mountain Three Wolf Moon :

Rating12345Frequency20854891982273


βRating=19.1

σFrequencyThe Mountain Three Wolf Moon Short Sleeve Tee Ratings2=1.31
x=rep(5:1,c(2273,198,89,54,208))var(x)/(4*length(x)/(length(x)-1))


Jest to około 0,77 dla pierwszej wersji wskaźnika polaryzacji (tj. W stosunku do najbardziej spolaryzowanej przy średniej ocenie), ale tak, jak mówisz, 0,33 dla drugiej wersji (względem najbardziej możliwego rozkładu spolaryzowanego).
Glen_b

@Glen_b: A czy pierwsza wersja nie jest mniej odpowiednia, gdy średnia nie jest ustalona dla różnych zestawów ocen, które wymagają porównania? A może źle zrozumiałem twoją odpowiedź?
Nick Stauner

To zależy od celu. Sądząc po tytule „jak wykrywać spolaryzowane opinie”, pochylam się w kierunku pierwszego ( biorąc pod uwagę średnią ocenę, jak spolaryzowane są opinie na ten temat? ). Jeśli rzeczywiście celem było porównanie różnych zestawów ocen, bardziej sensowne może być zastosowanie drugiego podejścia, jak sugerujesz. To dlatego zrobiłem oba. Mój komentarz nie miał być w żadnym sensie krytyką; Cieszę się, że w ogóle o tym wspomniałeś.
Glen_b

@Glen_b: Zrozumiałem :) TBH, sugeruję, że podejście do modelowania regresji dwumianowej jest lepsze, ale przyznaję, że prawie go dokładnie nie przetestowałem. Mam wrażenie, że większość spolaryzowanych zestawów ocen nie będzie równomiernie spolaryzowana, więc uważam, że odporność na asymetrię będzie ważna dla przyszłych czytelników.
Nick Stauner

5

(13)2+(33)2+(33)2+(53)24=1
(13)2+(13)2+(53)2+(53)24=2

2

Wątpię, czy mogę dodać coś cennego do podanych wcześniej sprytnych odpowiedzi. W szczególności dobry pomysł @ Glen_b, aby ocenić, w jaki sposób zaobserwowana wariancja jest względnie zbliżona do maksymalnej możliwej wariancji przy obserwowanej średniej. Moja własna, tępa i prosta propozycja ramienia, dotyczy natomiast pewnej solidnej miary dyspersji opartej nie na odchyleniach od jakiegoś środka, ale bezpośrednio na odległościach między punktami danych.

rejaja

Rating scale                   Distances      Mean     Median    Hodges-Lehmann
1  2  3  4  5

Frequency distributions:

1     2     1                 0 2 2 2 2 4      2          2          2

2           2                 0 0 4 4 4 4      2.7        4          2

1        2  1                 0 1 1 3 3 4      2          2          2

1  1  1     1                 1 1 2 2 3 4      2.2        2          2

1  1     1  1                 1 1 2 3 3 4      2.3        2.5        2.5

1           3                 0 0 0 4 4 4      2          2          2

N.


Średnia kwadratowych odległości w parach jest związana z wariancją.
Glen_b

0

Co powiesz, jeśli ocena 3 gwiazdki jest mniejsza niż średnia z 5 i 4, a także mniejsza niż średnia z 1 i 2:

if (number_of_ratings > 6)      // kind of meaningless unless there's enough ratings
{
    if ( ((rating(5)+rating(4))*0.5 > rating(3)) &&
         ((rating(1)+rating(2))*0.5 > rating(3))
       )    
    {
        // Opinion divided
    }
    else
    {
        // Opinion not divided
    }
}
else
{
    // Hard to tell yet if opinion is divided
}

Z czubka mojej głowy nie mogę wymyślić żadnej sytuacji, w której to nie zadziałałoby. Korzystając z powyższego przykładu: opinie klientów Amazon dotyczące koszulki z krótkim rękawem The Mountain Three Wolf Moon :

Rzatjansol12)3)45farmiqumindoy20854891982273

W tym przypadku:

Rzatjansolzavmirzasolmi(1,2))3)zavmirzasolmi(4,5)farmiqumindoy131891235

To przejdzie test i zostanie uznane za podzieloną opinię.


1
co gdyby było dużo 2 i 4 i stosunkowo mało innych ocen? Trudno sobie wyobrazić, że dzieje się tak w rzeczywistości, ale czy naprawdę można nazwać to spolaryzowanym?
Nick Stauner

Pomyśl o tym, łatwiej byłoby znaleźć przypadki z dużą liczbą 1 i 5, bardzo małą liczbą 2 i 4 oraz umiarkowaną liczbą 3. Na przykład,
Rzatjansol12)3)45farmiqumindoy25515525
To dość spolaryzowane, nie? Jednak twoja metoda przyniosłaby taki sam wynik jak dla jednolitego rozkładu 15 dla każdej oceny.
Nick Stauner

0

Myślę, że to, czego szukasz, to odchylenie standardowe:

σ=ja=0n(xja-μ)2)ngdzie σ jest odchyleniem standardowym, n to liczba punktów danych,x reprezentuje wszystkie punkty danych, orazμ to znaczy

Nie wiem, jaki to język programowania, ale oto metoda Java, która da standardowe odchylenie:

public static double standardDeviation(double[] data) {
            //find the mean
    double sum = 0;
    for(double x:data) {
        sum+=x;
    }
    double mean = sum/data.length;

            //find standard deviation
    Double sd;
    sd=0.0;
    for(double x:data) {
        sd+=Math.pow((x-mean),2);
    }
    sd=sd/data.length;
    sd=Math.sqrt(sd);

    return sd;
}
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.