机器学习实战(十三)推荐系统(协同过滤 Collaborative Filtering)

目录

0. 前言

1. 相似度

1.1. 欧式距离(Euclidean metric)

1.2. 皮尔逊相关系数(Pearson correlation coefficient)

1.3. 余弦相似度(Cosine similarity)

2. 基于内容(物品)的推荐算法

3. 基于用户的推荐算法

4. 基于内容(物品)的协同过滤推荐算法

5. 基于用户的协同过滤推荐算法

6. 实战案例

6.1. 基于物品的协同过滤算法

6.2. SVD压缩数据后,基于物品的协同过滤算法

6.3. 基于用户的协同过滤算法


学习完机器学习实战的推荐系统,简单的做个笔记。文中部分描述属于个人消化后的理解,仅供参考。

所有代码和数据可以访问 我的 github

如果这篇文章对你有一点小小的帮助,请给个关注喔~我会非常开心的~

0. 前言

在推荐算法中,数据通常由一个矩阵构成,每一行(列)代表用户,每一列(行)代表物品,每一个元素代表用户对物品的评分。

推荐系统的基本思想是,预测用户对物品的评分,若评分高,则推荐给该用户。

本篇主要简单介绍四种推荐系统:

  • 基于内容(物品)的推荐算法
  • 基于用户的推荐算法
  • 基于内容(物品)的协同过滤推荐算法
  • 基于用户的协同过滤推荐算法

注:基于内容的算法复杂度会随着内容的增加而增加,基于用户的算法复杂度会随着用户的增加而增加。

1. 相似度

1.1. 欧式距离(Euclidean metric)

欧式距离是两个向量之间的距离,定义如下:

d=\left\|A-B\right\|

距离越短,说明相似程度越高,因此可通过如下定义,将其转换到 [0,1] 范围内,越接近 1 ,说明相似度越高:

\frac{1}{1+d}

1.2. 皮尔逊相关系数(Pearson correlation coefficient)

皮尔逊相关系数是两个向量的协方差和标准差的商:

\rho =\frac{cov(A,B)}{\sigma_A\sigma_B}=\frac{\sum_{i=1}^{n}(A_i-\overline{A})(B_i-\overline{B})}{\sqrt{\sum_{i=1}^{n}(A_i-\overline{A})^2}\sqrt{\sum_{i=1}^{n}(B_i-\overline{B})^2}}

皮尔逊相关系数的取值范围是 [-1,1] ,通过以下定义,将其转换至 [0,1] 范围:

0.5+0.5*\rho

1.3. 余弦相似度(Cosine similarity)

余弦相似度是计算两个向量的夹角余弦值,如果向量正交,则相似度为 0 :

\cos(\theta)=\frac{A\cdot B}{\left\|A\right\|\left\|B\right\|}

余弦相似度的取值范围也是 [-1,1] ,通过以下定义,将其转换至 [0,1] 范围:

0.5+0.5*\cos(\theta)

2. 基于内容(物品)的推荐算法

基于内容的推荐算法要求已知物品的特征属性值,通过计算两个物品属性的相似程度,进行推荐。

根本道理就是,如果这两个物品相似,你喜欢这个物品,就预测你也喜欢另一个。

例如在下述例子中,已知电影的特征属性浪漫程度和动作程度,右侧是用户的评分:

  电影浪漫程度x_1 电影动作程度x_2 用户A
  • 8
    点赞
  • 33
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值