给物品或内容进行打分排序,在互联网应用中非常常见,如豆瓣评分、微博热搜、头条榜单以及口碑指数等,至于打分规则官方自然不会公布其核心算法逻辑,否则营销人员就会根据算法有针对性的攻击内容,到时我们看到的热榜可能会被大量营销广告所占据;虽然不能直接获取热度公式,但通过hacker news与Stack Overflow公开的处理逻辑,我也能给它山寨一个榜单算法。关于商品热度值相似的叫法还有:商品静态分、商品质量分、口碑指数等,其实都在讲商品热度这个问题;关于如何构建商品热度排行榜,我们首先应该坚信 好的榜单不是拍出来的。
一个完美的热度排名算法应该考虑以下问题
- 1, 运营同学问能否通过人工干预实现部分商品的排序,如营销类、合作类以及热点话题类相关内容。
- 2, 受爬虫或人气大v影响,部分商品点击量会无限暴增,但商品热度的增长速度不能无限增大。
- 3, 排行榜商品应不定期自动更换,不能因为单一维度变化影响商品热度排序。
- 4, 多个维度共同打分时,如何权衡每种维度的权重。
- 5, 不同品类下的商品热度是否可比,如邀请函和日签。
- 6, 随着时间推移,过早上架的商品应该降权,以确保新上架商品有足够的曝光机会
- 7, 商品的热度值要有参照性,最好能落在一个固定的区间里,例如当说商品热度值是15时,听的人是没有一个宏观概念的,他们不知道商品热度值15代表什么,但如果说小明考了99分,你瞬间就会觉得小明很棒。
热度值算法
了解热度公式之前,我们先来看一个比较有意思的自然现象,将一杯开水放在低温环境中,由于物体和环境存在明显的温度差,这时温度高的物体会向温度低的物体传递热量直至环境和物体间温度平衡,温度差约明显物体散热会越快,这就是著名的牛顿冷却定律: ;而我们还需要额外考虑的是,当散热过程中继续往杯子里加入热水时水温还会继续上升。
那么最终的热度公式将包含如下几部分:
热度值 = 初始热度值 + 用户交互贡献值 - 时间衰减值
- 热度排名算法
明确各维度的含义
-
初始热度
给予商品初始热度一方面是为了让新上架的商品在排序列表中有一定的排序比重,让新商品获得一定的展示机会;另一方面运营可以通过动态调整初始值来运作一些热点话题和营销广告,如某花突然在微博上爆出“天猫总裁事件”。
初始值应该根据商品所属品类单独划定,这样才能契合不同品类的定位和特点,比如你在京东搜索"小米",满屏返回的都是小米手机,而不是小米手机壳;
为了能够完美处理问题一,还需要针对商品本身进行初始值设定,对运营类营销热点商品给予足够的权重配置才能确保优先曝光。
优先级:商品初始值 > 品类初始值
- 用户交互贡献
时间衰减
时间维度用来控制热度随时间的衰减,距离当下比较久远的内容应该具有更低的热度值,就像人会逐渐忘记一些之前做过的事情一样。- 发布时间:为了解决马太效应,随着时间推移过早上架的商品应该降权,以确保新上架商品有足够的曝光机会。
- 最近一次作品制作时间:好的内容具有沉淀意义,早期上架的商品当遇到某个时间节点或某个事件触发,依然有可能被再次激活,如中秋祝福、婚礼邀请函相关商品。
S(t) = S·exp[ -γ·(Tn+Tc-2·Tp) ]
其中S是商品初始分值与用户交互贡献分值之和,γ是重力因子(也叫冷却系数),该值越大,分值下降的会约快,Tn、Tc、Tp分别代表当前时间、最近一次作品的制作时间、商品发布时间,时间单位是天;通过公式可以看出,S是增函数,时间衰减是减函数,这样一增一减才能最终实现S(t)的平衡。其中重力因子是一个可调节的值,例如S值为100分,24小时后为1分,则可得出重力因子系数为0.192;如果想要加快冷却衰减则可以增大该值,否则减小;下图为不同的重力因子系数对应的衰减曲线:
衰减曲线
公式
S(热度指数) = [ if[(Tn-Tp) > 1M , score0 , 0] + log10(1+visitor) + ln(1+2·work) + ln(1+5·order) ] * exp[ -γ·(Tn+Tc-2·Tp) ]
这里有两点需要注意:- 为了避免出现log值为负的情况,需要将曲线沿x轴方向向左平移1个单位,即 y=lg(x+1)
- 为了消除问题5与问题7带来的影响,这里需要对S(热度指数)进行归一化处理。
归一化
数据归一化的目的是让数据能够均匀离散的分布于0-1之间,并且可以达到消除量纲的目的,让不同品类的指标可以进行相互比较;常用的归一化函数为最值归一化:
搞一个Demo
到此理论知识已倾囊相授,那么还需要结合实际来验证一下效果,以下是在百万商品集上进行简单的效果验证,毫秒级可出结果:易企秀商品域
思考
-
上述热榜算法并未考虑基于商品内容性质以及品类进行细分,感兴趣的同学可以参照知乎热榜,将数据分为全站、科学、数码、体育等多个版块的方式去做,不过主要流量还是集中于总榜。
-
该算法模型不仅仅可以用在榜单,还可以应用在用户画像系统 衡量标签的质量、应用在搜索推荐业务中 提升商品的排序效果。
写在最后
从技术人员的角度讲,一句话:技术本身是死的,但业务与人都是活的。如果技术人员对业务逻辑有深入了解的话,就会自然地去寻找更准确、高效的解决方法,双方合作起来也会更愉快;同样,产品经理在算法的实施中,绝对不是一句 “做榜单我们要用AI来完成” 就完事的,必须深入算法内部,对算法的原理做深入了解,然后结合自己的经验进行设计和优化,不然技术最终交付的东西,产品是没办法去验证它的质量的。
对该话题感兴趣的同学 还可以参考我的另外一篇文章 商品静态
推荐阅读:《阿里巴巴B2B电商算法实战》
推荐语:
阿里巴巴B2B在战略形态上经历了信息平台、交易平台和营销平台的升级迭代,本书聚焦营销平台商业形态背后的算法和技术能力,试图从技术和商业互为驱动的视角阐述技术如何赋能业务,并结合阿里巴巴集团在基础设域和算法创新上的沉淀,打造出智能B2B商业操作系统。
关注小晨说数据,获取更多大厂技术干货分享
回复“spark”,“flink”,“中台”,“机器学习”,“用户画像”获取海量学习资料~~~