机器学习-Recommender Systems

Problem Formulation(规划)

在机器学习中有一种大思想,它针对一些问题,可能并不是所有的问题,而是一些问题,有算法可以为你自动学习一套好的特征。因此,不要试图手动设计,而手写代码这是目前为止我们常干的。有一些设置,你可以有一个算法,仅仅学习其使用的特征,推荐系统就是类型设置的一个例子。
我们有 5 部电影和 4 个用户,我们要求用户为电影打分。
在这里插入图片描述
没有一个用户给所有的电影都打过分。我们希望构建一个算法来预测他们每个人可能会给他们没看过的电影打多少分,并以此作为推荐的依据。

引入一些标记:
在这里插入图片描述


Content Based Recommendations

在一个基于内容的推荐系统算法中,我们假设对于我们希望推荐的东西有一些数据,这
些数据是有关这些东西的特征。
在我们的例子中,我们可以假设每部电影都有两个特征,如 x1代表电影的浪漫程度, x2
代表电影的动作程度。
在这里插入图片描述
下面我们要基于这些特征来构建一个推荐系统算法。 假设我们采用线性回归模型,我
们可以针对每一个用户都训练一个线性回归模型,如 θ(1)是第一个用户的模型的参数。 于是,我们有:
θ(j):用户 j 的参数向量
x(i):电影 i 的特征向量
对于用户 j 和电影 i,我们预测评分为: (θ(j))Tx(i)
代价函数:针对用户 j,该线性回归模型的代价为预测误差的平方和,加上归一化项:
在这里插入图片描述
其中 i:r(i,j)表示我们只计算那些用户 j 评过分的电影。在一般的线性回归模型中,误差
项和归一项应该都是乘以 1/2m,在这里我们将 m 去掉。并且我们不对方差项 θ0 进行归一化处理。上面的代价函数只是针对一个用户的,为了学习所有用户,我们将所有用户的代价函数求和.
在这里插入图片描述
如果我们要用梯度下降法来求解最优解,我们计算代价函数的偏导数后得到梯度下降的
更新公式为:
在这里插入图片描述


Collaborative Filtering

在之前的基于内容的推荐系统中,对于每一部电影,我们都掌握了可用的特征,使用这
些特征训练出了每一个用户的参数。相反地,如果我们拥有用户的参数,我们可以学习得出电影的特征。
在这里插入图片描述
但是如果我们既没有用户的参数,也没有电影的特征,这两种方法都不可行了。协同过
滤算法可以同时学习这两者。我们的优化目标便改为同时针对 x 和 θ 进行.
在这里插入图片描述
在这里插入图片描述
注:在协同过滤从算法中,我们通常不使用方差项,如果需要的话,算法会自动学得.

协同过滤算法使用步骤如下:

  1. 初始 x(1),x(2),…,x(nm), θ(1),θ(2),…,θ(nu)为一些随机小值
  2. 使用梯度下降算法最小化代价函数
  3. 在训练完算法后,我们预测(θ(j))Tx(i)为用户 j 给电影 i 的评分
    通过这个学习过程获得的特征矩阵包含了有关电影的重要数据,这些数据不总是人能读
    懂的,但是我们可以用这些数据作为给用户推荐电影的依据。
    例如,如果一位用户正在观看电影 x(i), 我们可以寻找另一部电影 x(j),依据两部电影的
    特征向量之间的距离||x(i)-x(j)||的大小。

Collaborative Filtering Algorithm

协同过滤优化目标:
给定
在这里插入图片描述
评估
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述


Vectorization_ Low Rank Matrix Factorization

Factorization 因式分解
协同过滤算法的向量化实现.
举例子:
1.当给出一件产品时,你能否找到与之相关的其它产品。
2.一位用户最近看上一件产品,有没有其它相关的产品,你可以推荐给他。
我将要做的是:实现一种选择的方法,写出协同过滤算法的预测情况。
我们有关于五部电影的数据集,我将要做的是,将这些用户的电影评分,进行分组并存
到一个矩阵中。
我们有五部电影,以及四位用户,那么 这个矩阵 Y 就是一个 5 行 4 列的矩阵,它将这
些电影的用户评分数据都存在矩阵里:
在这里插入图片描述
推出评分:
在这里插入图片描述
找到相关影片:
在这里插入图片描述
现在既然你已经对特征参数向量进行了学习,那么我们就会有一个很方便的方法来度量
两部电影之间的相似性。例如说:电影 i 有一个特征向量 x(i),你是否能找到一部不同的电影j,保证两部电影的特征向量之间的距离 x(i)和 x(j)很小,那就能很有力地表明电影 i 和电影 j在某种程度上有相似,至少在某种意义上,某些人喜欢电影 i,或许更有可能也对电影 j 感兴趣。总结一下,当用户在看某部电影 i 的时候,如果你想找 5 部与电影非常相似的电影,
为了能给用户推荐 5 部新电影,你需要做的是找出电影 j,在这些不同的电影中与我们要找的电影 i 的距离最小,这样你就能给你的用户推荐几部不同的电影了。


Implementational Detail_ Mean Normalization

在这里插入图片描述
如果我们新增一个用户 Eve,并且 Eve 没有为任何电影评分,那么我们以什么为依据
为 Eve 推荐电影呢?
我们首先需要对结果 Y 矩阵进行均值归一化处理,将每一个用户对某一部电影的评分
减去所有 用户对该电影评分的平均值:
在这里插入图片描述
然后我们利用这个新的 Y 矩阵来训练算法。 如果我们要用新训练出的算法来预测评分,
则需要将平均值重新加回去,预测(θ(j))T(x(i))+μi 对于 Eve,我们的新模型会认为她给每部电影的评分都是该电影的平均分。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值