11-机器学习之推荐系统

目录

 

一 预测电影评分

二 基于内容的推荐

三 如何学习参数

四 协同过滤

1.背景介绍

2.协同过滤算法

四 协同过滤的向量化实现

五 如何找到跟某个电影相似的电影

六 均值规范化


一 预测电影评分

现在一共有五部电影,并且有四个观众的评分数据,评分从一星到五星,观众有可能并没看该电影,也就是未评分。

给出如下定义

  • ​n_u=​用户的数量
  • ​n_m=​电影的数量
  • 如果用户j对电影i进行了评分,​r(i,j)=1​
  • ​y(i,j)=1​用户j对电影i的评分(只有r(i,j)=1时才有效)。

通过学习,得到用户对某些未曾评分的电影的预测评分,并进行电影推荐。

二 基于内容的推荐

1.对于上述示例,建立两个特征 (x1,x2)->(romance,action),并对不同的电影给出特征值

2.对于每一个用户j,学习一个参数\theta ^{(j)} ,预测用户j 对低i部电影的评分为(\theta ^{(j)})^{T} x^{(i)}个星。

具体公式化如下所示

三 如何学习参数\theta ^{(j)}

一句话总结,确定优化目标,用梯度下降法进行优化(给出学习率)

四 协同过滤

1.背景介绍

根据上述例子,假设我们不知道每部电影的的”浪漫程度“和”动作程度“的具体值,可以通过用户的评价来进行预测,但是如果用户没有给出评价怎么办?也可以对每个用户都询问其偏好,然后得到这个用户的参数\theta ^{(j)},然后根据下述计算,得到每部电影的特征值

总结:所以我们可以通过每部电影的特征值,计算出用户对电影的评分,也可以根据用户的偏好,计算出电影的特征向量

如何同时计算上述两种参数?引入协同过滤算法

2.协同过滤算法

将上述两个代价函数加起来,得到如下代价函数

其计算过程如下

1.初始化特征值和参数值以非常小的随机值

2.用梯度下降法最小化上述代价函数

3.使用一个用户的偏好参数θ和电影的特征系数x来预测该用户未评价过的电影的评星​θ_Tx​。

四 协同过滤的向量化实现

首先给出数据集如下

计算目标为得到下图右侧的矩阵(每个元素对应用户对电影的评分)

然后将每个电影的评分做为矩阵X ,将每个用户的参数作为\Theta,则P = X\Theta ^{T}可以计算出P中的每一个元素

以上过程也叫低秩矩阵分解

五 如何找到跟某个电影相似的电影

计算两个电影的特征向量的模即可

六 均值规范化

之前的例子中,所有的用户都至少有一个偏好设置(比如喜欢动作电影,参数里面会有体现),但是对于一个新用户,没有任何偏好设置,也没有任何评分的时候,该如何去处理?

如果在这种情况下进行预测,系统会认为新用户对所有电影的评分都是0,显然这样是不对的。

因此引入了均值规范化来解决上述问题

1.首先计算平均值,然后将Y矩阵减去平均值得到新的Y矩阵(使得Y矩阵中每行的求和结果都是0)

2.用户j 对电影i的评分预测为:

因为前面减去了均值,所以需要再加回来

3.对于新用户,假设参数为[0,0],则按上面的公式计算,从而的到预测值

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值