Ранжирование на основе голосов и средних оценок

cDLEON

Онанист РНРСlub
kombat
Ну исходя из ваших слов. Можно создать обратный олгаритм:
Двадцать торчков поставили на галимый фильм по 5-ке.
А два неторчка поставили на другой, классный фильм по 5-ке.
И чё? Jedem das Seine.
 

kombat

Новичок
я понимаю конечно что все субъективно, но все-таки мне кажется в боле менее массовой системе нормальных людей больше чем торчков.
и оценки фильмов/музыки/и тд на разных сайтах при разной аудитории очень похожи.. вот только сортируются они иногда очень странно. встречал настолько бессмысленные рейтинги, что и говорить не хочется

ладно это все теория... вам когда-нибудь приходилось создавать рейтинги? как вы это делали если не секрет?
 

Bitterman

Новичок
Я бы не парился. Определил бы порог (чисто субъективно) и отсеивал бы все фотки, не набравшие порогового числа голосов. Последние добавленные фотки надо смотреть именно в списке последних фоток, а не в лучших по рейтингу, даже если пара "торчков" и оценила их на пять.
 

Dovg

Продвинутый новичок
kombat
лучше уж щас прошукать эту тему, чтобы потом не зацикливаться.
Возьми десятка два параметров, начиная от средней оценки, заканчивая размером фотографии в мб.
к каждому примени весовой коэффициент
не понравиться отображение - изменишь веса

-~{}~ 23.08.07 08:50:

как бы это делал я
выбираешь параметры
среди множества фоток - находишь лучшее значение каждого параметра

I=(k1(a1-a0)^2+k2(b1-b0)^2+...)^0.5
чем ближе рейтинг к 0, тем фотка лучше
 

Semen

Семён
поставить фильтр на показ фотографий
показывать с числом голосов:
> 10
> 30
> 50
и т.д.
 

camka

не самка
Рейтинг - сумма всех оценок. Чем больше голосов, тем объективнее оценка. Рейтинг хороших фото будет рости быстрее, чем рейтинг плохих. Тут учтено и количество голосов и вес оценок, как вы и хотите.

Теоретически лучше сделать оценки от -2 до +2, тогда большое количество отрицательных голосов не будет увеличивать общий рейтинг фото. Показывать вы можете по шкале от 1 до 5, но внутри системы вести расчеты по шкале -2..+2.

Сначала сортируете по рейтингу (сумме). Если рейтинг одинаковый, то лучше тот, у кого меньше голосов, читай, больше высших оценок или выше средняя оценка. Если и количество голосов одинаково, то фото, добавленное позже, будет стоять выше, поскольку за него было отдано то же количество голосов, но за более короткий период времени.

Однако, тут вступает в силу фактор человеческой жадности. Намедни реализовал такую систему в своих фотоконкурсах. Дак, что бы вы думали!? Фото с самым высоким рейтингом имеет -20 (минус двадцать) баллов. Оказалось, что подавляющее большинство голосов (85-90%) - это самые низкие оценки. То есть, люди оценивают оду-две фотки наивысшими баллами, а все остальные - наименьшими, дабы увеличить отрыв от конкурентов.

В таких ситуациях, например, можно использовать математические модели, которые вычисляют вес голоса оценщика на основе истории всех данных им голосов. То есть, если он ставит подавлющее большинство -2, то его -2 будут иметь меньший вес (умножаться на какой-то коэфициент меньше единицы) при суммировании.
 

desperado

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

ONK

Пассивист PHPСluba
Когда делал рейтинг к фотогалерее думал над данной проблемой.
Пришёл к выводу, что надо вводить нелинейную зависимость "коэффициента полновесности" среднего результате голосования от количества голосов отданных за данную сущность.
Например если голос всего один, то к среднему результату голосования применяется коэффициент полновесности 75%, а если голосов уже 50 то коэффициент на средний результат уже составляет 100%.
Голоса между 1-м и 50м получают промежуточные коэффициенты полновесности гиперболически приближающиеся к 100% при 50 и более голосах.
Для реализации подобной нелинейной зависимости идеально подходит арктангенс.
Я использую вот такую штуку
$iRating = intval((100*(atan(1.50 + $iTot_votes/4) - 0.57))/3 * $fAvg_rating);
На память характеристик зависимости не помню.
 

camka

не самка
ONK
У вас получается, что пятьдесят пятерок имеют рейтинг выше, чем пятсот пятерок и одна четверка?
 

ONK

Пассивист PHPСluba
camka, 50 это уже хорошая выборка, не вижу ничего странного в том что чистая 5-ка выше чем почти 5-ка.

-~{}~ 26.08.07 15:02:

кому мало 50-ти, приведённый код даёт неограниченный просто для творчества.
 

@ndrey

Новичок
Соглашусь с Bitterman, оценивать общий рейтинг по усредненным оценкам, или по индексу, как предложил Dovg, но ввести регулируемый порог (по количеству проголосовавших за фотку, как вариант). Фотки, которые превысили порог выводятся первыми, а фотки которые не превысили порог выводятся последними, деля оставшийся рейтинг.
Тогда в Вашем случае (по усредненным оценкам, по 5 бальной шкале, при пороге 100) будет:
1. третья фотка: средняя оценка 5.00, число голосов 250.
2. первая фотка: средняя оценка 4.77, число голосов 300.
3. вторая фотка: средняя оценка 4,77, число голосов 2. <--здесь оставшийся рейтинг от 4,77 до 0
 

camka

не самка
Ваш регулируемый порог вхождения может сильно зависеть от специфики конкурса, длинны периода его проведения, продолжительности голосования, общего количества фото, общего количества голосов и т.д.

А как же вы можете оценить этот порог до начала конкурса, или даже во время его?
 

@ndrey

Новичок
Автор оригинала: camka
Ваш регулируемый порог вхождения может сильно зависеть от специфики конкурса, длинны периода его проведения, продолжительности голосования, общего количества фото, общего количества голосов и т.д.
он много о чего еще может зависить, но зачем все усложнять? истины не будет все равно...
А как же вы можете оценить этот порог до начала конкурса, или даже во время его?
никак - просто выставлять его вручную.
 

camka

не самка
Если уж исходить из того, что истины не будет все равно, то можно просто считать сумму отрицательных и положительных баллов: вполне подходящая и объективная во всех отношиниях математическая модель, и не надо заморачиваться со средними баллами и порогами вхождения.
 

kvf77

Red Devil
здесь надо использовать корректирующий коэффициент, например
round($sum / ($voiters +0.75), 1))

где 0.75 - это коррекция
в данном случае 5 баллов у фотки будет только тогда, когда за нее проголосует не менее 15 человек.

Чем больше корректирующий коэффициент - тем больше людей должны оценить фотку.
 

Эльдар

Новичок
round($sum / ($voiters +0.75), 1))
где 0.75 - это коррекция
Хорошое решение. Такой подход используется на gallery.ru

Могу предложить ещё идейку. Если кол-во проголосовавших меньше N, то выводить средний балл зеленым цветом (типа не созрело ещё). А если больше N, то выводить красным или оранжевым.

Если совместить с решением от kvf77, то получится и правильно и симпатично.
 

unnamed01

Новичок
по-моему решение очень простое
использовать средний бал, но при увеличении числа голосов использовать прогрессирующий коэффициент
например
один голос на 5: 5/1*1=5
пять голосов на 5 и пять на 4: (5*5+5*4)/10*1.2=5.4
сто голосов на 5 и один на 4: (100*5+4)/101*1.5=7.49

итого sum/num *k(num)
где функцию определите сами или сделайте ее в виде
switch(num)
{
case <5: return 1;
case <10: return 1.1;
...
case <200: return 1.5;
...
default: return 2;
}

и класть на всякие погрешности чай не page rank
 

YasonDelAlt

Новичок
Хм, вот вы тут все стремитесь к какой-то пятибальной шкале. А не проще ли было просто спрашивать понравилась ли пользователь фотография, и если тот ответит да то добавлять +1 к рейтингу, а если проигнорировал вопрос или ответил нет, то не прибавлять ни чего. Я например не могу оценить что-либо по пятибальной шкале, мне либо что-то нравится либо - нет. А еще неплохо бы было выводить два списка: один общий рейтинг, а второй новинки. Допустим штук семь (к примеру) новинок выводится, а когда появляется что-то новое то последнее из списка новинок переходит в общий список. Если что-то вися в новинках наберет приличный рейтинг, то и в общем списке займет подобающее место. При этом можно добавить "устаривание" рейтинга - каждую неделю (месяц, день) отнимать у всех фотографий некоторый процент рейтинга. Т.е. если фотка популярная, то и рейтинг будет пополняться, а если популярность спадет, то и она сползет вниз по списку.
 
Сверху