机器学习第十七章——推荐系统
一.预测电影收视率
以预测第3部电影第1个用户可能评的分数为例子。
首先我们用 表示爱情浪漫电影类型,
表示动作片类型。上图左表右侧则为每部电影对于这两个分类的相关程度。我们默认
。则第一部电影与两个类型的相关程度可以这样表示:
。然后用
表示第 j 个用户对于该种类电影的评分。这里我们假设已经知道(详情下面再讲)
,那么我们用
即可计算出测第3部电影第1个用户可能评的分数。这里计算出是4.95。
1. 目标优化
为了对用户 j 打分状况作出最精确的预测,我们需要:
计算出所有的 为:
与前面所学线性回归内容的思路一致,为了计算出 ,使用梯度下降法来更新参数:
更新偏置(插值):
更新权重:
二.协同过滤
前提是我们知道了 也就是每个用户对于各个电影类型的喜爱程度。那么我们就可以根据各个用户对各部电影的评分=
反推出
。
1. 目标优化
当用户给出他们喜欢的类型,即 ,我们可以由下列式子得出
:
可出所有的 x 则为:
只要我们得到 或者 x ,都能互相推导出来。
协同过滤算法基本思想就是当我们得到其中一个数据的时候,我们推导出另一个,然后根据推导出来的再推导回去进行优化,优化后再继续推导继续优化,如此循环协同推导。
2. 协同过滤的目标优化
- 推测用户喜好:给定
,估计
:
- 推测商品内容:给定
,估计
:
- 协同过滤:同时优化
,估计
:
即:
因为正则化的原因在这里面不再有之前的 ,
。
3. 协同过滤算法的步骤为:
- 随机初始化
为一些较小值,与神经网络的参数初始化类似,为避免系统陷入僵死状态,不使用 0 值初始化。
- 通过梯度下降的算法计算出
,参数更新式为:
- 如果用户的偏好向量为
,而商品的特征向量为 x ,则可以预测用户评价为
。
因为协同过滤算法 和 x 相互影响,因此,二者都没必要使用偏置
和
,即,
、
。
三. 低秩矩阵分解
1. 向量化
还是以电影评分为例子。首先我们将用户的评分写成一个矩阵 Y 。
更为详细的表达如上图所示。矩阵 Y 可表示为 。这个算法也叫低秩矩阵分解(Low Rank Matric Factorization)。
2. 均值标准化 Mean Normalization
当有一个用户什么电影都没有看过的话,我们用 计算最后得到的结果全部都是一样的,并不能很好地推荐哪一部电影给他。
均值归一化要做的就是先计算每一行的平均值,再将每一个数据减去该行的平均值,得出一个新的评分矩阵。然后根据这个矩阵拟合出 ,最后的衡量结果加上平均值,即:
。而该
就作为之前什么都没有的一个权值进行推荐。
实际意义上来说,就是因为最后一人没有评分,所以将他的评分值赋予了其他人的均值。