[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Умный рейтинг
Страницы: 1, 2, 3, 4
Arh
McLotos
Цитата
максимальный вес оценки равен 1 и с каждым днём он уменьшается

То есть десять лет назад у фильма была оценка 10 из 10, а сегодня будет 0 ? Или зачем это всё?

_____________
Промокод предоставляет скидку на заказ домена и/или хостинга reg.ru
BFCC-3895-8804-9ED2
Arh
Вообще на мой взгляд 5ти или 10ти бальная система оценок очень кривая и неудобная относительно рейтинга.
Лучше всего 3х бальная. (нравится,не нравится,пофиг)

Если людям не нравится, они ставят минусы. В 5ти бальной даже минус поставить нельзя, то есть 1 из 10 это конечно плохой рейтинг, но подсознательно ты ставишь +1, а хочешь поставить минус и написать чтобы никто не смотрел этот бред.

Если людям пофиг, то они просто пролистают дальше и рейтинг останется 0.

Если нравится то +.
Когда у вас друзья спрашивают стоит ли идти на этот фильм, вы же не отвечаете "на троечку", вы говорите либо да либо нет. Даже можно ответить так: "ну в принципе так себе, местами скучный, но а вообще сходи" в итоге ответ положительный.

Да и как оценить правильно? Сто раз видел на яндекс маркете оценку 2, при этом в комментах написано что телефон отличный, но я разбил экран. Или пылесосит отлично, покупкой доволен, но неудобно ставить вертикально в шкаф. А в 3х бальной системе фраза "покупкой доволен" означало бы плюс.

Выводить рейтинг конечно можно хоть в 5 хоть в 10 хоть в 100 бальной.
Например если 40 минусов и 60 плюсов, то рейтинг 6 из 10.

Если нужен рейтинг относительно других фильмов, то тоже всё просто.
60 минус 40 = 20.

Берём самый рейтинговый фильм, допустим у него 100 минусов и 200 плюсов. 200-100=100.
В итоге наш фильм относительно самого рейтингового 2 из 10.

Но это я считаю неправильно.
Потому что ты любишь фантастику и я люблю фантастику и еще 8 человек любит фантастику. Мы поставили нашему фильму 10 плюсов.
А остальной форум (100 чел) любит комедии и поставили своему фильму 100 плюсов.
По сути оба фильма 10 из 10, но наш будет 1 из 10.

_____________
Промокод предоставляет скидку на заказ домена и/или хостинга reg.ru
BFCC-3895-8804-9ED2
McLotos
Цитата (Arh @ 19.07.2015 - 00:07)
То есть десять лет назад у фильма была оценка 10 из 10, а сегодня будет 0 ?

Не совсем так.
Вес оценки поставленной 1220 дней назад, равен 0.13951403173016
Вес оценки поставленной 1219 дней назад, равен 0.13975098804257
Вес оценки поставленной 1218 дней назад, равен 0.13998834681123

Как видишь, даже спустя почти 4 года, вес оценки еще достаточно высок.
Вот, например, данные по элементу, у которого есть несколько оценок, включая очень старые оценки
Количество голосов: 7
Результат старого рейтинга (сумма/колличество): 3.86
Результат формулы: 59.38
оценки
Оценка1:
[date] => 1501
[rating] => 1
[voteWeight] => 0.086600724543134
Оценка2:
[date] => 1329
[rating] => 5
[voteWeight] => 0.11595384013984
Оценка3:
[date] => 1283
[rating] => 5
[voteWeight] => 0.12536809651602
Оценка4:
[date] => 1253
[rating] => 5
[voteWeight] => 0.13191584509081
Оценка5:
[date] => 1108
[rating] => 5
[voteWeight] => 0.16871808434911
Оценка6:
[date] => 1076
[rating] => 5
[voteWeight] => 0.17813348448451
Оценка7:
[date] => 892
[rating] => 1
[voteWeight] => 0.24341825605673

UPD1:
Данная методика рейтинга достаточно успешно используется на сайте banki.ru с 2009 года
UPD2:
А по поводу "зачем" могу сказать что это очень эффективная методика, потому-что (на твоём же примере) 10 лет назад люди ставили ему оценки 10, а так как за последние 10 лет больше оценок не было, значит интерес к нему упал, а если появится оценка новее, то ее вес будет выше, и она сильнее будет влиять на его рейтинг

_____________
программирование - инструмент для решения конкретных задач, любая попытка спроектировать что-то универсальное приведет к провалу.©paul85
В любом случае тебе прийдётся пройти путь изобретения велосипеда, который прошли другие, только причиной твоего изобретения будет непонимание принципов работы велосипеда изобретённого другими людьми.©SlavaFr
jQuery это попытка использовать АН-225 для перевозки зубочистки
McLotos
Или на примере форума. 5 лет назад тебе поставили минусы. а 5 дней назад такое же количество плюсов. Плюсы в данном случае намного важнее минусов, потому-что за 5 лет, твои ответы сильно изменились с точки зрения качества.

_____________
программирование - инструмент для решения конкретных задач, любая попытка спроектировать что-то универсальное приведет к провалу.©paul85
В любом случае тебе прийдётся пройти путь изобретения велосипеда, который прошли другие, только причиной твоего изобретения будет непонимание принципов работы велосипеда изобретённого другими людьми.©SlavaFr
jQuery это попытка использовать АН-225 для перевозки зубочистки
Arh
Ну в принципе логично. Типа рейтинг нужно подпитывать (актуальный рейтинг).

Я так понимаю в базе хранятся просто оценки, а потом по запросу класс вычисляет вес для каждой и относительно веса как то корректирует сумму оценок?

А что если сразу писать вес оценки в виде даты. date('Y-m-d');
Потом из текущей даты, вычесть дату оценки.
Получится число, чем больше прошло времени с текущей даты, тем больше это число.
Потом это число вычитать из оценки и всё.
Получается чем старше оценка, тем она меньше.


$a = 5; //Оценка
$date_start = strtotime('2010-01-01'); //Дата оценки
$date = strtotime(date('Y-m-d')); //Текущая дата
$weight = ($date-$date_start)/(3600000*24); //Находи разницу
$a = $a-$weight; //Вычитаем из оценки
echo $a ? $a : 0;




_____________
Промокод предоставляет скидку на заказ домена и/или хостинга reg.ru
BFCC-3895-8804-9ED2
McLotos
Цитата (Arh @ 19.07.2015 - 03:38)
Я так понимаю в базе хранятся просто оценки, а потом по запросу класс вычисляет вес для каждой и относительно веса как то корректирует сумму оценок?

Оценки и время каждой оценки (когда была поставлена), можно просто дату.
Цитата (Arh @ 19.07.2015 - 03:38)
А что если сразу писать вес оценки в виде даты. date('Y-m-d');
Потом из текущей даты, вычесть дату оценки.

Тогда результат будет неправильный. Вес оценки рассчитывается по формуле
1.106*pow(M_E , -0.001697*$howOld), где $howOld это количество дней прошедших с момента установки оценки, до текущего дня, а M_E это математическая константа.


_____________
программирование - инструмент для решения конкретных задач, любая попытка спроектировать что-то универсальное приведет к провалу.©paul85
В любом случае тебе прийдётся пройти путь изобретения велосипеда, который прошли другие, только причиной твоего изобретения будет непонимание принципов работы велосипеда изобретённого другими людьми.©SlavaFr
jQuery это попытка использовать АН-225 для перевозки зубочистки
McLotos
Тут еще спрашивали что будет если система оценок не пятибальная. Я проверил этот момент, класс так же хорошо сработал и с оценками до 10 и с шагом в пол оценки.
Единственное неудобство при таких оценках так это невозможность узнать количество голосов побально. Но это легко фиксится добавлением в массив нужных нам оценок, тех же 6-10 и 0,5-9,5. И это никак не повлияет на результат, даже если фактически система оценок будет трехбальная или вообще только -1,0,+1
правда оценка равная 0 будет просто сбрасываться, потому-что её присутствие в формуле приведет к ошибке Devizion by zero

_____________
программирование - инструмент для решения конкретных задач, любая попытка спроектировать что-то универсальное приведет к провалу.©paul85
В любом случае тебе прийдётся пройти путь изобретения велосипеда, который прошли другие, только причиной твоего изобретения будет непонимание принципов работы велосипеда изобретённого другими людьми.©SlavaFr
jQuery это попытка использовать АН-225 для перевозки зубочистки
McLotos
Хотя, если быть до конца честным, то я не применял к 10ибальной шкале математический метод проверки (в смысле я просто передал в класс оценки не проверяя "на листке" полученный результат)

_____________
программирование - инструмент для решения конкретных задач, любая попытка спроектировать что-то универсальное приведет к провалу.©paul85
В любом случае тебе прийдётся пройти путь изобретения велосипеда, который прошли другие, только причиной твоего изобретения будет непонимание принципов работы велосипеда изобретённого другими людьми.©SlavaFr
jQuery это попытка использовать АН-225 для перевозки зубочистки
mustafa007
Ух и раздули тему :)
Пользуйте.

/**
* Функция расчета рейтинга по формуле вильсона с поправкой времени
*
@param integer $up Количество положительных голосов
*
@param integer $down Количество отрицательных голосов
*
@param integer $time_diff Время существования оцениваемого материала, в днях
*
@return integer Рейтинг
*/

function wilson_score($up, $down, $time_diff = 0) {
if (!$up) return $down * (-1); // Если только отрицательные голоса, возвращаем минусы
$down = $down + ($time_diff * 0.1); // Поправка в зависимости от времени
$n = $up + $down;
$z = 1.64485; //1.0 = 85%, 1.6 = 95%
$phat = $up / $n;
$wilson = ($phat+$z*$z/(2*$n)-$z*Math.sqrt(($phat*(1-$phat)+$z*$z/(4*$n))/$n))/(1+$z*$z/$n);
$result = round($wilson, 2);
return $result;
}

echo wilson_score(5,3,14);

источник http://habrahabr.ru/company/darudar/blog/143188/
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.