gpt4 book ai didi

php - 如何制作随时间递减的 Wilson 得分区间

转载 作者:IT王子 更新时间:2023-10-29 00:36:13 24 4
gpt4 key购买 nike

所以我正在研究一个威尔逊分数区间来整理我网站上的热门内容,但现在它只是静态的。我的意思是,在有人投赞成票或反对票之前,它会始终保持相同的分数。

这就是为什么我想实现分数随时间降低的原因。就像在这篇文章中一样。 How Reddit ranking algorithms work .在那篇文章中,他们解释了 Reddit 在内容上的得分会随着时间的推移而降低。

目前我有这个 php 函数,它可以根据赞成票和反对票给我一个分数:

function wilsonScore($up, $down)
{

$score = (($up + 1.9208) / ($up + $down) - 1.96 * sqrt(($up * $down) /
($up + $down) + 0.9604) / ($up + $down)) / (1 + 3.8416 / ($up + $down)) ;

return $score;
}

我希望分数相同,但在整理时在 SQL 代码中添加一些内容。

SQL 代码如下所示:

SELECT *
FROM photos
WHERE status = 0
AND net_votes > 0 // display only picture that got rated over 0
ORDER BY score DESC

我的一个想法是最终使用一种算法以对数方式降低分数,发布的前 1-2-3 天时间不会对分数产生太大影响,然后分数开始下降.

编辑

在分数上添加一些东西在理论上是否可行,以便用户在网站上获得的声誉(如 SO)越多,他的评分就越值得?互联网上是否已经存在类似的东西?

这里有人已经在这里使用过类似的东西吗?

最佳答案

您可以在 SQL 中执行此操作:

$sql = "SELECT  `up`,
`down`,
`date`,
(((`up` + 1.9208) / (`up` + `down`) - 1.96 * SQRT((`up` * `down`) / (`up` + `down`) + 0.9604) / (`up` + `down`)) / (1 + 3.8416 / (`up` + `down`))) AS `wilson`,
((((`up` + 1.9208) / (`up` + `down`) - 1.96 * SQRT((`up` * `down`) / (`up` + `down`) + 0.9604) / (`up` + `down`)) / (1 + 3.8416 / (`up` + `down`))) / LN(DATEDIFF(NOW(), `date`) + EXP(1))) AS `weighted_wilson`

FROM `photos`

ORDER BY `weighted_wilson` DESC
";

使用自然对数衰减(调整为从原始威尔逊分数开始)。显然,您可以使用这些值。

您当然可以调整每个用户授予的赞成票或反对票的数量(即有经验的用户授予更大的赞成票/反对票)。

关于php - 如何制作随时间递减的 Wilson 得分区间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11680126/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com