十六、推荐系统
最重要的机器学习应用领域之一 ——推荐系统;
推荐系统其实即使自动的特征学习;
16.1 问题形式化
给出 r(i,j) 和 y(i,j) 预测上图中的?,预测用户喜欢的类型,并将其没看过的属于喜欢的类型的电影推荐过去;
16.2 基于内容的推荐系统
假设:假设我们得到了电影的特征;
这个θ(1)是假设出来的,实际上要通过训练得到;
参数θ的训练:跟线性回归有点像
优化目标函数和梯度下降更新:
最终得到不同用户对不同电影的评级;
16.3 协同过滤
本节问题:
- 了解协同过滤算法的基本原理;
- 对比于基于内容的推荐算法,有何改进之处;
协同过滤的特性之一:特征学习,feature learning;
它不用基于上面方法的假设;
假设我们先得到θ,即用户喜欢某类电影的程度,;
基于内容的推荐算法 vs 协同过滤:
- 前者通过 电影特征+用户对电影的评分 = > 训练出用户对不同类电影的喜好程度 + 推测出用户对其它电影的评分;
- 后者可以不给出θ,同样可以学习出特征值,然后根据特征值改进θ:
- step1:随机初始化θ,通过协同过滤学习并预测电影特征值;
- step2:通过电影特征值学习并预测更好的θ
- 回到step1,往复循环。。。。。。
- 最终算法收敛到合适的电影特征值和θ;
- 用户对电影的评分 = > 训练出电影的特征 + 用户对各类型电影的喜好程度 +推测出用户对其它电影的评分;
- 即用参与评价的用户来帮助特征学习;
16.4 协同过滤算法
协同过滤的这一算法能直接将θ和电影特征解出来,避免往复迭代:
即把两个优化目标函数结合;
不包括θ0和X0这里学习的都是n维;
协同过滤算法步骤:
16.5 向量化实现
解决这个问题:用户A一直在找商品B,你能不能想办法推荐给A一些类似于B的商品;
低秩矩阵分解:
XθT为低秩;
由于电影特征个数的不确定,如何保证XθT后的矩阵维数???
在这里,电影分多少类,说明每一步电影就有多少特征值,保证θ(i)和x(j)的维数一致应该就行了;
两部电影的特征向量之间的距离越小,越相似;
16.6 均值归一化
本节问题:
- 对于一个对任何电影都没评分的用户,如何预测他对其他电影的评分;
如何解决?
第5个用户就取每个电影的平均得分(这里吴恩达老师用均值归一化进行处理,不过最后仍是用的均值)