【吴恩达机器学习笔记】十四、推荐系统

简介: 【吴恩达机器学习笔记】十四、推荐系统

十四、推荐系统


1. 问题规划

现在各大公司都需要抓住用户的爱好给用户推荐他们想要的信息,以获取关注度,所以接下来就引出了我们的推荐系统,我们先来看个例子关于预测电影评分的,首先先来了解一下参数含义:


nu代表用户的数量,nm代表电影的数量。

r(i,j)代表第j个用户是否对第i部电影进行了评价,如果r等于1,说明进行了评价。

y(i,j)代表第j个用户对于第i部电影的评分,只有当r(i,j)等于1时,y(i,j)才有数值。

d2fa2755cc3047c9a8d06908f51a90b3.png


所以我们可以通过一系列的数据,去了解用户的电影喜欢类型,从而预测他们对一些没评分电影的评分。


2. 基于内容的推荐算法

现在,我们来介绍一种算法,叫做基于内容的推荐算法,下面是一个例子。


07d7ab81790849b1ab8788c6446a85ce.png


例子还是和上节课的一样,现在我们引出两个特征分别代表爱情和动作的程度,然后再加入一个截止特征,将他们组合成一个x(i)向量代表每一部电影的特征量,而每个用户都会对应一个θ,这如何得到我们后面会讲,总之如果想预测用户对于某部电影的评分的话,可以看做是一次线性问题,只需将x于θ的转置相乘做一次内积便能得到最终结果。接下来,我们来看看其中的具体步骤。

b53b251fef784f6a924e53749bed8ca2.png



这里要注意的是m(j)代表评价一部电影的用户数量,而我们可以通过上面的值得到代价函数,我们来整合一下。

5c9adc3b1d854668bdc1b69a8575a65c.png



我们可以将单个θ的代价函数再通过累加变成多个参数合成的代价函数,接下来再来做一个总结。



ef7f8392bd6645a59d49a094284c9b12.png

上面还提到了如何拟合θ参数,这里与线性回归问题十分相似,因为这个算法本质上也是线性回归。


3. 协同过滤

这节课再来讲一个关于如何构建推荐系统的算法,叫做协同过滤,它可以自动学习所需要的特征,通俗来讲就是这个算法通过观察用户的行为来得到特征,所以这里的协同有每个用户都在帮助这个算法进行学习的意思。



daf73c3ec19b4dac92222115b031169b.png

还是来看同一个例子,只不过这里我们不知道特征是什么,但是我们可以通过询问用户对爱情电影和动作电影的喜爱程度即θ来推断出x是什么,如下面所示。


8390ce58b9534d20ad5f280a17ff9a9f.png


我们可以通过给定的θ,从而最小化上面的代价函数得知x是什么。你现在可能会将这节课的内容和上节课的内容混淆,所以我们现在这里总结一下。


68d5b61ae86c4e549852d850b135c5c0.png


上节课我们是通过给定x得到θ,而这节课我们是通过给定θ得到x,其实这两者并不冲突,我们可以通过反复进行这两个算法,从θ得到x再从x得到θ这样反复进行,我们最终会得到一个非常适合的特征和θ值。


然而这样做的效率并不高,如果能够同时得到θ和x就再好不过了。


13ba7fd1fbb5474296300b5c3f5a0ed9.png


我们把上面用到的两个式子结合起来,就得到了最终的代价函数。我们上面的第一个代价函数前面其实就是对第j个用户的所有评分过的电影求和,而第二个代价函数前面其实就是对第i个电影被所有评分过它的用户求和,而将这两者结合起来就能得到最终的代价函数,可以同时得到x和θ值。所以,总结起来如下:


440720ae52264d099d625a5b45eedbeb.png


我们首先对于x和θ初始化为小的随机值。

然后最小化代价函数,可以利用梯度下降算法或其它高级算法,得到x和θ值。

最后通过得到的x和θ去预测用户对于电影的评分,即将θ得转置与x做内积。


4. 矢量化:低秩矩阵分解

我们接下来要解决的问题是,如果给定一个商品,我们能否够通过这个商品去联想到其它相关的商品,所以我们希望可以通过另一种方法来写出协同过滤算法。

d883996885b14f4a946061d2a1a50da6.png



还是同一个例子,只不过现在我们将所有的评分y提取出来变成一个矩阵Y来表示,然后按下面展开。


d8ed079594004f258d5d84a0f5d044a5.png


我们可以将矩阵中展开的值进行进一步提取,提取出X和θ两个向量,这样就可以通过XθT来表示Y了,这里的协同过滤我们还可以称为低秩矩阵分解(low rank matrix factorization)。


所以,我们就可以利用每个电影所学习到的特征,来寻找相似的电影。


52c94ab678a1445fafc2c7c92b4d3c61.png


我们可以计算电影j的x和电影i的x的差值,从而判断两者的相似度。


5. 实施细节:均值规范化

接下来,我将介绍这章的最后一个细节均值规范化,它可以使算法运行的更好。

638099d3dbdd4d098c83c2ac657ad0e0.png



这里我们引入一个新的用户,他对所有电影都没有进行评分,所以如果我们尝试获得他的θ的话,只有正则化的一项会决定θ的值,并且最终结果会为0,这样就导致对所有的电影预测他给的评分都会为0,而均值规范化会解决这个问题。

b3ad3f82b2604238b63b0bc88daceb78.png



我们还是将所有的y放入一个矩阵Y中,然后计算每一行的平均值从而得到向量μ,再将Y减去μ从而得到Y中每一行的均值都为0的情况,然后再对这个Y进行协同滤波,学习得到θ和x,再去预测结果。


这里要注意的时,我们在预测时还要加会我们刚刚减掉的μ,所以即使我最终得到的θ还是0,我们θ的转置与x的内积还是0,但是加上一个μ最终结果就不为0,而是为该电影所有评分的均值,这对于新用户一无所知的情况还是有意义的。


目录
相关文章
|
2月前
|
机器学习/深度学习 搜索推荐 算法
在数字化时代,推荐系统成为互联网应用的重要组成部分,通过机器学习技术根据用户兴趣和行为提供个性化推荐,提升用户体验
在数字化时代,推荐系统成为互联网应用的重要组成部分,通过机器学习技术根据用户兴趣和行为提供个性化推荐,提升用户体验。本文探讨了推荐系统的基本原理、常用算法、实现步骤及Python应用,介绍了如何克服数据稀疏性、冷启动等问题,强调了合理选择算法和持续优化的重要性。
92 4
|
2月前
|
机器学习/深度学习 数据采集 搜索推荐
利用Python和机器学习构建电影推荐系统
利用Python和机器学习构建电影推荐系统
146 1
|
7月前
|
机器学习/深度学习 数据采集 搜索推荐
机器学习在智能推荐系统中的个性化算法研究
机器学习在智能推荐系统中的个性化算法研究
|
3月前
|
机器学习/深度学习 计算机视觉 Python
模型预测笔记(三):通过交叉验证网格搜索机器学习的最优参数
本文介绍了网格搜索(Grid Search)在机器学习中用于优化模型超参数的方法,包括定义超参数范围、创建参数网格、选择评估指标、构建模型和交叉验证策略、执行网格搜索、选择最佳超参数组合,并使用这些参数重新训练模型。文中还讨论了GridSearchCV的参数和不同机器学习问题适用的评分指标。最后提供了使用决策树分类器进行网格搜索的Python代码示例。
208 1
|
5月前
|
机器学习/深度学习 数据采集 自然语言处理
打造个性化新闻推荐系统:机器学习与自然语言处理的结合Java中的异常处理:从基础到高级
【8月更文挑战第27天】在信息过载的时代,个性化新闻推荐系统成为解决信息筛选难题的关键工具。本文将深入探讨如何利用机器学习和自然语言处理技术构建一个高效的新闻推荐系统。我们将从理论基础出发,逐步介绍数据预处理、模型选择、特征工程,以及推荐算法的实现,最终通过实际代码示例来展示如何将这些理论应用于实践,以实现精准的个性化内容推荐。
|
6月前
|
机器学习/深度学习 数据采集 存储
机器学习在推荐系统中的应用
【7月更文挑战第31天】随着机器学习技术的不断发展和普及,推荐系统在电子商务、社交媒体、新闻资讯等领域的应用越来越广泛。机器学习算法的应用为推荐系统优化提供了全新的思路和方法,使得推荐系统能够更加智能化和个性化地为用户提供服务。未来,随着数据量的不断增加和算法的不断创新,推荐系统将会变得更加精准和高效,为用户带来更加优质的体验。
|
6月前
|
机器学习/深度学习 数据采集 搜索推荐
Python数据分析与机器学习在电子商务推荐系统中的应用
Python数据分析与机器学习在电子商务推荐系统中的应用
130 5
|
7月前
|
机器学习/深度学习 算法 BI
机器学习笔记(一) 感知机算法 之 原理篇
机器学习笔记(一) 感知机算法 之 原理篇
|
7月前
|
机器学习/深度学习 算法 数据可视化
技术心得记录:机器学习笔记之聚类算法层次聚类HierarchicalClustering
技术心得记录:机器学习笔记之聚类算法层次聚类HierarchicalClustering
74 0
|
7月前
|
机器学习/深度学习 分布式计算 API
技术好文:Spark机器学习笔记一
技术好文:Spark机器学习笔记一
52 0