推荐系统算法理论与实践(1)

举例:电影推荐系统

电影评分表
 张三李四王五小明
小时代155
精武英雄354
摔跤吧,爸爸155
死侍54

 

 

 

 

 

 

    表的第一行是用户列表,表中的数字表示用户对于电影评分,比如张三对于小时代的评分是1分,李四对于精武英雄的评分是3分,表中的问号表示用户没有对该电影评分,我们要做的就是预测用户对于没有评分的电影的评分会是多少分,对该用户的所有电影按照评分从高到低的顺序进行排列,最后将得分最高的那几个电影推荐给用户。下面就开始我们基于内容的推荐系统。

基于内容的推荐系统

让我们直观感受下基于内容的推荐系统的原理

电影评分表
 张三李四王五小明
小时代155
精武英雄354
摔跤吧,爸爸155
死侍54
电影内容矩阵X
爱情片喜剧片武侠片
0.90.10.0
0.20.11.0
0.10.50.1
0.30.90.1

还是之前的电影评分表,但这次还有一个关于电影内容矩阵X的表,这张表诠释了对于每部电影所包含的内容成分不一样的,现在我们要靠这两张表来求出另外一个矩阵,这个矩阵叫做用户喜好矩阵\Theta,这个矩阵中包含的是每个用户对于不同电影的喜好程度,最后我们根据用户喜好程度矩阵\Theta乘以电影内容矩阵X,就会得到一个完整的电影评分表。这就是根据内容的电影评分表。

根据每部电影的内容以及用户已经评分的电影来推断每个用户对每个电影的喜好程度,从而预测每个用户对没有的电影的评分。

通俗来讲就是:根据电影的内容和用户已经评分的电影来判断没有看过的电影的评分。

现在来看看关于用户喜好矩阵的\Theta如何求解呢,下面是\Theta的代价函数

                                                       J(\Theta )=\frac{1}{2}\sum_{j=1}^{u}\sum_{i:r(i,j)=1}((\Theta ^{(j)})^{T}X^{i}-y^{(i,j)})^{2}+\frac{\Lambda }{2}\sum_{j=1}^{u}\sum_{k=1}^{n} ({\Theta _{k}}^{(j)})^{2}

                                                   

\frac{1}{2}\sum_{j=1}^{u}u表示用户数量  \sum_{i:r(i,j)=1}  r评分记录表  ((\Theta ^{(j)})^{T}X^{i}-y^{(i,j)})^{2}   j指用户的数量 i指电影的内容    (y^{(i,j)})  i用户对j电影的真实评分        frac{\Lambda }{2}\sum_{j=1}^{u}\sum_{k=1}^{n} ({\Theta _{k}}^{(j)})^{2}  是正则化项 ,n表示特征的数量。

但是存在的问题是:如何去计算一部电影中的各种成分(爱情片、武侠、动作.....)所占用的时间,这要让人为的去完成所以成本太大,


基于协同过滤的推荐系统的原理:

 张三李四王五小明
小时代155
精武英雄354
摔跤吧,爸爸155
死侍54

 

 

 

 

 

电影评分表

 

     
爱情片2.25.04.51.0
喜剧片1.02.51.12.2
武侠片1.05.03.02.9
     

   
 

 

 

 

 

                                                                                                                 用户喜好矩阵\Theta

 

根据电影评分表和用户喜好矩阵\Theta来求出电影内容矩阵X,然后将电影内容矩阵和用户喜好矩阵\Theta相乘就会得到完整的电影评分表。

 是根据每个用户对于各种电影类型的喜好程度以及用户已经评分过得电影来推断每部电影的内容,从而预测每个用户对没有看过的电影的评分。

通俗来讲就是:根据电影类型的喜好程度以及用户已评分的电影来判断没有看过电影的评分。

下面是关于电影内容矩阵X的代价函数:

                                                      J(\Theta )=\frac{1}{2}\sum_{i=1}^{m}\sum_{j:r(i,j)=1}((\Theta ^{(j)})^{T}X^{i}-y^{(i,j)})^{2}+\frac{\Lambda }{2}\sum_{i=1}^{m}\sum_{k=1}^{n} ({\Theta _{k}}^{(j)})^{2}

\frac{1}{2}\sum_{i=1}^{m}m表示电影数量  \sum_{j:r(i,j)=1}  r评分记录表,我们会发现和用户喜好矩阵\Theta基本一致

我们将两个矩阵相乘,就是协同过滤的代价函数

(相关的公式可以去项亮的《推荐系统实践》)

矩阵分解:

电影内容矩阵X
爱情喜剧武侠
0.10.5 0.1
0.20.11.0
0.90.10.0
0.30.9`0.1
用户喜好矩阵 \Theta
爱情     
喜剧1.01.03.54.02.0
武侠3.03.55.04.55.0

 

 

 

 

 

 

 

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

欣岳

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值