推荐系统文档(持续更新)

推荐算法架构

  1. 召回阶段(海选)
    召回决定了最终推荐结果的天花板
    常用算法:
    1. 协用过滤(基于用户基于物品的)
    2. 基于内容(根据用户行为总结出自己的偏好,根据偏好通过文本挖掘技术,找到内容上相似的商品)
    3. 基于隐语义
  2. 排序阶段
    召回决定了最终推荐结果的天花板,排序逼近这个极限,决定了最终的推荐效果
  3. 策略调整
    推荐系统文档(持续更新)

推荐模型构建流程

Data(数据)—>Features(特征)—>ML Algorithm(机器学习算法)—>Prediction Output(预测输出)

  • 数据
  1. 显性数据
    Rating 打分
    Comments 评论/评价
  2. 隐形数据
    Order history历史订单
    Cart events加购物车
    Page views页面浏览
    Click-thru 点击
    Search log搜索记录
  • 数据量/数据能否满足要求
  • 特征工程
  • 从数据中筛选特征,一个给定的商品,可能被拥有类似品味或需求的用户购买,使用用户行为数据描述商品
    推荐系统文档(持续更新)
  • 用数据表示特征,将所有用户行为合并在一起,形成一个user-item矩阵
    推荐系统文档(持续更新)

协同过滤推荐算法(Collaborative Filtering)

算法思想:物以类聚,人以群分
基本的协同过滤推荐算法基于以下假设

  1. “跟你喜好相似的人喜欢的东西你也很有可能喜欢”:基于用户的协同过滤推荐(User-based CF) CF就是collaborative filtering
  2. “跟你喜欢的东西相似的东西你也很有可能喜欢”:基于物品的协同过滤推荐(Item-based CF)

实现协同过滤推荐有以下几个步骤:

  1. 找出最相似的人或物品: TOP-N相似的人或物品
    通过计算两两的相似度来进行排序,即可找出TOP-N相似的人或物品
  2. 根据相似的人或物品产生推荐结果
    利用TOP-N结果生成初始推荐结果,然后过滤掉用户已经有过记录的物品或明确表示不感兴趣的物品

以下是一个简单的示例,数据集相当于一个用户对物品的购买记录表:打勾表示用户对物品的有购买记录
关于相似度计算这里先用一个简单的思想:如有两个同学X和Y, X同学爱好[足球、篮球、乒乓球],Y同学爱好[网球、足球、篮球、羽毛球],可见他们的共同爱好有2个,那么他们的相似度可以用: 2/3* 2/4= 1/3=0.33来表示。
推荐系统文档(持续更新)

杰卡德相似度&余弦相似度&皮尔逊相关系数

余弦相似度

  • 度量的是两个向量之间的夹角,用夹角的余弦值来度量相似的情况
  • 两个向量的夹角为0是,余弦值为1,当夹角为90度是余弦值为0,为180度是余弦值为-1
    余弦相似度在度量文本相似度,用户相似度物品相似度的时候较为常用
  • 余弦相似度的特点,与向量长度无关余弦相似度计算要对向量长度归一化,两个向量只要方向一致,无论程度强弱,都可以视为‘相似”
  • 余弦相似度对绝对值大小不敏感带来的问题,用户A对两部电影评分分别是1分和2分,用户B对同样这两部电影进行评分是4分,5分用余弦相似度计算,两个用户的相似度达到0.98

皮尔逊相关系数Pearson

  • 实际上也是一种余弦相似度,不过先对向量做了**中心化,**向量a b各自减去向量的均值后,再计算余弦相似度
  • 皮尔逊相似度计算结果在-1,1之间-1表示负相关, 1表示正相关
  • 度量两个变量是不是同增同减
  • 皮尔逊相关系数度量的是两个变量的变化趋势是否一致, 不适合计算布尔值向量之间的相关度

杰卡德相似度Jaccard

  • 两个集合的交集元素个数在并集中所占的比例,非常适用于布尔向量表示
  • 分子是两个布尔向量做点积计算,得到的就是交集元素的个数
  • 分母是两个布尔向量做或运算,再求元素和
    推荐系统文档(持续更新)
    皮尔逊相关系数练习
    杰卡德相关系数练习