码迷,mamicode.com
首页 > 其他好文 > 详细

十六、推荐系统

时间:2018-11-23 12:33:18      阅读:225      评论:0      收藏:0      [点我收藏+]

标签:浪漫   十六   最小   训练   图片   就是   解决   用户   .com   

1 问题公式化

假如我们是一个电影供应商,有5不影片和4个用户,我们要求用户为电影打分:

技术分享图片

技术分享图片

2 基于内容的推荐算法

技术分享图片

假设每部电影有两个特征,x1代表电影的浪漫程度,x2代表电影的动作程度。

给予这些特征来构建一个推荐算法,假设采用回归模型,我们针对每一个用户都训练一个回归模型,如θ(1)为第一个用户Alice的参数模型,为2*1向量,于是有:

技术分享图片

每一个用户的代价函数为:

技术分享图片

其中求和是我们只计算评分过的电影,其中与线性回归模型不同的是,没有同时乘以1/m。

所以对所有用户的代价函数为:

技术分享图片

采用梯度下降法最优化算法,更新公式为:

技术分享图片

3 协同过滤算法

基于内容的推荐算法是已知内容的特征,学习用户的参数。如果已知用户的参数(如调查用户对浪漫电影的喜欢程度,对动作电影的喜欢程度,得到用户的参数),同样可以学习到内容的特征:

技术分享图片

如果我们既没有内容的特征,也没有用户的参数,协同过滤算法可以解决。

协同过滤算法的优化目标:

技术分享图片

对代价函数求偏导后:

技术分享图片

技术分享图片

可以根据学习到的特征,来找到两个相似的电影,根据:

技术分享图片

这样用户可以根据已经看过的电影进行推荐。

4 低秩矩阵分解

矩阵化实现协同过滤算法:

首先对评分进行矩阵化:

技术分享图片

技术分享图片

推出评分:

技术分享图片

令:

技术分享图片

评分为:

技术分享图片

由于评分矩阵是低秩的,协同过滤算法就是把评分矩阵分解为X和Θ两个矩阵,所以也称为低秩矩阵分解。

然后再根据电影间的相似度进行推荐:

技术分享图片

5 均值归一化

如何新增一个用户,该用户未对所有用户进行评分,那么应用协同过滤算法后,给用户推荐会发现可能给所有的电影都打0分。

因为我们在最小化代价函数的时候只有正则化项起作用,这个时候会把θ(5)全学习为0.

技术分享图片

这个时候可以先对数据进行均值归一化,对每个用户的评分减去该电影的平均评分:

技术分享图片

最后在预测评分时:

技术分享图片

就能对新增用户预测的评分都为均值

十六、推荐系统

标签:浪漫   十六   最小   训练   图片   就是   解决   用户   .com   

原文地址:https://www.cnblogs.com/cold-city/p/10006601.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!