人气公式?(基于“喜欢”、“评论”、“观点”)

pau*_*llb 5 algorithm popularity formula

我在网站上有一些页面,我必须根据“流行度”/“活动”创建一个排序

我必须使用的参数是:

  • 页面浏览量
  • 页面上的评论(底部有一个表格,用户可以发表评论)
  • 点击“喜欢”图标

受欢迎程度的公式有什么标准吗?(如果不是意见也很好)

(最初我想到了观点 + 10*评论 + 10*likeit)

Ane*_*pic 5

实际上有一个公认的最佳方法来计算这个:http :
//www.evanmiller.org/how-not-to-sort-by-average-rating.html

您可能需要将“喜欢”和“评论”组合成一个分数,为每个分数分配您自己的权重因子,然后将其作为“正面投票”值插入公式中。

从上面的链接:

分数 = 伯努利参数的威尔逊分数置信区间的下限

我们需要平衡正面评级的比例与少量观察的不确定性。幸运的是,这方面的数学是由 Edwin B. Wilson 在 1927 年计算出来的。我们想问的是:鉴于我的评分,有 95% 的机会正面评分的“真实”分数至少是多少?威尔逊给出了答案。仅考虑正面和负面评级(即不是 5 星等级),正面评级比例的下限由下式给出: 在此处输入图片说明

(在表示加/减的地方使用减来计算下限。)这p?观察到的正面评分的分数,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
Run Code Online (Sandbox Code Playgroud)

pos是正面评级的数量,n是评级的总数,置信度是指统计置信水平:选择 0.95 表示您的下限正确的概率为 95%,选择 0.975 的概率为 97.5%,等等。 z -score 在这个函数中永远不会改变,所以如果你没有一个方便的统计包或者如果性能是一个问题,你总是可以在这里硬编码一个值z。(对于 0.95 的置信水平,使用 1.96。)

与 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;
Run Code Online (Sandbox Code Playgroud)


Pet*_*der 2

对此没有标准公式(怎么可能有?)

您所拥有的看起来是一个相当正常的解决方案,并且可能会很好地工作。当然,您应该尝试使用 10 来找到适合您需要的值。

根据您的要求,您可能还需要添加时间因素(即每周 -X 点),以便旧页面变得不那么受欢迎。或者,您可以将“页面浏览量”更改为“上个月的页面浏览量”。同样,这取决于您的需求,它可能不相关。