Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Алгоритмы > Алгоритм выбора лучших и худших товаров


Автор: proger 29.12.2010, 20:32
Здравствуйте,
есть интернет магазин, в котором люди пишут отзывы о товарах, указывая ОЦЕНКУ и тип отзыва (положительный/отрицательный).
Например за товар может быть 3 отзыва положительных (с баллами 5,7,6) и 1 отрицательный (с баллом 4).
Хотел на сайте в каждой категории выводить 5 лучших и худших товаров на основе отзывов.
Щас алгоритм выбора такой:
  • сортирую товары по кол-ву отзывов (берем 5 штук у которых больше отзывов) т.к. считаю, это более обсуждаемые товары и кол-во отзывов более независимо оценивают товар
  • затем сортирую по соотношению положительных отзывов ко всем т.е. чем больше положительных отзывов к общему числу, тем лучше
  • и в конце сортирую по среднему баллу
Не уверен что алгоритм достоверный, но как еще на основе типа отзыва и оценки можно выбирать?

Автор: Akina 29.12.2010, 22:36
Можно придумать много вариаций, и все они будут по-своему верными и по-своему ошибочными.
Вопрос не имеет смысла.

Автор: VictorTsaregorodtsev 29.12.2010, 22:38
Выкиньте явный тип отзыва - введите положительность и отрицательность отзыва непосредственно в оценку. Как в школьных-ВУЗовских оценках.
А далее - обычные статистические расчеты среднего и дисперсии для значений оценок по товару. Чем выше дисперсия - тем менее однородны (более разнонаправленные) оценки покупателей.
Т.е. алгоритм таков - сначала берутся товары, у которых число отзывов превышает некоторый минимум (чтобы картина по ним сформировалась более-менее достоверная), далее они сортируются по средним значениям оценок, и для товаров с совпадающими средними проводится ранжирование еще и по дисперсии (больше дисперсия - хуже товар, т.к. он почему-то сильно нестабильно соответствует ожиданиям покупателей).
Выводить на экран значения дисперсий не надо - только значения средних баллов. Средние можно округлять до целых значений (или брать не более одного-двух знаков после запятой), а то если считать с точностью в 6-7 значащих цифр (одинарная точность) - то может не потребоваться считать дисперсии, т.к. средние очень, очень редко будут совпадать при такой большой точности расчетов (либо средние будут совпадать только для товаров, всеми пользователями оцениваемых одним и тем же баллом - но тогда из-за отсутствия варьирования баллов дисперсии оценок будут нулевыми, т.е. тоже бесполезными для ранжирования товаров с одинаковым баллом друг относительно друга).

Автор: proger 30.12.2010, 07:51
Цитата(VictorTsaregorodtsev @ 29.12.2010,  22:38)
Выкиньте явный тип отзыва - введите положительность и отрицательность отзыва непосредственно в оценку. Как в школьных-ВУЗовских оценках.
А далее - обычные статистические расчеты среднего и дисперсии для значений оценок по товару. Чем выше дисперсия - тем менее однородны (более разнонаправленные) оценки покупателей.
Т.е. алгоритм таков - сначала берутся товары, у которых число отзывов превышает некоторый минимум (чтобы картина по ним сформировалась более-менее достоверная), далее они сортируются по средним значениям оценок, и для товаров с совпадающими средними проводится ранжирование еще и по дисперсии (больше дисперсия - хуже товар, т.к. он почему-то сильно нестабильно соответствует ожиданиям покупателей).
Выводить на экран значения дисперсий не надо - только значения средних баллов. Средние можно округлять до целых значений (или брать не более одного-двух знаков после запятой), а то если считать с точностью в 6-7 значащих цифр (одинарная точность) - то может не потребоваться считать дисперсии, т.к. средние очень, очень редко будут совпадать при такой большой точности расчетов (либо средние будут совпадать только для товаров, всеми пользователями оцениваемых одним и тем же баллом - но тогда из-за отсутствия варьирования баллов дисперсии оценок будут нулевыми, т.е. тоже бесполезными для ранжирования товаров с одинаковым баллом друг относительно друга).

Спасибо большое за совет!

Автор: Akina 30.12.2010, 09:20
Получив среднее и дисперсию, рекомендую посмотреть на выборку... если в ней есть выброс за пределы доверительного интервала - его лучше проигнорировать.

Автор: proger 30.12.2010, 12:39
Цитата(Akina @ 30.12.2010,  09:20)
Получив среднее и дисперсию, рекомендую посмотреть на выборку... если в ней есть выброс за пределы доверительного интервала - его лучше проигнорировать.

Как понять доверительный интервал, можно подробнее?

Автор: Akina 30.12.2010, 12:57
http://tinyurl.com/25y5r52

Автор: proger 30.12.2010, 14:22
Цитата(Akina @ 30.12.2010,  12:57)
http://tinyurl.com/25y5r52

тупонул, спасибо!

Автор: proger 30.12.2010, 14:45
А можете показать примерами на числах smile если кому не трудно!
Например возьмем голоса  (по 10 бальной шкале): 
Код










8
сумма: 58
среднее: 5,8

Дисперсия (D-M)
Код

-4.8
-0.8
2.2 
3.2
-1.8
-0.8
-0.8 
0.2 
1.2
2.2
сумма: 0
среднее: 0

Квадрат (D-M)
Код

23,04
0,64
4,84
10,24
3,24
0,64
0,64
0,04
1,44
4,84
сумма: 49,6
среднее: 4,96

стандартного отклонения, корень из 4,96 = 2,22

Получается, чем у товара меньше стандартное отклонение, тем он лучше!

Теперь надо разобраться с доверительным интервалом ....

Автор: VictorTsaregorodtsev 30.12.2010, 21:41
Цитата(Akina @  30.12.2010,  09:20 Найти цитируемый пост)
Получив среднее и дисперсию, рекомендую посмотреть на выборку... если в ней есть выброс за пределы доверительного интервала - его лучше проигнорировать.

За пределы доверительного интервала для среднего выбросы (во множественном числе) будут в любом случае ;) Просто из-за способа расчета этого самого доверительного интервала для среднего.
А смотреть наличие выходов за плюс-минус три сигмы может быть тоже малоприемлемо, т.к. градаций оценок мало (5-10) и они нормальное распределение не всегда хорошо зааппроксимируют. Проверять еще и гипотезу на соответствие распределения нормальному (или для каждого вида распределения и его параметров строить способ расчета доверительного интервала) - неоправданное, думаю, переусложнение.

Автор: proger 31.12.2010, 12:26
Цитата(VictorTsaregorodtsev @ 30.12.2010,  21:41)
Цитата(Akina @  30.12.2010,  09:20 Найти цитируемый пост)
Получив среднее и дисперсию, рекомендую посмотреть на выборку... если в ней есть выброс за пределы доверительного интервала - его лучше проигнорировать.

За пределы доверительного интервала для среднего выбросы (во множественном числе) будут в любом случае ;) Просто из-за способа расчета этого самого доверительного интервала для среднего.
А смотреть наличие выходов за плюс-минус три сигмы может быть тоже малоприемлемо, т.к. градаций оценок мало (5-10) и они нормальное распределение не всегда хорошо зааппроксимируют. Проверять еще и гипотезу на соответствие распределения нормальному (или для каждого вида распределения и его параметров строить способ расчета доверительного интервала) - неоправданное, думаю, переусложнение.

Спасибо

Автор: миг 10.1.2011, 21:43
смотря какие товары.. Если товары в разной потребительской категории например молоко и автомобиль, то сравнивать какой из них лучший это как то не правильно.. Ну, а если в одной потребительской категории например хонда и тойота. то на основе отзывов пользователей можно составить только субъективный рейтинг.. Кому-то понравиться цвет машины, кому-то сиденья, кому-то коробка передач, кому-то салон, кому-то мощность двигателя и т.д. 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)