标签系统
标签系统就是俗称的用户画像。从属性变化性质来分,标签系统可分为静态标签和动态标签:
- 静态标签:
- 短时间内变化不大的标签,比如性别、地域、职业、生活习惯等;
- 动态标签:
- 不断变化的行为标签,比如关注的产品类别、产品偏好、内容偏好等
从更新时间的频率上来说,又可以分为短期兴趣标签和长期用户标签:
- 短期标签的更新频率是分钟级或秒级;
- 长期标签的更新频率是天级或小时级;
在这个简化的推荐系统里,我们只考虑实时部分(绿色实线部分)是可以满足需求的。
所以只考虑短期兴趣标签的计算,还是出于简化问题的考虑,我们假设现在只有四个标签,描述用户对内容类别的感兴趣程度:美妆、汽车、衣服、电子产品。
对一个用户来说,可以用0-1的浮点值来描述其感兴趣程度(也可以更简化,大于某个阈值为1,小于某个阈值为0)
数据流处理系统(实时)
主要是绿色实线部分,针对系统推荐的内容。
用户有两种行为,点击或不点击,这个事件推送到流计算(其实是两个流,一个是点击流,一个是曝光流,这两个流根据用户id、内容id做join)。
流计算实时计算过去N秒(N可以根据业务需求取值,比如60,这就是一个事件窗口)内每个用户针对四种内容类别的点击率,然后把这个点击率作为用户的短期兴趣标签。
比如用户a:{
美妆:0.2,
汽车:0.1,
衣服:0.02,
电子产品:0.5
}
内容筛选系统
内容筛选系统就是根据用户的短期兴趣标签去筛选内容。
假设所有的内容都存储到某个数据库里,并打好了内容标签。
比如文档1:{
美妆:0.3,
汽车:0.5,
衣服:0.8,
电子产品:0.1
}
文档2:{
美妆:0.4,
汽车:0.2,
衣服:0.1,
电子产品:0.7
}
推荐流程是:用户发起访问—找到用户短期兴趣标签—计算文档与用户标签的相似度—相似度排序—展示内容。