用户画像简介
睡不醒的鲤鱼 2021-05-15 机器学习 推荐系统
# 一、用户画像的分类
# 1.1 显式画像和隐式画像
- 显式画像:用户基础信息,根据行为分析出的 tag 等;
- 隐式画像:可以通过各种网络模型(如 Bert + LSTM 对用户的行为序列进行建模),将所有用户信息(tag 等)训练成一个 embedding。
# 1.2 两种画像的对比
- 隐式画像出现 bad case 无法溯源,而显式画像可控性、解释性较强;
- 隐式画像可以挖掘出用户隐含兴趣,而显式画像大多需要人为定义规则。
# 二、显式用户画像的内容
# 2.1 用户基本信息
- 性别
- 注册时填写
- 算法预测,根据用户点击行为预测
- 年龄
- 注册填写身份信息、手机号,可间接获取用户年龄
- 算法预测,根据用户点击行为预测
- 地理位置
- IP 地址、GPS 定位、常驻地地址、实时 GPS 定位
- 机型
- 手机型号、操作系统
# 2.2 用户行为信息
- 时间
- 第一次进入时间
- 最后一次退出时间
- 用户活跃时长
- 累积浏览时长
- 累积播放时长等
- 活跃度
- 线性加权,供模型训练筛选
- 分类、tag、主题、关键词
- 形式:[xxx: score, ...]
# 三、用户画像生命周期
- 短期画像:3 ~ 10 小时
- 中期画像:3 天、1 周
- 长期画像:5 周、10 周
为什么要按时间区分画像?
一个美食爱好者,可能在很长一段时间内,看到不反感的美食内容都会点进去;但对于体育分类,可能只会在世界杯、奥运会期间才会点击观看。
通过设置长短期画像,能够尽快更新用户兴趣,使推荐更准确。
# 四、画像更新流程
# 4.1 长、中期画像
- 根据 uid 查找最近 n 天日志
- 统计该用户点击或曝光的 item 信息
- 计算各个 tag 的分值
- 形成近期画像
- 按规定的时间单位对长、中期画像进行时间切片
- 合并上一步获取的画像切片与近期画像,形成更新后画像
举例:按周进行切片,长期画像包括 5 周用户的行为,使用长期画像的后四周与近期画像(1 周)的数据进行融合,避免完全重新计算过于耗时。
# 4.2 短期画像
- 根据 uid 读取短期时间窗口内日志
- 计算各个 tag 的分值生成更新后短期画像
# 4.3 用户 tag 分数计算
- CTR:贝叶斯平滑,威尔逊置信 CTR
- 先验分数:根据 APP 情况给 tag 不同的 base 分数
- 累积分数:点击、曝光、点赞、收藏等加权(弊端:获取有延迟)
- 变化率
- 时间衰减
- 观看时长
- 负反馈:点击 x,标明不感兴趣、反感等,评论是负面情感
所有因素进行线性融合,得到总体 score,再进行归一化,得到用户 tag 分数。
此外某些 tag 可能天生带属性:
- 举例
- 奥运会:短时效(快速消费型)
- 美食:长时效(细水长流型)
- 应用
- 短时效 tag 的 score 上升、衰减速度更快
- 过一段时间对用户曾经感兴趣的 tag 试探
- 弊端
- 简单统计可能不准确,需要耗费人力根据 tag 内容设置属性
# 五、基于用户画像的推荐
# 5.1 建立内容分桶倒排
每个 tag 下有若干内容,对每个内容进行打分,按分值倒排存储;当召回某个 tag 下的内容时,直接返回该 tag 下的 TopN,并且下次召回时会进行过滤。
- 千人一面:按端内整体用户行为计算,变动不大
- 千人千面:个性化排序,embedding 召回
- 问题:计算量过大(用户数 x 画像中的 tag 数)
- 折中方案(千人百面):聚类对用户分群
- 显式画像 tag 分数生成向量,进行 k-means
- 隐式画像 embedding 聚类
- 基于哈希
- 基于用户行为序列
参考:基于 embedding 的召回 (opens new window)
# 5.2 基于长中短期画像推荐
- 从不同生命周期的画像中抽取用户感兴趣的分类、关键词下面的内容,进行推荐
- 长、中、短期画像召回跳数可以通过模型训练进行预测,也可直接通过规则指定