写点什么

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

  • 2019-09-27
  • 本文字数:928 字

    阅读完需:约 3 分钟

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

一、背景

在 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 的归一分数。


本文转载自公众号有赞 coder(ID:youzan_coder)


原文链接


https://mp.weixin.qq.com/s?__biz=MzAxOTY5MDMxNA==&mid=2455760033&idx=1&sn=cda32ddd58fea2a18e2d4ec9cb88f86b&chksm=8c686a84bb1fe39246da325ff19d7fdb66c947ee2ec061daf86e1f203d3e15f09eb3396e16f1&scene=27#wechat_redirect


2019-09-27 08:001251

评论

发布
暂无评论
发现更多内容

Gmail 推出与聊天、空间和会议应用程序集成的新设计

外贸IT程序客

C语言 unsigned long long 计算当前纳秒数时是否会越界

linux大本营

C'语言

ChatGPT 不适合您吗?这是您可以尝试修复它的方法

外贸IT程序客

OpenAPI ChatGPT 人工智能ChatGPT 吗? ChatGPT4

Gmail 功能大全:您了解所有这些功能吗?

外贸IT程序客

c++ 使用Glog 按照功能模块划分日志文件。同时,日志文件中也存有各个对应的等级,如 debug、info等日志等级

linux大本营

c++ 日志 glog

怎样在 Gmail 中设置电子邮件自动提醒

外贸IT程序客

谷歌收录 youtube

SOS大规模敏捷开发实施全流程项目管理(Scrum of Scrums)

顿顿顿

Scrum 敏捷开发 项目管理工具 敏捷开发管理工具 研发管理软件

码住!Java架构师人手一份的RabbitMQ笔记

小小怪下士

Java 程序员 RabbitMQ 消息中间件

C++查询数据库后写入Qtableview中配合Qstandaritemmodel

linux大本营

c++ 数据库

如何按发件人、大小、日期和未读对 Gmail 中的电子邮件进行排序

外贸IT程序客

谷歌收录 youtube

ChatGPT 可以写你的论文,但你应该使用它吗?

外贸IT程序客

ChatGPT 人工智能ChatGPT 吗? ChatGPT4

c++ 推荐几个线上观测的库

linux大本营

c++

K8s入门教程:10分钟带你速览全程

加入高科技仿生人

低代码 #k8s 容器化部署

posix协议挂载约束

linux大本营

posix

如何更改 Gmail 主题–只需4步完成

外贸IT程序客

谷歌 youtube

使用C++实现一个微积分的应用案例

linux大本营

c++

软件测试/测试开发丨面试题之计算机网络和数据库篇

测试人

软件测试 面试题 自动化测试 测试开发

急急急!Kafka Topic 资源权限紧张怎么办?

Zilliz

Zilliz mivlus kafkatopic

模型服务,支持渲染多张输出图片|ModelWhale 版本更新

ModelWhale

云计算 数据标注 数学模型 在线编程 数据门户

如何使用 Gmail Smart Compose 更快地撰写电子邮件

外贸IT程序客

谷歌 youtube

ChatGPT 错误代码 1020:这是什么以及如何解决?

外贸IT程序客

ChatGPT 人工智能ChatGPT 吗? ChatGPT4

c++ 读取数据库文件后将数据缓存到内存中直到服务重启

linux大本营

c++ map stl C++ STL

C++存储改造,如何将Oracle语句改成使用MySQL语句

linux大本营

c++ MySQL 数据库 oracle

怎样在 Gmail 中查找、添加、编辑和删除联系人

外贸IT程序客

谷歌 youtube

c++ 读取数据库文件后将数据缓存到内存中

linux大本营

c++ stl C++ STL

如何将 Outlook 邮件自动转发到 Gmail

外贸IT程序客

谷歌 youtube

架构设计通用原则

阿泽🧸

架构设计 三周年连更

c++11 实现内存缓存机制

linux大本营

内存管理 智能指针 C++11

nginx入门教程

linux大本营

nginx

如何使用等待队列

linux大本营

队列

怎样在 Gmail 中创建规则来过滤您的电子邮件

外贸IT程序客

谷歌 youtube

基于时间加权的用户购买类目意愿计算_文化 & 方法_Jason_InfoQ精选文章