001. 符号系统
以电影评分为例,
002. 基于内容的推荐
每个人对不同内容电影的打分都是有规律的,可以通过机器学习表示出来,这里用逻辑回归来描述。
因此总体而言,每个人都有一个独立的逻辑回归模型,模型的输入特征,则是内容产品的特征向量。
003. 基于内容的推荐系统优化函数
单个人的逻辑回归参数向量theta,是由所有r(i,j)=1的特征及评分训练而得,即: 由他有评分的所有电影
对于整体所有人的向量,可以通过vectorization 得到
随机梯度下降优化参数更新公式
从此处可以看出,这里的基于内容的推荐方法,预测不同人对不同电影的评分,实际上是逻辑回归的(用户维)推广
内容m * 用户n 的评分矩阵,每个列切片(用户)对应一个用户的逻辑回归 的实际y值,每个横切片是n个逻辑回归模型的共用输入特征X
004. 协同过滤过程
基于内容的推荐需要有每个电影的特征,而实际中,我们有时没有这种产品或内容的特征,协同过滤的特点是可以自行学习特征
假设不知道每部电影的特征,但是却知道 每个人的偏好,即回归参数向量theta参
则我们可以学习 特征 <= 参数 + 评分
用优化函数表示这个学习的过程,即:
协调过滤过程,初始化一个参数theta,求出特征向量集 ,再依据特征向量集,求出theta,鸡生蛋,蛋生鸡,最终可以得到一组合理的参数向量(人)跟特征值(电影)
每个人在评分,都是在对电影特征的学习做贡献,反过来,系统又能够利用学习到的特征,更好的预测每个人的电影评分,以便进行推荐,有一种大家协同协作使系统更好的感觉,这就是collaborative filtering
协调过滤的理论基础是 不同人的逻辑回归模型中,横切片 - 内容特征向量是一致的,大家都共用,通过其他已有的评分就可以算出内容的特征向量,算出后用可以被没有看过的人使用;
005. 协同过滤算法
将上面的2步过程结合成一个优化函数
如下,全部初始化,同时更新,迭代拟合。 初始化用随机小值,跟神经网络的初始化一样,用来symmetry breaking ( 未理解)
006. 协同过滤算法向量化表示
重点在对其评分矩阵的表示上,Low Rank Matrix (低秩矩阵分解)的表示方法
=
在实践中,对于学习而得到的特征向量,
1) 很难用具象的东西解释是啥,很难可视化
2) 我们可以利用学习到内容/产品的特征向量,刻画相似度,这样我们就可以进行评分推荐了
007. 实施中的均值归一化
Implementational Detail: Mean Normalization
当有一个新用户Eve时,她没有对任何电影评分,如果直接用上面的优化算法进行训练,则会得到 Eve的回归向量参数是0向量,也就没有办法向她推荐了
原因在于:优化函数中第1项因Eve没有评分,没有Eve的任何参数theta的信息,而正则化项中,有特征向量theta的模长度惩罚项; 而正则化项最小化的目标下,会使得参数分量都趋于0
均值归一化的具体操作:
1)每部电影(内容/产品)的评分矩阵减去均值向量(所有人对这部电影的评分的均值),之后再进行训练
2) 训练完了后,进行评分预测时,再加一个均值回来
在新评分矩阵训练后, 会得到其偏好参数仍为0向量,因为其没有任何评分,也就无任何偏好; 但新用户Eve进行做预测时,她所有的电影评分将会赋值为 均值