【吴恩达机器学习 - 5】揭秘学习曲线:偏差和方差与代价函数之间的相互关系(课后练习第五题-ex5)

2023-11-13

照旧,本练习的相关资料链接将会扔到评论区,大家自取

1. 回顾线性回归的正则化

练习的第一个部分还是线性回归的相关计算公式,可以好好地回顾一下(其实只是为接下来的内容服务而已),所以这个部分就不过多介绍了,还不太熟练的可以看看我前几篇写的练习

1.1 代价函数

把如下代码扔进linearRegCostFunction.m文件即可,这里再多嘴提醒一句,记得theta第一个元素不需要正则化的!!

tt = theta;
tt(1,1) = 0;
J = sum((X*theta-y).^2)/2/m + sum(tt.^2)*lambda/2/m;

然后你应该可以看见如下结果

在这里插入图片描述

1.2 梯度

梯度的计算,同样的theta第一个元素也是不需要正则化的!!接着把下面的代码扔进同一个文件当中即可

grad = sum((X*theta-y).*X)/m + tt'*lambda/m;

同样的,你会得到如下结果,不过这里还要注意一下tt这个向量是一个几乘几的矩阵?一开始我自己做的时候没有进行转置,搞了好久都总是只有一个值对,另外一个值不对,如果有这种情况发生的同学可以好好检查一下整条式子的矩阵规模是否相符合理

在这里插入图片描述

2. 偏差与方差

2.1 训练集数量对“代价”的影响

看练习指导书我们可以发现,这里的任务是要绘制一个训练集与验证集的关于数据集(训练集)数量学习曲线,因此我们需要分别得出训练集与验证集的“代价”,这时候细心的你观察了一下learningCruve.m中的函数定义发现,这里根本没有定义theta,就是说这个theta不是从外面传进来的(废话嘛,对于不同数量的数据集得出的theta都不一样)

在这里插入图片描述
那么怎么才能得出训练的theta值呢?这时候聪明的我们肯定是先去看一下主函数ex5.m,然后惊喜地发现这里藏着一个迭代计算theta的函数

在这里插入图片描述
好了,万事俱备,我们可以使用for循环进行书写,把如下代码扔进文件中即可

for i = 1:m
  [theta] = trainLinearReg(X(1:i,:), y(1:i,:), lambda);
  error_train(i) = sum((X(1:i,:)*theta-y(1:i,:)).^2)/2/i;
  error_val(i) = sum((Xval*theta-yval).^2)/2/size(yval,1);
endfor

讲道理你也应该会得出如下曲线图,好好观察一下有没有不一样,有的话一般都是错了(我当初就是)

在这里插入图片描述

3. 多项式回归

3.1 多项式特征的生成

第三部分,我们需要生成一个特征多项式,与之前做的练习不同,这里的特征多项式只需要对自己进行指数运算即可

在这里插入图片描述
这不是简单了吗?把如下代码扔到polyFeatures.m

for i = 1:p
  X_poly(:,i) = X.^i;
endfor

讲道理,你也应该能看到如下数值

在这里插入图片描述
然后这些图你也是应该可以看到的

在这里插入图片描述
练习指导书中还有可选练习,你可以通过更改不同的lambda值观察不同的效果

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
interesting?yes! 有趣归有趣,最重要的是你需要搞清楚lambda代表的是什么含义,起什么样的调节作用

3.2 lambda对“代价”的影响

最后一个任务是要绘制一个训练集与验证集的关于lambda大小学习曲线,嘿?那不是跟前面的一个部分有点像?同样的,我们利用for循环,把如下代码扔进validationCurve.m文件

m = size(X,1);
n = size(yval,1);
for i = 1 : length(lambda_vec)
  [theta] = trainLinearReg(X, y, lambda_vec(i));
  error_train(i) = sum((X*theta-y).^2)/2/m;
  error_val(i) = sum((Xval*theta-yval).^2)/2/n;
endfor

得出的图像,也正好直观地表达了lambda值对算法的影响

在这里插入图片描述

至此,你应该对关于数据集数量、正则化参数lambda对“代价”的影响有了一个深刻且清晰的了解,看似这章内容并没有让你我学到什么实质性的算法,但这部分内容可以为我们以后优化算法、提高算法准确率提供思路与方向

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【吴恩达机器学习 - 5】揭秘学习曲线:偏差和方差与代价函数之间的相互关系(课后练习第五题-ex5) 的相关文章

随机推荐

  • 建站系列(五)--- 前端开发语言之HTML、CSS、JavaScript

    目录 相关系列文章 前言 一 前端开发与后端开发 二 前端语言简介 一 HTML 二 CSS 三 JavaScript 三 学习指导 一 开发环境 二 第一个Hello world 相关系列文章 建站系列 一 网站基本常识 建站系列 二 域
  • SpringMVC requestBody和responseBody重复获取

    SpringMVC requestBody和responseBody重复获取 最近有个需求 要根据响应结果来判断 是否需要保存requestBody的内容到数据库 想法使用拦截器HandlerInterceptor 拦截需要处理的url 根
  • Java反射:如何正确理解,不如手写一个(反射包分析、楼主亲测)

    Java反射机制 动态代理是基于什么原理 这个问题可谓是老生常谈的一个热门问题了 如果没有深入的思考还真的是很难回到上来 那么今天我们一起来看看 如何正确清晰的认识这个热门却又说简单又不简单说复杂又比较复杂的问题 一 什么是反射 反射机制是
  • Activiti 架构分析

    Activiti是业界很流行的java工作流引擎 关于Activiti与JBPM5的关系和如何选择不是本文要讨论的话题 相关内容可以baidu一下 Activiti从架构角度看是比较优秀的 是很面向对象的 是我所阅读过的代码结构很棒的开源软
  • 基于Metronic的Bootstrap开发框架经验总结(1)-框架总览及菜单模块的处理

    最近一直很多事情 博客停下来好久没写了 整理下思路 把最近研究的基于Metronic的Bootstrap开发框架进行经验的总结出来和大家分享下 同时也记录自己对Bootstrap开发的学习研究的点点滴滴 希望在开一个 基于MVC4 Easy
  • kubectl 命令简化为k以及自动补全

    编辑配置文件 vi bashrc 加入如下3行 alias k kubectl complete o default F start kubectl k source lt kubectl completion bash 使配置生效 sou
  • 基于LendingClub数据的信贷分析和建模报告

    一 课题分析 二 数据获取 三 数据探索 主要特征含义理解 特征分布 目标特征分布 分类变量的分布 连续数值特征分布 时序特征分布 文字特征分布 两两特征的协方差 四 数据预处理 数据集划分 特征缺失值识别与处理 严重缺失值的处理 缺失值填
  • 仿everything的文件搜索工具项目详解:Part2

    目录 代码架构 基本架构 开发语言 Java8 数据库 SQLite JavaFX 多线程 文件IO流 Lombok Atomic原子类 项目难点 主要数据结构 数据表 FileMeta FileScannerCallBack接口及其子类
  • linux目录和cat命令

    1 Linux目录结构 根 相当于一个入口 文件的总入口 也是唯一入口 bin sbin 二进制文件 可执行文件 也可能存在别处 默认使用较多所有用户软连接文件 命令 sbin 管理员可使用的二进制文件 命令ls cd useradd bo
  • globals()与locals()函数

    在Python中 globals 和locals 是两个内置函数 用于获取当前作用域内的全局和局部命名空间中的变量和对象 一 globals 这个函数返回一个包含当前全局作用域中所有变量和对象的字典 在函数内部调用globals 将返回全局
  • Typora-常用快捷键

    Typora常用快捷键 1 字体编辑 大小 ctr 数字或ctr 加减号 加粗 ctr b 倾斜 ctr i 下划线 ctr u 删除线 alt shift 5 上标 字体 下标 字体 高亮 字体 清除格式 ctrl 2 创建列表 无序列表
  • Keil最舒服的配色方案

    每次重装keil 都会重新配置下颜色 因为默认的颜色 看久了实在不太舒服 每次调到一个舒服的颜色 都要花不少时间 为了后面节省时间 现记录一下 如下就是我觉得还不错的配色方案 如果你觉得也还可以 可以接着往下看 一 进入配置 二 光标所在行
  • 数据预处理与可视化

    https blog csdn net u013719780 article category 6285514 https blog csdn net u013719780 article category 6457723
  • 公司新招了个字节拿36K的人,让我见识到了什么才是测试扛把子......

    5年测试 应该是能达到资深测试的水准 即不仅能熟练地开发业务 而且还能熟悉项目开发 测试 调试和发布的流程 而且还应该能全面掌握数据库等方面的技能 如果技能再高些的话 甚至熟悉分布式组件等高级技能 或者说 做个项目小组长 管个3 4号人 应
  • SpringBoot-yml配置文件的使用与优势

    目录 一 什么是yml配置文件 二 如何在SpringBoot中使用yml配置文件 三 如何在SpringBoot中注入yml配置文件的属性 Value注解 ConfigurationProperties注解 四 yml配置文件与prope
  • c++ 成员属性设置为私有

    成员属性设置为私有 1 可以自己控制读写权限 2 对于写可以检测数据的有效性 include
  • 免费版Typora设置vue主题

    一 下载Typora与主题vue安装包 最新版版本的Typora网上开始收取费用 现在低版本的Typora仍然还是免费的 而且并不影响正常使用 下载链接在下方 并提供了vue主题文件 链接 百度网盘 请输入提取码 提取码 tdp4 二 添加
  • 【OpenCV图像处理】1.15自定义线性滤波

    自定义线性滤波 线性滤波就是卷积 实际上的作用就是降噪 卷积概念 卷积是图像处理中一个操作 是kernel在图像的每个像素上的操作 Kernel本质上一个固定大小的矩阵数组 其中心点称为锚点 anchor point 卷积如何工作 把ker
  • ggplot2读书笔记11:第八章 主题设置、存储导出

    Themes 8 1 Introduction 第八章讲的是ggplot2的主题设置 通过它你可以对数据之外的图形外观进行控制 第一版的中文版的把这一章的章节名翻译为 精雕细琢 控制主题设置主要有以下四个方面 主题元素 指的是非数据元素 p
  • 【吴恩达机器学习 - 5】揭秘学习曲线:偏差和方差与代价函数之间的相互关系(课后练习第五题-ex5)

    目录 1 回顾线性回归的正则化 1 1 代价函数 1 2 梯度 2 偏差与方差 2 1 训练集数量对 代价 的影响 3 多项式回归 3 1 多项式特征的生成 3 2 lambda对 代价 的影响 照旧 本练习的相关资料链接将会扔到评论区 大