第十六章-推荐系统 深度之眼_吴恩达机器学习作业训练营

目录

一、简介

二、基于内容的推荐系统

2.1 系统简介

2.2 训练算法

三、基于协同过滤算法的推荐系统

3.1 系统简介

3.2 训练算法

四、实用技巧

4.1 均值归一化

4.2 向量化

五、总结


一、简介

推荐系统是一个很有趣的课题,因为其最初在机器学习领域并非研究热点,但在实际应用中却十分广泛,目前也成了一大方向。现在几乎任何的社交媒体,电商平台等等互联网公司都有相应的推荐系统。

如表16-1所示,现有一些电影以及用户,每个用户都对某些电影进行了评分。现在根据用户X的评分记录,求最好推荐那些在其未看过的电影?

表16-1 电影与用户
电影\用户 用户1 用户2 用户3 用户4 ......
电影1 5 5 0

0

......
电影2 5 ?  0 ......
电影3 4 0 ......
电影4 0 0 5 4 ......
电影5 0 0 5 ......
...... ...... ...... ...... ...... ......

为了方便接下来的讨论,现在定义一些标记:

n_{u}:代表用户总数。

n_{m}:代表物品总数,在本例中即为电影总数。

r(i,j): 代表用户 j是否评价过物品i, 当r(i,j) = 1时表示评价过,反之为否。

y^{(i,j)}: 代表用户 j对物品i的评分。

m_{j}:  代表用户 j评价过的物品总数。

二、基于内容的推荐系统

2.1 系统简介

基于内容的推荐系统其特点主要是根据物品的元信息生成一些特征,并以此来学习用户评分的标准。

该系统的优点在于:

  • 特征易于被人为理解,例如特征为新闻中的一些关键词等等。

  • 每个用户的评分标准可以单独训练,与其他用户无关。

  • 新的物品可立马获得评分并用于推荐。

同时,其最大的难点也在于如何选取最优的特征。最终使用时会先预测用户对还未评分过的物品的评分,推荐评分最高的前几项。

2.2 训练算法

假设已知系统中物品的一些特征,如图表16-2所示,对于用户每个用户评分标准的学习均为一个独立的回归问题。

即对于用户j,有数据集{ (x_{1}^{1}x_{2}^{1},...x_{k}^{1}y^{(1,j)}) ,(x_{1}^{2}x_{2}^{2},...x_{k}^{2}y^{(2,j)}) ,......, (x_{1}^{n_{m}}x_{2}^{n_{m}},...x_{k}^{n_{m}}y^{(n_{m},j)}) }训练一个特征到评分的回归模型。

表16-2 基于内容的推荐系统
电影\用户 用户1 用户2 用户3 用户4 ...... 特征x1 特征x2 ......
电影1 5 5 0

0

...... 0.9 0 ......
电影2 5 ?  0 ...... 1.0 0.01 ......
电影3 4 0 ...... 0.99 0 ......
电影4 0 0 5 4 ...... 0.1 1.0 ......
电影5 0 0 5 ...... 0 0.9 ......
...... ...... ...... ...... ...... ...... ...... ...... ......

不妨利用之前学过的线性模型来进行拟合,设假设函数为:

                    y =\theta_{0}^{j}+ \theta_{1}^{j}x_{1} + \theta_{2}^{j}x_{2} +...... + \theta_{k}^{j}x_{k}                      (公式 16.1)

 设用户j所对应的参数向量为:     \theta^{(j)} = \{ \theta_{0}^{j}, \theta_{1}^{j} , \theta_{2}^{j},...... , \theta_{k}^{j}\}

 设物品i所对应的特征向量为 :      x^{(i)} = \{ x_{1}^{i} , x_{2}^{i},...... , x_{k}^{j}\}

 于是,带正则项的损失函数为:

                     J(\theta^{(j)}) = \frac {1}{2} \sum _{i:r(i,j) = 1} ( (\theta^{j})^{T}x^{(i)} - y^{(i,j)} )^{2} + \frac {\lambda}{2} \sum_{t=1}^{k} (\theta^{(j)}_{t})^{2}         (公式 16.2)

 对全系统所有用户的损失函数求和即为:

                   J(\theta) = \frac {1}{2}\sum _{j=1}^{n_{u}} \sum _{i:r(i,j) = 1} ( (\theta^{j})^{T}x^{(i)} - y^{(i,j)} )^{2} + \frac {\lambda}{2}\sum_{j=1}^{n_{u}}\sum_{t=1}^{k}(\theta^{(j)}_{t})^{2}  (公式 16.3)

利用梯度下降法来进行最优化可得:

                    \theta^{(j)}_{t} := \theta^{(j)}_{t} - \alpha \sum _{i:r(i,j) = 1} ( (\theta^{(j)})^{T}x^{(i)} - y^{(i,j)} )x^{(i)}_{t}.......( t= 0)          (公式 16.4.1)

                    \theta^{(j)}_{t} := \theta^{(j)}_{t} - \alpha (\sum _{i:r(i,j) = 1} ( (\theta^{(j)})^{T}x^{(i)} - y^{(i,j)} )x^{(i)}_{t} + \lambda\theta^{(j)}_{t} ).......( t\neq 0)          (公式 16.4.2)

三、基于协同过滤算法的推荐系统

3.1 系统简介

在上节的系统中,物品的特征是已知的,如果只有用户的评分而没有任何特征,又该如何构建系统呢?

回顾公式(16.3)可知,用户的评分标准θ和电影的特征X的“地位”是等价的。即若已知用户的评分标准以及对电影的评分,可拟合出电影的各个特征。

再强调一遍,在已知用户对电影的评分的情况下,若已知用户的评分标准θ则可拟合出各个电影的特征X,若已知各个电影的特征X,则可拟合出用户的评分标准θ。

现在即没有θ,也没有X,该如何处理呢?协同过滤算法(Collaborative Filtering Algorithm),即为处理这种情况的算法,其核心思想为:同时拟合θ和X两者。

其优点为:

  • 可以在不需要显示的特征工程来提取特征。

但缺点也很明显: 

  • 每个用户的评价标准与其他用户相关。

  • 引入了超参数---特征的数量K。

  • 训练出来的参数不利于人为的理解。

3.2 训练算法

设每个电影 i 有k个特征,即X^{(i)} = \{ x^{(i)}_{1},x^{(i)}_{2},......,x^{(i)}_{k} \}。于是,可设每个用户 j 有(k+1)个评分参数,即\theta^{(j)} = \{ \theta^{(j)}_{0},\theta^{(j)}_{1},\theta^{(j)}_{2},......,\theta^{(j)}_{k} \}。在训练之初,将所有电影的参数向量X以及用户的评分参数向量θ均随机初始化。

同时,依然采用线性回归来对评分进行拟合,即假设函数依然为(公式 16.1)。而损失函数因为加入了正则项,且需要同时拟合X与θ的缘故,需要修改为如下形式(可假设未评分时y默认为0,不过默认为多少其实无意义)。

J(\theta) = \frac {1}{2}\sum _{j=1}^{n_{u}} \sum _{i=1}^{n_{m}} [( (\theta^{j})^{T}x^{(i)} - y^{(i,j)} )r(i,j)]^{2} + \frac {\lambda}{2}\sum_{j=1}^{n_{u}}\sum_{t=1}^{k}(\theta^{(j)}_{t})^{2}+ \frac {\lambda}{2}\sum_{i=1}^{n_{m}}\sum_{t=1}^{k}(x^{(j)}_{t})^{2}                     (公式 16.5)

同样可利用梯度下降法来训练模型,梯度更新公式为:

  \theta^{(j)}_{t} := \theta^{(j)}_{t} - \alpha \sum _{i:r(i,j) = 1} ( (\theta^{(j)})^{T}x^{(i)} - y^{(i,j)} )x^{(i)}_{t}.......( t= 0)        (公式 16.6.1)

  \theta^{(j)}_{t} := \theta^{(j)}_{t} - \alpha (\sum _{i:r(i,j) = 1} ( (\theta^{j})^{T}x^{(i)} - y^{(i,j)} )x^{(i)}_{t} + \lambda\theta^{(j)}_{t} ).......( t\neq 0)          (公式 16.6.2)

  x^{(i)}_{t} := x^{(i)}_{t} - \alpha \sum _{j:r(i,j) = 1} ( (\theta^{(j)})^{T}x^{(i)} - y^{(i,j)} )theta^{(j)}_{t} .......( t= 0)        (公式 16.6.3)

  x^{(i)}_{t} := x^{(i)}_{t} - \alpha (\sum _{j:r(i,j) = 1} ( (\theta^{(j)})^{T}x^{(i)} - y^{(i,j)} )theta^{(j)}_{t} + \lambda x^{(i)}_{t} ).......( t\neq 0)          (公式 16.6.4)

最终在预测时,同样只需要对当前未评分过的物品进行评分,推荐得分最高的即可。

四、实用技巧

4.1 均值归一化

在具体运用时,一般会先将求出每个物品的评分的均值,并进行均值归一化,再去进行训练。在预测时,也会对预测的结果加上减去的均值作为最终评分结果。

其好处在于,对每个物品都保留了“基础分”,这样在新加入用户时,对新用户进行推荐也就有了一定的基础。

4.2 向量化

向量化一直都是很重要的优化手段,回顾之前的算法中也常常用到。在本章中,尤其是在协同过滤算法中其优化效果更明显。

设电影特征矩阵X以每个电影的特征向量为行向量,用户评分参数矩阵θ以用户评分参数向量为行向量。

则可得预测评分与真实评分之间的误差矩阵error为:

                              error=(\theta^{T}X - y) * R            (公式 16.7)

于是,X和θ的梯度可表示为:

                       grad_{(X)} = (error) (\theta) + \lambda X       (公式 16.8.1)

                      grad_{(\theta)} = (error^T) (X) + \lambda \theta       (公式 16.8.1)

以此来进行梯度下降可大幅度优化计算。

五、总结

本章浅谈了有关推荐系统的基础知识,具体有:

  • 简要的介绍了推荐系统。
  • 介绍了基于内容的推荐系统。
  • 介绍了基于协同过滤算法的推荐系统。
  • 介绍了一些具体运用时的使用技巧。

若有不当的地方,欢迎讨论。

 

发布了18 篇原创文章 · 获赞 2 · 访问量 715

猜你喜欢

转载自blog.csdn.net/weixin_41542958/article/details/104742311