目录
一、简介
推荐系统是一个很有趣的课题,因为其最初在机器学习领域并非研究热点,但在实际应用中却十分广泛,目前也成了一大方向。现在几乎任何的社交媒体,电商平台等等互联网公司都有相应的推荐系统。
如表16-1所示,现有一些电影以及用户,每个用户都对某些电影进行了评分。现在根据用户X的评分记录,求最好推荐那些在其未看过的电影?
电影\用户 | 用户1 | 用户2 | 用户3 | 用户4 | ...... |
---|---|---|---|---|---|
电影1 | 5 | 5 | 0 | 0 |
...... |
电影2 | 5 | ? | ? | 0 | ...... |
电影3 | ? | 4 | 0 | ? | ...... |
电影4 | 0 | 0 | 5 | 4 | ...... |
电影5 | 0 | 0 | 5 | ? | ...... |
...... | ...... | ...... | ...... | ...... | ...... |
为了方便接下来的讨论,现在定义一些标记:
:代表用户总数。
:代表物品总数,在本例中即为电影总数。
: 代表用户 是否评价过物品, 当时表示评价过,反之为否。
: 代表用户 对物品的评分。
: 代表用户 评价过的物品总数。
二、基于内容的推荐系统
2.1 系统简介
基于内容的推荐系统其特点主要是根据物品的元信息生成一些特征,并以此来学习用户评分的标准。
该系统的优点在于:
-
特征易于被人为理解,例如特征为新闻中的一些关键词等等。
-
每个用户的评分标准可以单独训练,与其他用户无关。
-
新的物品可立马获得评分并用于推荐。
同时,其最大的难点也在于如何选取最优的特征。最终使用时会先预测用户对还未评分过的物品的评分,推荐评分最高的前几项。
2.2 训练算法
假设已知系统中物品的一些特征,如图表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 | ...... |
...... | ...... | ...... | ...... | ...... | ...... | ...... | ...... | ...... |
不妨利用之前学过的线性模型来进行拟合,设假设函数为:
(公式 16.1)
设用户所对应的参数向量为:
设物品所对应的特征向量为 :
于是,带正则项的损失函数为:
(公式 16.2)
对全系统所有用户的损失函数求和即为:
(公式 16.3)
利用梯度下降法来进行最优化可得:
....... (公式 16.4.1)
....... (公式 16.4.2)
三、基于协同过滤算法的推荐系统
3.1 系统简介
在上节的系统中,物品的特征是已知的,如果只有用户的评分而没有任何特征,又该如何构建系统呢?
回顾公式(16.3)可知,用户的评分标准θ和电影的特征X的“地位”是等价的。即若已知用户的评分标准以及对电影的评分,可拟合出电影的各个特征。
再强调一遍,在已知用户对电影的评分的情况下,若已知用户的评分标准θ则可拟合出各个电影的特征X,若已知各个电影的特征X,则可拟合出用户的评分标准θ。
现在即没有θ,也没有X,该如何处理呢?协同过滤算法(Collaborative Filtering Algorithm),即为处理这种情况的算法,其核心思想为:同时拟合θ和X两者。
其优点为:
- 可以在不需要显示的特征工程来提取特征。
但缺点也很明显:
-
每个用户的评价标准与其他用户相关。
-
引入了超参数---特征的数量K。
-
训练出来的参数不利于人为的理解。
3.2 训练算法
设每个电影 有k个特征,即。于是,可设每个用户 有(k+1)个评分参数,即。在训练之初,将所有电影的参数向量X以及用户的评分参数向量θ均随机初始化。
同时,依然采用线性回归来对评分进行拟合,即假设函数依然为(公式 16.1)。而损失函数因为加入了正则项,且需要同时拟合X与θ的缘故,需要修改为如下形式(可假设未评分时y默认为0,不过默认为多少其实无意义)。
(公式 16.5)
同样可利用梯度下降法来训练模型,梯度更新公式为:
....... (公式 16.6.1)
....... (公式 16.6.2)
....... (公式 16.6.3)
....... (公式 16.6.4)
最终在预测时,同样只需要对当前未评分过的物品进行评分,推荐得分最高的即可。
四、实用技巧
4.1 均值归一化
在具体运用时,一般会先将求出每个物品的评分的均值,并进行均值归一化,再去进行训练。在预测时,也会对预测的结果加上减去的均值作为最终评分结果。
其好处在于,对每个物品都保留了“基础分”,这样在新加入用户时,对新用户进行推荐也就有了一定的基础。
4.2 向量化
向量化一直都是很重要的优化手段,回顾之前的算法中也常常用到。在本章中,尤其是在协同过滤算法中其优化效果更明显。
设电影特征矩阵X以每个电影的特征向量为行向量,用户评分参数矩阵θ以用户评分参数向量为行向量。
则可得预测评分与真实评分之间的误差矩阵为:
(公式 16.7)
于是,X和θ的梯度可表示为:
(公式 16.8.1)
(公式 16.8.1)
以此来进行梯度下降可大幅度优化计算。
五、总结
本章浅谈了有关推荐系统的基础知识,具体有:
- 简要的介绍了推荐系统。
- 介绍了基于内容的推荐系统。
- 介绍了基于协同过滤算法的推荐系统。
- 介绍了一些具体运用时的使用技巧。
若有不当的地方,欢迎讨论。