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

news2024/11/15 12:50:24

✍个人博客:https://blog.csdn.net/Newin2020?spm=1011.2415.3001.5343
📣专栏定位:为学习吴恩达机器学习视频的同学提供的随堂笔记。
📚专栏简介:在这个专栏,我将整理吴恩达机器学习视频的所有内容的笔记,方便大家参考学习。
💡专栏地址:https://blog.csdn.net/Newin2020/article/details/128125806
📝视频地址:吴恩达机器学习系列课程
❤️如果有收获的话,欢迎点赞👍收藏📁,您的支持就是我创作的最大动力💪

十四、推荐系统

1. 问题规划

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

  • nu代表用户的数量,nm代表电影的数量。
  • r(i,j)代表第j个用户是否对第i部电影进行了评价,如果r等于1,说明进行了评价。
  • y(i,j)代表第j个用户对于第i部电影的评分,只有当r(i,j)等于1时,y(i,j)才有数值。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-XXKzq63U-1670375250022)(吴恩达机器学习.assets/image-20211119185215812.png)]

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

2. 基于内容的推荐算法

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

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-5YP1086Z-1670375250026)(吴恩达机器学习.assets/image-20211119190234621.png)]

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

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-xIkop78E-1670375250028)(吴恩达机器学习.assets/image-20211119191159648.png)]

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

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-VFo52k5x-1670375250030)(吴恩达机器学习.assets/image-20211119191417692.png)]

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

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-du49QRkr-1670375250032)(吴恩达机器学习.assets/image-20211119191831379.png)]

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

3. 协同过滤

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

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-yeRpK375-1670375250034)(吴恩达机器学习.assets/image-20211119192446992.png)]

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

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-lpSKJKpB-1670375250036)(吴恩达机器学习.assets/image-20211119192834705.png)]

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

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-5BTASJcP-1670375250044)(吴恩达机器学习.assets/image-20211119193246791.png)]

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

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

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-vWV85wTD-1670375250049)(吴恩达机器学习.assets/image-20211119194611961.png)]

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

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-frx0ZO9F-1670375250050)(吴恩达机器学习.assets/image-20211119195209186.png)]

  • 我们首先对于x和θ初始化为小的随机值。
  • 然后最小化代价函数,可以利用梯度下降算法或其它高级算法,得到x和θ值。
  • 最后通过得到的x和θ去预测用户对于电影的评分,即将θ得转置与x做内积。

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

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

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-4ECYyPqA-1670375250053)(吴恩达机器学习.assets/image-20211119200435022.png)]

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

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-H4meGGg6-1670375250055)(吴恩达机器学习.assets/image-20211119200526174.png)]

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

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

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-6q8mL2Ih-1670375250056)(吴恩达机器学习.assets/image-20211119201312560.png)]

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

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

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

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-dELv7pnf-1670375250059)(吴恩达机器学习.assets/image-20211119201935739.png)]

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

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-TTtteO3b-1670375250060)(吴恩达机器学习.assets/image-20211119202522689.png)]

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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/67928.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

TensorFlow之分类模型-1

1 基本概念 机器学习 机器学习是指一段程序或者和一个系统从输入数据中训练一个模型。完成训练的模型可以对全新的数据进行预测,其中,新数据的分布是与被训练数据的分布保持一致。 训练 一个确定组成模型的实际参数的过程,这些参数包括权…

Linux | 为什么要有线程?| 线程概念 | 线程控制 | 线程ID的实质

文章目录为什么要有线程?Linux对于线程的设计Linux线程特点总结Linux线程和进程的比较线程的优点线程的缺点Linux下线程的使用线程的创建与销毁线程退出的三种方式什么是线程ID?线程局部存储线程分离exit对于线程的影响为什么要有线程? 假设…

二手书籍交易网站毕业设计,二手书籍买卖平台毕设,二手书籍交易市场平台设计与实现毕业设计论文分析

项目背景和意义 目的:本课题主要目标是设计并能够实现一个基于web网页的校园二手书籍交易系统,整个网站项目使用了B/S架构,基于python的Django框架下开发;用户通过登录网站,查询二手交易商品,购买二手交易网…

分享107个竞聘述职PPT模板,总有一款适合您

链接:https://pan.baidu.com/s/1snFUpkECYjvFEk0d3kNHiw?pwd87pd 提取码:87pd 下面是文件的名字,我放了一些图片,文章里不是所有的图主要是放不下...,大家下载后可以看到。 个人工作述职报告ppt范文免费下载 年终竞…

密集计算场景下的 JNI 实战

在 Java 发展历程中,JNI 一直都是一个不可或缺的角色,但是在实际的项目开发中,JNI 这项技术应用的很少。在笔者经过艰难的踩坑之后,终于将 JNI 运用到了项目实战,本文笔者将简单介绍 JNI 技术,并介绍简单的…

Gateway之限流、熔断,Sentinel--服务容错

目录 高并发带来的问题 1.编写java代码 2.修改配置文件中tomcat的并发数 3.接下来使用压测工具,对请求进行压力测试 压测工具 服务雪崩效应 常见容错方案 常见的容错组件 Sentinel入门 什么是Sentinel Sentinel 具有以下特征: Sentinel 分为两个部分: sentinel简单模…

[附源码]Python计算机毕业设计Django小区物业管理系统

项目运行 环境配置: Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术: django python Vue 等等组成,B/S模式 pychram管理等等。 环境需要 1.运行环境:最好是python3.7.7,…

如何在 Windows 10 上启用和设置 BitLocker 加密

启用和设置 BitLocker 加密 通过控制面板启用 BitLocker通过命令提示符启用 BitLockerBitlocker 可以使用控制面板中的图形界面或在命令提示符中执行一些命令来启用。在 Windows 10 上启用 Bitlocker 非常简单,但用户通常更喜欢通过控制面板而不是命令提示符来管理 Bitlocker …

python数据类型(1)

关于Python的数据类型 Python数据类型包括: 数字类型,字符类型,布尔类型,空类型,列表类型,元组类型,字典类型 1、数字类型 包括:整型int 浮点型float(有小数位的都是是浮点型) 注…

目标检测常见数据增强算法汇总讲解(Mixup,Cutout,CutMix,Mosaic)

在学习目标检测算法的过程中,发现了一些有趣的目标检测算法,打算简单写个笔记,不足之处还望谅解,可以在评论中指出来。 目标检测作为需要大量数据的算法,在实际情况中经常面临数据不足的情况,事实上很多时候…

JavaScript同步与异步

JavaScript采用单线程模式工作的原因:JavaScript设计之初是为了能够运行在浏览器实现页面交互,而实现页面交互的核心是操作DOM,这种模式就决定了它使用单线程模式,否则就需要解决复杂的多线程同步的问题。 这种模式的优点就是更安…

Vue3中 子组件内v-model绑定props接收到参数时报错update:modelValue

开发过程中二次封装了一个搜索的组件,子组件内使用了el-select和el-input 参数分别对应父组件传入的selectValue和selectText参数 子组件内部change和input事件来同步触发组件中数据的修改 最终本地开发环境一切正常,部署到测试环境和生产环境后出现下…

[附源码]JAVA毕业设计仁爱公益网站(系统+LW)

[附源码]JAVA毕业设计仁爱公益网站(系统LW) 项目运行 环境项配置: Jdk1.8 Tomcat8.5 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术&…

判断一份好的问卷有哪些标准?

问卷的主要由三个部分组成:问卷说明、问卷主题、问卷结束。而这三个部分又包含了很多因素,比如问卷主题、问卷标题、问卷题目、问卷调查对象等。制作问卷不仅仅是简单的问题罗列,然后进行发放。不同质量的调查问卷会反馈出不一样的效果&#…

Spring Cloud微服务之eureka+client入门

Spring Cloud微服务之eurekaclient入门 谈到服务,想到一种“懒人思维”。家政服务为懒人收拾家务提供一种便利,快餐服务为不爱做饭的懒人提供一种方便.....等等。 说到微服务,顾名思义,就是把服务再细微化。比如需要送女友一束花…

FastReport Desktop 2023Microsoft SQL存储过程的支持

FastReport Desktop 2023Microsoft SQL存储过程的支持 添加了用于从JasperReports转换报告的模板。 添加了对连接到Microsoft SQL存储过程的支持。 在RTF中,添加了一项设置,以提高打印时的图像质量。 添加了导出到Microsoft Excel 2007时从“货币”转换为…

Landsat数据下载

Landsat数据下载步骤0 Landsat数据介绍1 下载地址2 下载步骤2.1 检索数据2.1.1 设置地点,有多种方法2.1.2 选择时间范围2.1.3 在Data Sets界面选择传感器(卫星或者传感器的名称)2.2 限定云量2.3 下载数据这是个老生常谈的话题了,我…

[附源码]Python计算机毕业设计Django校园快递柜存取件系统

项目运行 环境配置: Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术: django python Vue 等等组成,B/S模式 pychram管理等等。 环境需要 1.运行环境:最好是python3.7.7,…

ubuntu上msquic带根证书的测试使用

ubuntu上msquic带根证书的测试使用 1.证书1.1 根证书的生成1.2 根证书的导入1.4 openssl验证书1.5 修改/etc/hosts2. msquic编译2.1 quic协议编译2.2 示例程序编3.本地测试1.证书 1.1 根证书的生成 假设我们的域名为: www.contoso.com 创建CA私钥 openssl ecparam -out cont…

java Object类 包装类

目录 Object 类的使用 操作符与equals方法  : equals() 重写equals()方法的原则 面试题 toString() 方法 包装类(Wrapper)的使用 基本类型、包装类与String类间的转换 包装类用法举例 总结 Object 类的使用  Object类是所有Java类的根父类  如果…