ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

机器学习笔记14

2021-08-03 12:35:02  阅读:170  来源: 互联网

标签:机器 14 评分 推荐 电影 用户 笔记 算法 函数


推荐系统

1.1 问题形式化 Problem formulation

在机器学习中存在一些算法可以自动地学习到你可能感觉兴趣的东西,推荐系统 (recommender systems) 会根据你的兴趣来学习,向你推荐你可能感觉兴趣的东西

举一个例子:假使有 5 部电影,3部爱情片、2部动作片。  4 个用户为其中的部分电影打了分。现在希望构建一个算法,预测每个人可能给没看过的电影打多少分,以此作为推荐的依据

变量定义:
nu:用户的数量
nm:电影的数量
r(i, j):用户 j 给电影 i 评过分则 r(i, j) = 1
y(i,j):用户 j 给电影 i 的评分 (注:这里 i 和 j 不要搞反)
mj:代表用户 j 评过分的电影的总数

1.2 基于内容的推荐系统 Content-based recommendations 

在一个基于内容的推荐系统算法中,假设对于我们希望推荐的东西,里面都有相应的特征
举个例子:每部电影都有两个特征, x1 代表电影的浪漫程度,x2 代表电影的动作程度,比如:x(1)是第一部电影的特征向量,为[0.9 0]

θ(j)   用户 j 的参数向量,x(i)   电影 i 的特征向量,对于用户 j 和电影 i,我们预测其评分为:(θ(j))Tx(i)

加入正则化后的代价函数(均方误差)如下:

根据代价函数的偏导数后得到梯度下降的更新公式为:

1.3 协同过滤 Collaborative filtering

之前我们是根据电影的特征来计算出每一个用户的评价,反过来如果我们拥有用户的评价可以计算出电影的特征

代价函数也是类似:

那如果既没有用户的参数,也没有电影的特征,那该怎么办?

可以采用协同过滤算法,同时学习这两者,算法是通过随机初始化一个用户的参数,然后去计算电影的特征,再用电影的特征去优化用户的参数,不断迭代,直到得到两者都最优

1.4 协同过滤算法 Collaborative filtering algorithm

结合之前说的两者计算方式可以将两个式子结合起来一起优化:

总结一下协同过滤算法的步骤:

1. 初始 x 和 θ 为一些随机小值
2. 使用梯度下降算法最小化代价函数 J
3. 在训练完算法后,通过计算 θTx 预测用户 j 给电影 i 的评分

1.5 向量化:低秩矩阵分解 Vectorization:Low rank matrix factorization

在之前的例子中可以采取向量化的方式来表示对电影的评分Y,一行表示每个用户对一个电影的评分

对于这个大的评分矩阵,我们就可以将 θ 和 X 分开来表示,最后再以 X * θT 的方式来表示这个评分大矩阵

除此之外,如果我们想要寻找一个与电影 x(i) 相关的电影,可以通过计算两部电影的特征向量之间的距离 ∥x(i) − x(j)∥的方式来寻找相关电影

例如,想要找到与电影 x(i) 相关的5部电影,就可以根据 ∥x(i) − x(j)∥ 计算出距离最小的5部电影,即为5部与电影 x(i) 相关的电影

1.6 实施细节:均值归一化  Mean normalization

如果新增一个用户 Eve,她没有为任何电影评分,那么我们应该怎么为 Eve 推荐电影

如果继续按照之前的模型,因为她没有打分,代价函数第一项为0,那目标函数就变为最后一项(正则化项),优化目标函数后 θ(5) 中的元素就都是0,再拿着 θ(5) 去预测评分,最后得到得评分都是0,那这么做就没什么意义了

所以我们就提出了归一化

首先需要对结果 Y 矩阵进行均值归一化处理,将每一个用户对某一部电影的评分减去所有用户对该电影评分的平均值

然后利用这个新的 Y 矩阵来训练算法, 最后在预测评分时,需要在预测值的基础上加回平均值,即预测值等于 (θ(j))Tx(i) + μi

那么对于像 Eve 这样没对任何电影评价过的用户,预测值等于 μi ( (θ(j))Tx(i)  = 0),即新模型按照电影的平均分来向他推荐电影

标签:机器,14,评分,推荐,电影,用户,笔记,算法,函数
来源: https://www.cnblogs.com/bird7/p/15090800.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有