推荐系统学习笔记——九、推荐系统实现用户聚类推荐

九、推荐系统实现用户聚类推荐

聚类分析(Cluster analysis),亦称为群集分析,是一种数据点分组的机器学习技术。给定一组数据点,可以用聚类算法将每个数据点分到特定的组中

推荐思路:将用户进行聚类,给每个聚类推荐该类人群喜欢的内容

推荐系统学习笔记——九、推荐系统实现用户聚类推荐_第1张图片

实现用户聚类推荐的技术流程:
推荐系统学习笔记——九、推荐系统实现用户聚类推荐_第2张图片

几个步骤:
用户聚类 → 分群热榜统计 → 计算结果缓存 → 在线服务

前两步的结果都会存入到高速缓存,然后在线服务使用缓存进行推荐

用户聚类

  • 类别信息:性别、年龄、职业等等,
    • 特征处理:使用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均有现成接口,数据结果存储量很小;
    • 可以用于新用户冷启动,使用用户注册信息、从站外获取用户信息,行为列表,做聚类即可个性化推荐
  • 缺点:
    • 精度不高,群体喜欢的内容,并不一定个人喜欢,不够‘个性化’

你可能感兴趣的:(推荐系统)