九、推荐系统实现用户聚类推荐
聚类分析(Cluster analysis),亦称为群集分析,是一种数据点分组的机器学习技术。给定一组数据点,可以用聚类算法将每个数据点分到特定的组中
推荐思路:将用户进行聚类,给每个聚类推荐该类人群喜欢的内容
实现用户聚类推荐的技术流程:
几个步骤:
用户聚类 → 分群热榜统计 → 计算结果缓存 → 在线服务
前两步的结果都会存入到高速缓存,然后在线服务使用缓存进行推荐
用户聚类
- 类别信息:性别、年龄、职业等等,
- 特征处理:使用one-hot把类别信息变成0、1的值
- 行为列表:播放、购买等等,
- 特征处理:因为时变长的,所以使用embedding的技术,转变成一个定长的密集向量。embedding:把有序列表输出成定长向量,每一个向量的值是一个数字,这样不同人的行为列表就可以通过向量直接计算相似度。
- 特征工程之后,把one-hot向量列表和embedding向量列表进行拼接,成一个大的向量列表(Vector Assembler),里面都是数字,把Vector Assembler输出给聚类算法
- 聚类算法,比如说K-means,是按照距离度量的常见的聚类算法。聚类算法的计算结果是:key是用户ID,value是聚类数字。把计算结果做两个输出,一个缓存到高速缓存中,一个到下一步进行分群热榜统计
分群热榜统计
- 首先由历史日志,用户-播放记录
- 收到聚类结果之后,把聚类结果和历史日志通过用户ID进行join,
- 然后就可以计算每个聚类的热榜结果,格式是:聚类-热榜列表,把热榜结果发给缓存
计算结果缓存
-
聚类结果:
- 正排列表,一般使用Cassandra
- 格式是:用户ID、聚类数字
-
分群热榜统计结果:
- 倒排列表,一般使用redis
- 格式是:聚类数字、推荐Item列表
-
这两个列表可以通过聚类数字进行关联
在线服务
当用户请求的时候,可以得到用户ID,在缓存中的第一个列表中获取聚类数字,然后在第二个列表中获取推荐列表
这样就实现了得到聚类数字获取推荐列表
聚类推荐的优缺点
- 优点
- 实现简单,spark、sklearn均有现成接口,数据结果存储量很小;
- 可以用于新用户冷启动,使用用户注册信息、从站外获取用户信息,行为列表,做聚类即可个性化推荐
- 缺点:
- 精度不高,群体喜欢的内容,并不一定个人喜欢,不够‘个性化’