首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在贝叶斯排名系统中添加额外的因素(点击次数)

在贝叶斯排名系统中添加额外的因素(点击次数)
EN

Stack Overflow用户
提问于 2011-05-16 12:14:38
回答 1查看 548关注 0票数 4

我经营一个业余音乐家的音乐网站,我们有一个基于10分的评分系统,然后计算成100分中的一个整体得分。我们为用户建立了一个“可信度”评分系统,它直接影响评分点的平均得分,但下一步是实施一个有效利用这些数据的图表系统。

我将试着解释这一切是如何工作的,这样你就可以看到我有哪些数据可供我使用。

  • A站点成员的评分介于1到10之间。网站成员的
  • 有一个“可信度”评分,这只是网站周围各种活动的累计积分。例如,一个用户给一个评分获得100分,所以他们给予的评分越多,他们的“可信度”分数就越高。只有总可信度分数保存在数据库中,每次用户执行带有积分奖励的活动时都会更新。这些单独的活动是不被存储的。
  • 根据这个用户的可信度对该轨道进行评估,计算出该轨道的加权平均值,然后将其作为1到100之间的一个数字存储在轨表中。在轨道表中的
  • 中,一个曲目的收听次数(即播放次数)也被存储为一个总数。

所以我要处理的数据是:

  • 对曲目的总体评分(1到100之间的数字)
  • 的曲目的编号
  • 的曲目的播放次数(

)

在图表系统中,我希望创建一个使用上述3组数据的排名,以便在quality (总体评级,与分级数量标准化)和popularity (播放数量)之间建立公平的平衡。但是系统应该比流行程度更多地影响质量,例如质量方面占标准化排名的75%和流行度的25%。

在搜索了这个网站后,我发现了IMDB Bayesian-style system,它有助于解决质量方面的问题,但是我如何增加流行程度(播放的数量),并以我想要的方式实现它的平衡?

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

编辑:标题上写着“点击次数”,但这基本上等同于“剧本数量”。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-05-18 15:39:43

您可能想尝试以下几种方法。您提到的IMDB方程使用称重来倾向于电影的平均评级或所有电影的平均评级:

代码语言:javascript
复制
WR = (v/(v+m)) × R + (m/(v+m)) × C 

所以

代码语言:javascript
复制
v << m => v/(v+m) -> 0; m/(v+m) -> 1 => WR -> C

代码语言:javascript
复制
v >> m => v/(v+m) -> 1; m/(v+m) -> 0 => WR -> R

这通常应该是公平的。根据剧本的数量计算0到100之间的受欢迎程度是非常困难的,除非你真的知道你的数据。首先,尝试计算平均播放次数avg(p)和方差var(p),然后可以使用它们来使用技术调用白化来缩放播放数:

代码语言:javascript
复制
WHITE(P) = (p - avg(p))/var(p)

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

代码语言:javascript
复制
POP = 50 * (1 + WHITE(P))

要将基于加权因子w(例如0.75)的分数组合起来,您只需这样做:

代码语言:javascript
复制
RATING = w x WR + (1 - w) x POP

玩这些让我知道你是怎么相处的。

注:这并不能解释一个事实,一个使用可以“游戏”的普及购买玩了很多次。你可以通过惩罚一首歌的多个剧本来解决这个问题:

deltaP = (1 - (Puser - 1)/TPuser),其中:

  • deltaP =在#plays中更改
  • Puser=此用户已播放此曲目的次数
  • TPuser=用户

播放的总曲目数(并不是唯一的)

因此,用户只播放一个音轨的次数越多,它对该曲目的播放总数的计数就越少。如果用户的收听习惯是多样的,那么TPuser就会很大,所以deltaP将趋于1,这仍然可以被玩,但这是一个好的开始。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6017208

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档