Як не сортувати за середнім рейтингом

Еван Міллер

6 лютого 2009 р. (Зміни)

Оригінал: https://www.evanmiller.org/how-not-to-sort-by-average-rating.html

ПРОБЛЕМА : Ви є веб-програмістом. У вас є користувачі Ваші користувачі оцінюють речі на своєму сайті. Ви хочете поставити найвищий рейтинг у верхній частині і найнижчою оцінкою внизу. Вам потрібно якийсь "рахунок" для сортування за.

Неправильне рішення № 1 : Оцінка = (Позитивні оцінки) - (Негативні рейтинги)

Чому це неправильно : припустимо, що в одній позиції є 600 позитивних оцінок і 400 негативних оцінок: 60% - позитивні. Припустімо, у другому предметі 5,500 позитивних оцінок і 4500 негативних оцінок: 55% позитивних. Цей алгоритм ставить елемент 2 (оцінка = 1000, але лише 55% позитивний) над пунктом 1 (оцінка = 200, а позитивна - 60%). НЕДЕРЖАНЬ

Сайти, які роблять цю помилку : Urban Dictionary

Неправильне рішення № 2 : Оцінка = Середній рейтинг = (Позитивні оцінки) / (Загалом рейтинги)

Чому це неправильно : середній рейтинг працює добре, якщо у вас завжди є тонна рейтингів, але припустимо, що в елементі 1 є 2 позитивних рейтинги та 0 негативних оцінок. Припустимо, предмет 2 має 100 позитивних оцінок і 1 негативний рейтинг. Цей алгоритм ставить елемент 2 (тони позитивних оцінок) нижче пункту 1 (дуже мало позитивних оцінок). НЕДЕРЖАНЬ

Сайти, які роблять цю помилку : Amazon.com

ПРАВИЛЬНЕ РОЗЧИЛЕННЯ : Оцінка = Нижня межа віртуального довірчого інтервалу Вілсона для параметра Бернуллі

Скажи що : нам потрібно збалансувати пропорцію позитивних рейтингів з невизначеністю невеликої кількості спостережень. На щастя, математика для цього була розроблена в 1927 році Едвіном Б. Вілсоном. Що ми хочемо поставити: ураховуючи рейтинги, я маю 95% шансів, що "справжня" частка позитивних рейтингів, принаймні, що? Вільсон дає відповідь. Враховуючи лише позитивні та негативні оцінки (тобто не в 5-зірковій шкалі), нижня межа частки позитивних оцінок визначається:

(Використовуйте мінус, де йдеться про плюс / мінус для обчислення нижньої межі.) Тут р - спостережувана частка позитивних оцінок, z α / 2 - (1-α / 2) квантиль стандартного нормального розподілу, n - загальна кількість оцінок. Та сама формула реалізована в 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 

pos - це кількість позитивних оцінок, n - загальна кількість оцінок, а confidence - статистичний рівень довіри: виберіть 0,95, щоб мати 95% шанс, що ваша нижня межа правильна, 0,975 - 97,5%, і т. д. Z-оцінка в цій функції ніколи не змінюється, тому якщо у вас немає пакету статистики зручна або якщо продуктивність є проблемою, ви завжди зможете жорстко кодувати значення для z . (Використовуйте 1,96 для довірчого рівня 0,95.)


UPDATE, квітень 2012 р .: Ось ілюстративне твердження SQL, яке зробить трюк, якщо у вас є таблиця widgets із позитивними та негативними рейтингами, і ви хочете їх відсортувати на нижній межі 95% довірчого інтервалу:

 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; 

Якщо ваш бос не вважає, що таке складне SQL-висловлювання може повернути корисний результат, просто порівняйте результати з двома іншими методами, описаними вище:

 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; 

Ви швидко побачите, що додатковий біт математики робить все, що добре, бульбашки до вершини. (Але перед тим, як запустити цей SQL у великій базі даних, поговоріть зі своїм дружнім адміністратором бази даних сусідів про правильне використання індексів.)

UPDATE, March 2016: Ось та сама формула в Excel:

 =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) 

Спочатку я розробив цей метод для генератора фактів Чака Норріса на честь одного з моїх професорів, але з тих пір він попався в таких місцях, як Reddit , Yelp і Digg .

ІНШІ ЗАЯВКИ

Віртуальний довірчий інтервал Вільсона - це не просто для сортування, звичайно. Це корисно, коли ви хочете з упевненістю дізнатись, який відсоток людей зайняв певні дії. Наприклад, це може бути використано для:

  • Виявлення спаму / зловживання: який відсоток людей, які бачать цей продукт, позначатимуть його як спам?
  • Створити список "найкращого": який відсоток людей, які бачать цей продукт, позначатиме його як "найкраще"?
  • Створіть список "Найпопулярніші електронні листи". Який відсоток людей, які бачать цю сторінку, натискатиме "Електронна пошта"?

Дійсно, в списку з найвищим рейтингом може бути корисніше відображати ті елементи з найбільшою кількістю позитивних оцінок на кожну сторінку, завантаження чи покупку , а не позитивні оцінки за оцінкою. Багато людей, які знаходять щось посереднє, не змушують оцінювати його взагалі; акт перегляду або придбання чогось і відхилення для оцінки його містить корисну інформацію про якість цього предмета.

ЗМІНИ

  • 20 квітня 2016 року: Додана реалізація Excel (спасибі Алессандро Аполлоні)
  • 4 квітня 2012 р.: Нова реалізація SQL
  • 13 листопада 2011 р.: Виправлено статистичну довідкову мову та змінений код відповідно до прикладу
  • 15 лютого: з'ясував приклад статистичної сили
  • 13 лютого II: "Інші програми"
  • 13 лютого: загальне уточнення плюс посилання на відповідну статтю Вікіпедії.
  • 12 лютого 2009 року: приклад "Неправильне рішення №1" був помилковим. Це було виправлено.

ПОСИЛАННЯ

Біномірний довірчий інтервал (Вікіпедія)

Агресті, Алан і Брент А. Куль (1998), "Приблизний краще, ніж" Точний "для інтервальної оцінки біноміальних пропорцій", американський статистик , 52, 119-126.

Вільсон, Е.Б. (1927), "Можливі висновки, закон про правонаступництво та статистичне висновок", журнал Американської статистичної асоціації , 22, 209-212.


Ви читаєте evanmiller.org , довільну колекцію математики, технологій та роздумів. Якщо вам це сподобалося, ви також можете насолоджуватися:


Отримайте нові статті, як вони опубліковані, через Twitter або RSS .


Хочете шукати статистичні шаблони в базі даних MySQL, PostgreSQL або SQLite? Майстер програмного забезпечення статистики для настільних комп'ютерів може допомогти вам проаналізувати більше даних за менший проміжок часу та обмінюватися відкриттями візуально, не витрачаючи день на боротьбу з безнадійним командним синтаксисом. Перевір!


Майстер
Статистика Mac шляхом

Повернутися на головну сторінку Евана Міллера - Follow in Twitter - Підписатися на RSS