标签值衰减
在用户画像里, 经常会用到衰减这个功能.
比如几个月前的行为计算出来的兴趣分值需要随时间衰减, 让近期的兴趣分值有机会排在前面, 更好的反映最近的兴趣偏好等.
常用的衰减方法可以选线性衰减或者是非线性的.
线性衰减, 最简单的就是一条递减直线, 直接把标签分值乘以一个常数系数.
非线性的, 例如 Exponential decay(指数式衰减):
指数衰减
指数衰减的公式如下:
其中, N0为初始值, t表示时间单位, N(t) 为t时刻的值, λ 是衰减系数.
那么如何用这个指数衰减公式呢 ?
假设我们有一个标签值为1, 我们想要180天后衰减到 0.001, 分值是一天更新一次, 那么:
N0 = 1, t = 180, N(180) = 0.001, 代入公式:
求得 λ = math.log(0.001/1)/(-180) = 0.0383
得到 λ 后就可以计算 t 天对应的分值了.
比如, t=1
的衰减后分值为:>>> 1*(math.e**(-0.0383*1))
0.9624241703266826
画图得到曲线:
参考
牛顿冷却定律 - 阮一峰的网络日志
http://www.evanmiller.org/rank-hotness-with-newtons-law-of-cooling.html