查看原文
其他

​基于时间加权的用户购买类目意愿计算

有赞技术 有赞coder 2021-02-08
文 | Jason on 大数据
一、背景
在 DMP 的人群画像或者商品画像等的应用中,有一类常见的打分需求:旨在基于一些 transactions,为两种关系打上一个归一化的分数。比如基于一个用户的购买商品行为对该用户购买类目意愿打分,该文章讨论如何在考虑时间因素的情况下给用户打分。

二、要求

  • transaction 发生的时间越近,其所占的比重越大,且减小的速度越来越慢。

  • 所有分数都需要正则化到 0-100 区间。


三、数据形式

输入的数据(表示某人某天买了某个类目多少单):用户 id、日期、类目 id、订单数
最终产出数据:用户 id 对每个类目的购买意愿分

三、实现方式

1) 要求 transaction 发生时间和现在的距离越小,这条记录越大,就像一个热门事件,会被人慢慢遗忘,且后续遗忘的速度越来越慢。
基于这个需求,很容易让人想到基于热力学的牛顿冷却定律:物体的冷却速度,与当前温度与室温之间的温差成正比。

换成数学语言表达:
其中H为室温,初始时刻的温度为:
其中α>0为与物体有关的常数,为负数表示当物体温度高于室温的时候,物体温度会下降,但当物体温度低于室温的时候会上升。
对于上个公式,两边取积分:


eg: 人体在死亡后,温度调节功能随即消失,由此正常温度(假设37)与室温比较,利用牛顿冷却定律可以获得死亡时间。
假设某冬天早上,接到报警,街头发现流浪汉尸体,6:30AM测量其体温为18度,到了7:30AM,其体温已经下降为16度。


预备知识完了,现在我们回到业务:假设transaction发生当天的热度为100度 而180天之前的transaction我们假设降为1度,又假设室温为0度,可以求出α:



2) 对分数(上面的sum_score)做归一化。

假设对于sum_score,有最大值和最小值,如果差距过于大,会先对其做对数处理:


图像为:


该函数以原点为中心,将实数集映射到值(0,1)且两边都是开区间。我们希望通过平移和拉伸,对于上面的 [ -15,2 ] 的区间映射做映射:


符合要求,然后 0-1 的分数再乘以 100,将其转成 0-100 的归一分数。

扩展阅读
  1. 大数据开发平台(Data Platform)在有赞的最佳实践
  2. 有赞数据仓库元数据系统实践
  3. How we redesigned the NSQ - 其他特性及未来计划
  4. HBase 写吞吐场景资源消耗量化分析及优化
  5. 有赞大数据平台安全建设实践
  6. Flink 在有赞实时计算的实践
  7. SparkSQL 在有赞的实践
  8. Druid 在有赞的实践
  9. 实时计算在有赞的实践-效率提升之路
  10. DataX在有赞大数据平台的实践
  11. Flink 滑动窗口优化


-The End-
Vol.218







有赞技术团队为 442 万商家,150 个行业,330 亿电商交易额提供技术支持


微商城|零售|美业 | 教育


微信公众号:有赞coder    微博:@有赞技术技术博客:tech.youzan.com





The bigger the dream, the more important the team.

    您可能也对以下帖子感兴趣

    文章有问题?点此查看未经处理的缓存