衰减算法

—— 桂林 2011-05-02

人的口味每天在变,旧的评价不一定准确。比如一部老片,一直评分不高,有5000个3星评分。最近由于新闻或流行趋势的影响,评价改变了,新增了500个5星评分。但历史评价的数量多,新评价不足以对总评分有决定性的影响,所以需要一套算法来增加新评分的权重,以更准确的表达评价。

方案1:周期递推衰减

 sum_rate = Sum(pending_rate) + last_sum_rate * 0.8
count_rate += count(pending_rate) + last_count_rate * 0.8
rate = sum_rate / count_rate

//once a period
last_sum_rate = sum_rate
last_rate = rate


方案2:实时衰减

根据方案1
// on rate
sum_rate = rate + sum_rate* ratio(last_update_time)
count_rate = 1 + count_rate * ratio(last_update_time)
rate = count_rate / sum_rate
last_update_time = now


ratio函数根据last_update_time的时间来计算衰减率。
如: last_update_time 是 1分钟前,返回 0.999
1天前 返回 0.95
1周前 返回 0.9
1月前 返回 0.85
1年前 返回 0.7

方案3: 汇总衰减

sum_rate = SUM(rate)(rate * ratio(last_update_time))
counte_rate = SUM(rate)(1 * ratio(last_update_time))


半衰期。类似于放射性物质的半衰期,半衰期是一个常量,我们可以设定半衰期为1年,则 ratio(now - 1year) = 0.5, ratio(now - 2year) = 0.25, ratio(now-3year) = 0.125

我们可以得出以下ratio函数

var half = 1year;
ratio = function(date)
delta = now - date
return 0.5 power (delta/half)
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值