php某个数的因子,php – 为贝叶斯排名系统添加额外因子(点击次数)

我为业余音乐家经营一个音乐网站,我们有一个基于10分的评分系统,然后计算出100分的总分.我们有一个“可信度”分数系统,直接影响平均分数的用户在评级点,但下一步是实施一个有效使用这些数据的图表系统.

我会尝试解释它是如何工作的,这样你就可以看到我拥有哪些数据.

>网站成员对1到10之间的曲目进行评级.

>该网站成员具有“可信度”分数,这只是网站周围各种活动积累的总分.例如,用户获得评分时获得100分,因此他们给出的评分越多,他们的“可信度”得分就越高.只有总可信度得分才会保存在数据库中,每次用户执行附加积分奖励的活动时都会更新.不存储这些个人活动.

>基于该用户的可信度与已评定该轨道的其他用户相比,为该轨道计算加权平均值,然后将其作为1到100之间的数字存储在轨道表中.

>在曲目表中,收听曲目的次数(即播放次数)也作为总计存储.

所以我必须处理的数据是:

>赛道的总体评分(1到100之间的数字)

>赛道的评分数量

>曲目的播放次数

在图表系统中,我想创建一个排名,使用上述3组数据在质量(总体评级,通过评级数量标准化)和受欢迎程度(播放次数)之间创建公平的平衡.但是系统应该比质量更重要地考虑质量,因此例如质量方面占标准化排名的75%和流行度25%.

在这个网站上搜索后,我找到了IMDB Bayesian-style system,它有助于计算质量方面,但是如何添加流行度(播放次数)并以我想要的方式平衡?

该网站是用PHP和MySQL编写的,如果有帮助的话.

编辑:标题显示“点击次数”,但这基本上相当于“播放次数”.

解决方法:

您可能想尝试以下操作.您提到的IMDB等式使用称重倾向于电影的平均评级或所有电影的平均评级:

WR = (v/(v+m)) × R + (m/(v+m)) × C

所以

v << m => v/(v+m) -> 0; m/(v+m) -> 1 => WR -> C

v >> m => v/(v+m) -> 1; m/(v+m) -> 0 => WR -> R

这应该是公平的.除非你真的知道你的数据,否则根据游戏次数计算0到100之间的受欢迎度得分是非常棘手的.首先尝试计算平均播放次数avg(p)和方差var(p),然后您可以使用这些来使用技术调用白化来缩放播放次数:

WHITE(P) = (p - avg(p))/var(p)

假设您的数据看起来像钟形曲线,这将给出-1到1之间的分数.然后,您可以通过再次缩放将其缩放到0 – 100范围内:

POP = 50 * (1 + WHITE(P))

要根据某个加权因子w(例如0.75)组合得分,您只需执行以下操作:

RATING = w x WR + (1 - w) x POP

玩这些,让我知道你是如何进行的.

注意:这并不能解释这样一个事实:一个用户可以“游戏”人气购买多次播放曲目.你可以通过惩罚一首歌的多个剧本来解决这个问题:

deltaP =(1 – (Puser – 1)/ TPuser)

哪里:

> deltaP = #play中的变化

> Puser =此用户播放此曲目的时间

> TPuser =用户播放的曲目总数(非唯一)

因此,用户只播放一首曲目的次数越多,它对该曲目的播放总数就越少.如果用户的收听习惯多种多样,那么TPuser会很大,所以deltaP会回到1.这仍然可以游戏,但这是一个好的开始.

标签:php,mysql,ranking,bayesian,rating-system

来源: https://codeday.me/bug/20190630/1338996.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值