问题规划
根据用户看过的电影,得出用户喜好,给用户推荐电影。
基于内容的推荐算法
根据历史评价,对每个用户建立一个线性回归模型,去预测未知评价。
r(i,j):用户 j 是否给电影 i 评过分。
y(i,j):用户 j 给电影 i 评分的多少。
θ(j):用户 j 的参数。
x(i):电影 i 的特征。
m(j):用户 j 评过分的电影总数。
优化目标函数:
梯度下降:
协同过滤
很难去得每部电影的特征。
假设我们去采访每一位用户,而且每一位用户都告诉我们他们喜爱各类别电影的程度,这样我们就得到每位用户的参数。
代价函数变成最小化 x 。
这个有点像鸡和蛋的问题。
先得到 θ,再根据 θ 求 x,再根据 x 优化 θ,如此迭代,最终 θ 和 x 都会收敛到合理的范围。
协同过滤算法
代价函数合并,参数 θ 和参数 x 同时进行更新。
现在的算法能灵活的去学习,所以不需要 x0 = 1 。
协同过滤算法步骤:
①将 θ 和 x 随机初始化为较小的值。
②运用梯度下降或高级优化算法最小化代价函数。
③预测
矢量化:低秩矩阵分解
向量化实现:
低秩矩阵:
利用已经学到的属性,来找到相关电影:
对每部电影已经学习到它的属性(特征),怎样根据电影 i 找到相关电影 j ?
根据两部电影属性之间的距离,若距离越小,则两部电影相关性强。
实施细节:均值规范化
假如一个用户历史无电影评分的记录,就让他对某电影的预测评分为该电影评分的均值。