斯坦福机器学习笔记十

推荐系统

这里以电影推荐的栗子来说明什么是推荐系统。

nu 代表用户的数量
nm 代表电影的数量
r(i,j) 如果用户给电影评过分,则r(i,j)=1
y(ij) 代表用户i给电影j的评分
mj 代表用户j评过分的电影总数
 θ (j) 代表用户j的参数向量
x(i) 代表电影i的特征向量

这里写图片描述

如图所示,推荐系统能够帮我们自动地填上这些缺失的数值,然后向用户推荐新的他可能感兴趣电影 。

1、基于内容的的推荐(给定 x 求 θ 或者给定 θ 求 x)

这里写图片描述

对每个用户使用不同的线性回归模型进行拟合,并预测用户对其余电影的评价。对于用户 j 和电影 i,我们预测评分为: ( θ (j))Tx(i)

(1)已知电影特征 x 求用户的参数 θ

优化目标为:

min θ 1,, θ numin θ 1,, θ nu12nuj=1i:r(i,j)=1(( θ (j))Tx(i)y(i,j))2+ λ 2nuj=1nk=1( θ (j)k)2

其中,i:r(i,j) 表示只计算评过分的电影。

如果用梯度下降法来求解最优解,梯度下降的迭代更新公式为:

 θ (j)0:= θ (j)0 α i:r(i,j)=1(( θ (j))Tx(i)y(i,j))x(i)0

 θ (j)k:= θ (j)k α (i:r(i,j)=1(( θ (j))Tx(i)y(i,j))x(i)k+ λ θ (j)k)

(2)已知用户的参数 θ 求电影特征 x

优化目标为:

minx1,,xnmminx1,,xnm12nmj=1i:r(i,j)=1(( θ (j))Tx(i)y(i,j))2+ λ 2nmj=1nk=1(x(j)k)2

2、协同过滤

如果我们既没有用户的参数,也没有电影的特征,这两种方法都不可行了,协同过滤算法可以同时学习这两者。

代价函数优化为:

J(x(1),,x(nm), θ 1,, θ nu)=12i:r(i,j)=1(( θ (j))Tx(i)y(i,j))2+ λ 2nmj=1nk=1(x(j)k)2+ λ 2nuj=1nk=1( θ (j)k)2

使用梯度下降的迭代更新公式为:

x(i)k:=x(i)k α (i:r(i,j)=1(( θ (j))Tx(i)y(i,j)) θ (i)k+ λ x(j)k)

 θ (j)k:= θ (j)k α (i:r(i,j)=1(( θ (j))Tx(i)y(i,j))x(i)k+ λ θ (j)k)

可以通过反复使用两个迭代更新公式,先求最小化的 x,再求最小化的 θ ,再求最小化的 x …的方法达到一个很不错的值。

首先是随机初始化,给 x(1),,x(nm), θ 1,, θ nu 赋一些随机小值,其次是最小化代价函数,得到最优的 x 和 θ(一般使用梯度下降法),最后根据得到的参数,预测用户j给电影i的评分( ( θ (j))Tx(i) )。

3、均值归一化

如果存在新用户,没有为任何电影评分,如何为其推荐电影呢?这里的解决办法是对要对每个电影的得分平均化,使每个电影的得分被归一化到0,最后每个电影的得分为用实际得分减去平均得分。

这里写图片描述

对于新用户,我们会认为他给每个电影的评分都是平均分,即0分。使用新得到的Y矩阵来训练算法,最后预测的评分应该为 ( θ (j))Tx(i)+ μ i

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值