2010-06-09 5 views
3

У меня есть несколько страниц на веб-сайте, и мне нужно создать заказ на основе «популярности»/«деятельности»Формула для популярности? (на основе «нравится», «комментарии», «мнения»)

Параметры, которые у меня есть для использования являются:

  • просмотров на страницу
  • комментарии, сделанные на странице (есть форма в нижней части, где использование может сделать комментарии)
  • клики, сделанные на «как это» значок

Существуют ли какие-либо стандарты для формулы для популярности? (Если не мнения тоже хорошо)

(изначально я думал просмотров + 10 * комментарии + 10 * likeit)

+0

Как Вы оцениваете положительные комментарии против негативных комментариев? Должны ли «подобные» быть такими же важными, как комментарии? –

+0

мы не оцениваем положительные и отрицательные комментарии. Является ли «likeits» таким же важным, как комментарии, это то, что я выбрасываю там. Я довольно гибкий. (возможно, «самый активный» может быть лучшим термином, чем «самый популярный») – paullb

ответ

2

Там нет стандартной формулы для этого (как там может быть?)

Что у вас есть выглядит довольно нормальное решение, и, вероятно, хорошо работать. Конечно, вы должны поиграть с 10-ми, чтобы найти ценности, соответствующие вашим потребностям.

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

2

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

Вы даже можете попытаться подходить к компьютерному обучению, чтобы «узнать», что такое хорошее взвешивание для объединения каждого из этих чисел, как в формуле вашего примера. Выполнение этого вручную также может быть не слишком сложным.

+0

Спасибо за идею, варианты, которые вы предлагаете, уже являются параметрами в списке результатов. Последней «общей популярностью» является то, что я пытаюсь получить здесь. – paullb

0

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

Посещаем ли вы время, проведенное пользователем? Вы также можете использовать это, так как 2-секундный просмотр означает менее 3-х минут.

1

Я использую,

(C*comments + L*likeit)*100/views 

где вы должны использовать C и L в зависимости от того, насколько вы цените каждый атрибут. Я использую C = 1 и L = 1.

Это дает вам процент просмотров, который сгенерировал положительное действие, делая предметы с более высоким процентом наиболее «популярным». Мне это нравится, потому что это дает возможность для новых предметов быть очень популярными вначале, показывая вверх и получая больше просмотров и тем самым становясь менее популярными (или более) до стабилизации.

В любом случае, Надеюсь, это поможет. PS: Из этого все равно будет работать без «* 100», но мне нравится проценты.

1

На самом деле есть общепринятый лучший способ вычислить это:
http://www.evanmiller.org/how-not-to-sort-by-average-rating.html

Вам может понадобиться объединить «любит» и «комментарии» в один балл, присваивая свой собственный весовой коэффициент для каждого, прежде чем подключить его в формулу как значение «положительного голоса».

из приведенной выше ссылке:

Score = Нижняя граница Уилсона забить доверительный интервал для Бернулли параметра

Нам необходимо сбалансировать соотношение положительных оценок с неопределенности небольшого числа наблюдений. К счастью, математика была разработана в 1927 году Эдвином Б. Уилсоном. Мы хотим, чтобы задал вопрос: Учитывая, что у меня есть рейтинги, есть вероятность, что «настоящая» доля положительных оценок - это хотя бы что? Уилсон дает ответ . Учитывая только положительные и отрицательные рейтинги (т.е. не 5-звездочный шкале), нижняя граница доли положительных оценок определяется по формуле: enter image description here

(Используйте минус, где он говорит плюс/минус, чтобы вычислить нижний оценка.) Здесь является наблюдается доли положительных оценок, 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 это общее число оценок, и доверие относится к статистическому уровню достоверности: подобрать 0,95 иметь 95% вероятность того, что ваша нижняя граница верна, 0.975 , чтобы иметь шанс на 97,5% и т. Д. Z-счет в этой функции никогда не изменений, поэтому, если у вас нет пакета статистики, или если производительность является проблемой вы всегда можете скорректировать значение здесь для z. (Используйте 1,96 для уровня достоверности 0,95.)

Та же формула, как SQL запрос:

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;