协同过滤(collaborative filtering):能实现对特征的学习,即这种算法能够自行学习所要使用的特征。
示例假设:假设采访的每一位用户告诉我们他们是否喜欢爱情电影以及他们是否喜欢动作电影。用户 j对应的 θ(j) 明确地告诉了他们对不同题材电影的喜欢程度。
如果我们能够从用户那里得到这些 θ 参考值,那么我们理论上就能推测出每部电影的x1 以及 x2 的值。然后我们真正需要的是特征向量使得与x的乘积接近于对电影评分的结果。
问题引入将这一学习问题标准化到任意特征 x(i),假设我们的用户告诉了我们的偏好,给我们提供了θ(1) 到 θ(nu) 的值,我们能做的是为所有为电影评分的用户 j选择特征 x(i),这一算法同样也预测出一个值表示该用户将会如何评价某部电影,而这个预测值在平方误差的形式中与用户对该电影评分的实际值尽量接近。平方误差项了和之前一样加上一个正则化项来防止特征的数值变得过大。
算法优化学习出所有电影的所有特征,在此加上另外的一个求和,我要对所有的电影 nm 求和,n 下标 m 个电影然后最小化整个这个目标函数,针对所有的电影,最小化目标函数就应该能得到所有电影的一系列合理的特征。
我们可以根据不同电影的特征得到参数 θ,也可以通过参数得到不同的电影估计特征。即能知道 θ 就能学习到 x,知道 x 也会学出 θ 。
协同过滤协同过滤算法:
这样一来,可以一开始随机猜测出的 θ 的值,然后学习出不同电影的特征;然后根据给出已有的一些电影原始特征,运用推荐算法得到对参数 θ 的更好估计;然后继续迭代不停重复优化θ,最后你的算法将会收敛到一组合理的电影的特征以及一组对合理的对不同用户参数的估计。这就是基本的协同过滤算法。但是该算法需要后期改进,让其在计算时更为高效。
协同过滤算法指的是当你执行这个算法时,你通过一大堆用户得到的数据,这些用户实际上在高效地进行了协同合作帮助系统更好的学习到特征,这些特征可以被系统运用,为其他人做出更准确的电影预测。
网友评论