牛顿冷却定律处理时间衰减和权重

牛顿冷却定律(Newton’s law of cooling):温度高于周围环境的物体向周围媒质传递热量逐渐冷却时所遵循的规律。当物体表面与周围存在温度差时,单位时间从单位面积散失的热量与温度差成正比,比例系数称为热传递系数。牛顿冷却定律是牛顿在1701年用实验确定的,在强制对流时与实际符合较好,在自然对流时只在温度差不太大时才成立。 是传热学的基本定律之一,用于计算对流热量的多少。

首先说一点,评选热门文章或者热门评论这种事首先可以是人为的,因为有人付了钱那平台就一定愿意干,比如微博的热搜,表面上是按照浏览量来算的,其实如果你上一秒刚看到一条10000的热搜,下一秒刷新页面就变成了9000的一条热搜占据了原来的位置,我天,虽然大家都心照不宣,但是微博这骗人都已经这么明目张胆了,不信的小伙伴自己去试试吧。

不过今天说的热门文章的推荐方法不考虑人为因素,如果完全按照程序算法去选择文章该如何定义规则呢?

我们第一点想到的既然是热门文章,那就要有热度,看的人越多越热门,所以让前端哥哥埋个代码,统计一下标题的点击数量,按照点击量降序排列就可以了;

如果觉得不过瘾,还可以把文章的收藏量、评论量也加进去,甚至你能想到的看完率、页面停留时长等等。然后给每个你能想到影响因素加上权重;比如:

热度=点击数*0.25+评论数*0.35+收藏数*0.4

然后按照热度数值进行降序排列就可以了。

好了,大功告成?如果你以为这样就结束了那就太简单了。我们现在还要考虑到时间因素,让文章的热度可以随着时间推移不断调整;想象一下,如果「文章和马伊琍离婚」点击量很高,然后就一直高一直爽,单纯按点击量计算那就霸榜了,下不来了,这样不行的。

所以我们这里引入一个牛顿冷却定律来应用到我们的算法当中,就是那个300年前被苹果砸到的牛顿,利用实验发现并总结出了这个规律。

想象一杯100度的开水,在一个室温0度的环境中,开水温度会不断下降至室温,在这个过程中温度的变化是有规律的。当物体表面与周围存在温度差时,单位时间从单位面积散失的热量与温度差成正比。

如果物体的初始温度是T0,Ta是环境温度,则经过一定单位时间h后的温度T将满足T-Ta=(T0-Ta)×(1/2);使上式成立所需的时间h称为半衰期,在这样的情况下,t时间后的温度将满足T-Ta=(T0-Ta)×(1/2)^(t/h)

小伙伴们看懂了吗,其实就是每次都降低了一半温度时的那个时间h是单位时间,也叫半衰期;用总时间t除以h得到有几个半衰期;然后代入函数就能得到现在的温度T了。

把这个描述成我们能看懂的式子就是如下:(对数学感兴趣的小伙伴可以自己查一下是怎么把公式导出来的,这里不说了)

当前温度 = 上期温度 x exp(-(冷却系数) x 间隔时间)

把热门文章的场景放进来就是这样子的:

本次得分 = 累计点击量 x exp^(-a x t)

exp是欧拉数,也写成eexp约等于2.718

冷却系数a是自己算出来的,比如这里我们加入希望100分的文章第二天降到80分,则反推得到a=0.223

间隔时间t=初始时间-当前时间

如果要减慢降低速度就将a值调低点,a越大计算结果越低。

拿这个公式试验一下准不准,

假设a=0.223,每天更新热度,则一篇阅读量每天递增100的文章热度是第一天80,第二天128,第三天154;

假设a=0.223,每天更新热度,则一篇阅读量第一天100,但是后面每天都是0的文章热度是第一天80,第二天64,第三天51;呈指数递减。

怎么样,满意吗?不满意还可以把评论和收藏也按权重加进去。

其实这个公式的应用场景非常多,比如排行榜、投票榜、用户标签权重衰减、RFM等等,足够小伙伴们用了。

The Why·Liam·Blog by WhyLiam is licensed under a Creative Commons BY-NC-ND 4.0 International License.

WhyLiam创作并维护的Why·Liam·Blog采用创作共用保留署名-非商业-禁止演绎4.0国际许可证

本文首发于Why·Liam·Blog (https://blog.naaln.com),版权所有,侵权必究。

本文永久链接:https://blog.naaln.com/2019/08/newton-law-cooling/