吴恩达《机器学习》学习笔记六——过拟合与正则化
吴恩达《机器学习》学习笔记六——过拟合与正则化
- 一、 过拟合问题
- 1.线性回归过拟合问题
- 2.逻辑回归过拟合问题
- 3.过拟合的解决
- 二、 正则化后的代价函数
- 1.正则化思想
- 2.实际使用的正则化
- 三、 正则化的线性回归
- 1.梯度下降的情况
- 2.正规方程的情况
- 四、 正则化的逻辑回归
- 1.梯度下降的情况
- 2.高级优化算法的情况
课程链接:https://www.bilibili.com/video/BV164411b7dx?from=search&seid=5329376196520099118
上一个笔记介绍了第二个机器学习算法——逻辑回归,主要用于解决分类问题,应用非常广泛。这一次我们学习一下过拟合和正则化的概念,并将正则化技术运用到已学的线性回归和逻辑回归模型上,来减小过拟合的问题。
一、 过拟合问题
在学习正则化的概念之前先看一下过拟合的问题。线性回归和逻辑回归在实际应用时,都可能因为假设函数选择的原因或是数据集的原因导致过拟合。
1.线性回归过拟合问题
对于房价预测问题,我们之前是使用左边这个图的假设函数去拟合数据,可以看出,不论怎么优化参数,直线也无法很好的拟合所有数据,这时就被称为是欠拟合的情况,存在高偏差,这是因为假设函数过于简单,无法拟合较为复杂的数据。
再看中间的图,在原来的假设函数上加上了一个平方项,优化后的结果则很好的拟合了数据集,此时是最佳状态。
最后看右边的图,假设函数包含了一些较高次幂的项,使得假设函数过于复杂,虽然能拟合已有的所有数据,但是很显然这个曲线有波动,房子的面积越大甚至价格出现了越低的情况,这显然是不对的,而且若此时添加进来一些新的数据,很可能就不能很好的拟合,这样的问题被称为过拟合,存在高方差,假设函数过于复杂,过度学习了已有数据的特征,它的定义如下所示:
这里可能涉及到训练误差和泛化误差的概念,训练误差是指训练数据集在假设函数上产生的误差,泛化误差是指模型训练好之后,给定新的数据在假设函数上产生的误差,用以估计模型应用到到新样本的能力。那么欠拟合的情况,训练和泛化误差都高,而过拟合的情况,训练误差很低,泛化误差则很高。
2.逻辑回归过拟合问题
参考线性回归的例子,下面逻辑回归的三种情况分别为欠拟合、拟合良好和过拟合的情况。
3.过拟合的解决
产生过拟合的原因较多,其中很常见的一个是数据样本的数量比特征的数量还要少。所以有如下两种常见的解决过拟合的办法:
一个是在数据集有限的情况下,减少特征的数量来减少过拟合问题,可以人工手动选择减少哪些特征,也可以使用一些算法来衡量减少哪些特征。这种方法的缺点就是需要丢弃一些特征,这就有可能丢弃了一些信息。
二是如果不希望丢弃信息或者是不知道如何选择特征,想保留所有特征时,可以使用正则化方法,正则化方法利用正则化项来减小相关参数的大小,减轻它对预测的贡献,相应的就减轻了过拟合问题。
二、 正则化后的代价函数
1.正则化思想
首先来看一个线性回归的例子:
左边是良好拟合,右边是过拟合。要解决过拟合的问题,我们希望θ_3,θ_4两个参数非常小,当它们很小的时候,对预测结果的贡献就非常小,甚至可以忽略,从而解决过拟合问题。所以我们在原来的代价函数上进行了修改,变成如下所示:
因为这是一个最小化的式子,加上有关θ_3,θ_4的两项,因为其系数较大,所以这两个参数在最小化表达式的过程中必须变得较小,才能使得总体很小,所以这样可以达到使得θ_3,θ_4很小接近于0的目的,从而减轻过拟合。那么这两项就可以被称为正则化项。
还是使用原来过拟合的假设函数,当代价函数加上正则化项之后优化,结果就会从下面的蓝色曲线变成紫红色曲线,从而与良好拟合的情况接近,算是达到了解决过拟合的问题:
正则化思想可以简单归结如下:使参数值非常小,从而几乎消除它的贡献,使得假设函数更简单,这样就更不可能过拟合。
2.实际使用的正则化
但是在大多数问题中,你不能像刚刚那样看出哪些参数应该被惩罚,哪些应该保留,尤其是参数量非常多的时候,如下所示:
所以索性将所有的参数都减小,这样使得所有的参数都不会很大,也就使得假设函数不会过于复杂,达到解决过拟合的效果。
而在实际应用中,也基本都是使用将所有参数都加到代价函数中去的方法,如下所示,使用前后的变化,就是蓝色曲线变成了紫红色曲线:
其中的λ被称为正则化系数,它是平衡假设函数的关键。如果它被设置的太大的话,如下所示:
会使得所有的参数都接近于0,那么假设函数接近于是一个常数函数,过于简单,变成了欠拟合的情况。所以为了正则化的效果,需要合理地选择正则化参数的大小,过大会使得模型过于简单,过小又达不到解决过拟合的要求。
三、 正则化的线性回归
根据上面对正则化的介绍,线性回归加上正则化之后的代价函数如下所示:
1.梯度下降的情况
相应的,它对应的梯度下降表达式如下图所示:
因为正则化的惩罚项中不包含θ_0,所以它的更新与原来不加正则化时一样。
2.正规方程的情况
正规方程的方法是将代价函数的导数设置为0,从而求出的表达式,也就将变成如下所示:
四、 正则化的逻辑回归
逻辑回归加上正则化之后的代价函数如下图所示:
1.梯度下降的情况
对代价函数求导后更新参数,发现形式与线性回归几乎一模一样,但是需要注意的是,假设函数h(x)的表达式是完全不同的,所以和线性回归的梯度下降表达式内容也是完全不同的。
2.高级优化算法的情况
略
吴恩达《机器学习》学习笔记六——过拟合与正则化相关推荐
- 吴恩达“机器学习”——学习笔记六
最优边界分类器(最大间隔分类器)(续学习笔记五) 在线性分类器中,我们要找到一个边界线,使得几何间隔最大,即: ||w||在几何间隔中是无关紧要的,这里取1,使得几何间距和函数间距一致. 但是这个并不 ...
- 吴恩达机器学习学习笔记第七章:逻辑回归
分类Classification分为正类和负类 (规定谁是正谁是负无所谓) 吴恩达老师举例几个例子:判断邮箱是否是垃圾邮箱 一个在线交易是否是诈骗 一个肿瘤是良性的还是恶性 如果我们用之前学习的lin ...
- 吴恩达机器学习--学习笔记
1. Introduction 1.1 Welcome 如今机器学习被大规模应用于: 数据挖掘(网站点击,医学记录,生物学,工程) 一些无法通过编程实现的功能(自动驾驶,手写识别,NLP,CV) se ...
- 吴恩达机器学习学习笔记第二章:单变量线性回归
模型描述: 训练集(training set):是监督学习中独有的概念,由我们人喂给电脑的既有既有特征x又有结果y的数据.下图x是房子面积 ,y是房屋对应的价格 符号记法解释: (x^(1),y^(1 ...
- 吴恩达机器学习(十七)过拟合、正则化下的代价函数
文章目录 1.过拟合 2.正则化下的代价函数 1.过拟合 包插线性回归和逻辑回归等的几种学习算法能够有效解决许多问题,但是当它们应用到某些特定的机器学习应用时,会遇到过度拟合的问题,导致它们表现欠 ...
- 吴恩达机器学习学习笔记第六章:机器学习中的线性代数操作python3版(含numpy、panda库的使用)
pracitice1:是针对矩阵元素的基本运算 #practice1是针对矩阵元素的基本运算 import numpy as np A=np.array([[1,2,3],[3,4,5]])#列表转换 ...
- 吴恩达机器学习学习笔记第一章:绪论初识机器学习
一. 什么是机器学习(Machine Learning)? 首先学习的对象是电脑 学习指的其实就是算法 机器学习就是基于数据基于算法从数据中去提炼对事物的认知和规律 掌握了这些特征和规律后就可 ...
- 吴恩达深度学习笔记六:序列模型
周末出去耍了一下,回来又玩了两天游戏,耽误了好多时间啊,关键是连输20多局.哎,以后还是少玩游戏,多去做些有趣的事情吧,免得费时费力还不开心. 1. 循环神经网络(RNN:Recurrent Neur ...
- 吴恩达机器学习 学习笔记 之 一 监督学习和无监督学习
一. 1-1 welcome 1-2 什么是机器学习--Machine Learning 机器学习尚无明确定义,现有的定义有: (1)Field of study that gives compute ...
- 吴恩达“机器学习”——学习笔记二
定义一些名词 欠拟合(underfitting):数据中的某些成分未被捕获到,比如拟合结果是二次函数,结果才只拟合出了一次函数. 过拟合(overfitting):使用过量的特征集合,使模型过于复杂. ...
最新文章
- Linux下基于密钥的安全验证实现方法
- linux useradd
- 在数据库创建表的时候,时间设置为什么类型,会随着每次提交的时间发生变化
- Android上的MVP:如何组织显示层的内容
- httpHandlers和httpModules接口介绍 (7)
- SOA实现方式与模式
- 字符串_月隐学python第7课
- JDBC元数据操作(一)-- DatabaseMetaData接口详解
- spark sql建表的异常
- More Exceptional C++起步于Exceptional C++驻足之处
- 「3D手指血管扫描」一套无法复制的生物识别系统
- php入门案例,thinkphp3.2.1入门之--简单案例实现
- ORACLE 12C连接时报ORA28040和ORA01017的错误
- 谷歌浏览器Chrome离线安装包下载地址
- [ 隧道技术 ] cpolar 工具详解之将内网端口映射到公网
- Android HotFix
- 银联支付(网银h5)
- Win10系统电脑声卡驱动正常但没声音?驱动人生解决方案
- 第一章 Arm 架构科普解读(2023新)
- python,jsonschema, marshmallow, “None is not of type ‘string‘
热门文章
- php mqtt qos,Mqtt Qos 深度解读
- excel去重_数据处理之EXCEL的高效技巧分享
- 一款三搭_冬日穿搭指南!照着这八条万能公式穿,让你不冻还有型_
- 2019 最新阿里中间件Java 4轮面试题!60万年薪起步~
- 资源征集 | 2021年全国知识图谱与语义计算大会开放资源征集(Resource Track)通知...
- 论文浅尝 | Understanding Black-box Predictions via Influence Func
- 从特征分解到协方差矩阵:详细剖析和实现PCA算法
- 笔记:seafile 7.x 安装和部署摘要
- Python总结:RuntimeError: matplotlib does not support generators as input
- [Swift]LeetCode19. 删除链表的倒数第N个节点 | Remove Nth Node From End of List