一.预测电影收视率
以预测第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
当有一个用户什么电影都没有看过的话,我们用 计算最后得到的结果全部都是一样的,并不能很好地推荐哪一部电影给他。
均值归一化要做的就是先计算每一行的平均值,再将每一个数据减去该行的平均值,得出一个新的评分矩阵。然后根据这个矩阵拟合出 ,最后的衡量结果加上平均值,即: 。而该 就作为之前什么都没有的一个权值进行推荐。
实际意义上来说,就是因为最后一人没有评分,所以将他的评分值赋予了其他人的均值。