使用Python进行内容/商品热度分析

6 sec read

在日常的网站或者APP的开发中,经常会遇到需要提供最近热门的功能,比如博客上最近热门的文章、 比如电商网站上最近热门的商品。想要实现最近热门最简单的方法是,取最近一段时间(比如一周),查看最近一段时间内的浏览量或订单数,按照数量进行排序。

今天要分享的相比单纯统计数量稍微复杂一些的方法。首先我们假设,热度是按指数递减的,即热度会随着时间递减。我们的热度计算公式就可以抽象为:

hot_score = ∑((count_visit * α ^ i)

其中:

  • α为衰减系数
  • i为距离当前的时间(通常使用距离天数,也可以使用周或月,看具体场景)
  • count_visit为某一时间间隔内的浏览次数(也可以是count_order,即某一时间间隔内的订单量)

当α=1时,即为最为简单的仅统计浏览量或者订单量的数据,整个公式中最不好确定的是α的取值。我通常使用假设的方式,最后通过不同假设计算出来的结果进行人工的选择。

  • 1周后的权重降为5,则α^7=0.5,α≈0.905724
  • 2周后的权重降为5,则α^14=0.5,α≈0.951695
  • 3周后的权重降为5,则α^21=0.5,α≈0.967532
  • 4周后的权重降为5,则α^28=0.5,α≈0.975549

相关代码:

一些说明:

  • 通常在计算时可以取30天的数据,原因是某个<1数字的30次方已经非常小了,计算的意义不大
  • 以上的计算针对的是有热度的内容或产品,如果部分内容不随时间衰减,使用上诉公式不影响

拓展学习:

以上只是从一个纬度进行的数据热度排序的方法,实际操作中往往会涉及到多个不同的纬度的结合。具体案例可以参考:

Update:2018-08-06

使用SQL改写为:

打赏作者
微信支付标点符 wechat qrcode
支付宝标点符 alipay qrcode

C语言学习:size_t

在学习C语言的时候,遇到了一个新的数据类型size_t,截止目前也没有完全理清这个类似的具体场景及出现的原因。
44 sec read

C语言学习:main()函数的正确写法

C语言虽然是一门古老的语言,但是其标准一直在完善,所以很多以前支持的语法在到当前已经不能在使用了。 C语言的版
41 sec read

Scipy数学函数的Scala实现

最近在推进项目的时候,遇到需要将线下的Python代码转化成线上的集群代码,由于机器代码环境是Scala,所以
4 min read

发表评论

电子邮件地址不会被公开。 必填项已用*标注