背景
依据用户发帖子所属于的分类,给用户打标签,并确定标签的权重。
比如:A用户总共发了8个贴子,其中有1个帖子属于spark分类,3个属于hadoop分类,4个属于storm分类。系统会给用户分别打个spark,hadoop,storm三个标签,但是这三个标签的权重该怎么确定呢?
有一种简单的方案:用贴子的数量做为权重,那在这个例子中,spark权重就是1,hadoop权重就是3,storm权重就是4。这样是有问题的,比如如果4个跟storm相关的帖子是前年发的,而3个跟hadoop相关的帖子是近一周发的。这样的话,只计算数量,storm的权重比hadoop的权重高,看上去不合理,因为没有考虑到时效性,在我们看来,hadoop分类下的帖子数量虽然没storm的帖子数量多,但是发帖的时间距离现在比较近,更能反应发帖者目前的状态。
指数衰减
某个量的下降速度和它的值成比例,称之为服从指数衰减。用符号可以表达为以下微分方程,其中N是指量,λ指衰减常数。
方程的一个解为:
这里N(t)是与时间t有关的量,N0 = N(0)是初始量,即在时间为零时候的量。
衰减速率的测定
平均寿命
如果这个衰减量是一个集合中的离散元素,可以计算元素留在集合中的平均时间长度。这被称为平均寿命(一般称寿命)。并且它可以被证明与衰减速率有关。
平均时间(或被称为指数时间常数)由此被看做一个简单的缩放时间:
因而,这是量减少到初始量的1/e所需要的时间。
利用指数衰减函数做为时间衰减因子,这个也是 最终的一个形态,标签的权重可以称为标签的热度,权重越大,热度就越高,时间衰减因子体现了标签的热度随着时间逐渐冷却的过程。