2

背景;

我正在寻找一种方法来根据听众的反馈计算一段音频的分数。每次用户收听曲目时,如果他们喜欢,他们必须投票,简单的是或否。然后每个曲目都有一个分数,基于是票和否票的数量。

此外,我想在 31 天内统一衰减每次投票的值,所以在这段时间之后,它的值是 0,并且不会影响总分。

我发现了很多基于 reddit 和黑客新闻排名算法的讨论,但这些似乎会降低总分,而不是个人投票本身。根据最初投票的时间,每张选票都会有不同的衰减量。

任何人都可以帮助或推荐一些要查看的材料吗?

谢谢

4

2 回答 2

1

您可以将其建模为“是”= 1.0 和“否”= 0.0。然后,投票后第 n 天的投票价值 = (31-n)/31。如果 n > 31 则进一步条件,然后将其设置为 0。希望这能回答您的问题。

于 2013-03-08T19:56:46.473 回答
1

你想要什么加速退化。一个常见的是对数,因为它很容易实现。喜欢打1分,不喜欢打-1分。然后,当加总喜欢/不喜欢时,除以投票后的天数。第 1 天,投票的绝对值为 1。第 2 天,投票的绝对值为 1/2。第 3 天,价值 1/3,依此类推……第 31 天,价值 1/31 (0.03)。

对数退化的问题在于它下降得非常快。您可以使用许多其他方法,例如乘以 log(11-d),其中第一天 d=1,第二天 2,依此类推。它只允许降解 11 天。log(31-d) 将允许 31 天。您需要确保不要尝试执行 log(0) 或 log(-x)。

整个模型的另一个问题是如何处理只有旧票的事情。如果某样东西除了喜欢什么都没有,但所有的喜欢都是旧的怎么办?它将注册为不太喜欢,因为所有喜欢都已降级。

于 2013-03-08T20:01:37.910 回答