文章目录

  • 什么是过拟合
  • 如何解决过拟合问题
    • 减少特征值数量
    • 正则化
    • 线性回归的正则化
      • 梯度下降
      • Normal Equation
    • 逻辑回归的正则化
      • 梯度下降

什么是过拟合

过拟合指当我们设定的方程
y=θ0x0+θ1x1+⋯+θnxny=\theta_0x^0+\theta_1x^1+\cdots+\theta_nx^n y=θ0​x0+θ1​x1+⋯+θn​xn
中,参数θ\thetaθ的数目超过了我们实际需要的数目,此时虽然我们学习后得到的曲线代价函数J(θ)J(\theta)J(θ)值很小,甚至可以穿过数据集的每个点。但拟合出的曲线会因为他的高次性产生很多不必要的起伏弯折,从而使预测结果失真。

下图来自吴恩达机器学习:

在逻辑回归问题里也会有相似的问题:

如何解决过拟合问题

减少特征值数量

一种是通过人来判断应该删掉什么特征值,配合数据可视化等方法,我们可以对应该用什么式子去拟合数据有个大概的估计。不过在特征值很多的情况下,这样的方法很难实现。

还有一种就是通过算法选择了,这个算法暂时不会在本篇博客中讨论。

缺点就是剔除部分特征值后,相应的信息就损失了,如果我们想尽可能完整地保留采集到的数据,这个方法就显得不那么好了。

正则化

正则化可以保留所有特征值,但是降低了参数θ\thetaθ的大小。在样本有很多特征值且每个特征值都会做出一点贡献时非常有效。

线性回归的正则化

在上面的例子中,过拟合的问题主要来源于高次项,是它们让我们的拟合曲线变的扭曲了。如果我们降低这些高次项参数的权值,这个高次曲线就会逐渐退化为低次曲线。所以我们将代价函数修改为
J(θ)=12m[∑i=1m(hθ(x(i))−y(i))2+λ∑j=1nθj2]J(\theta)=\frac{1}{2m}\left[\sum_{i=1}^m(h_\theta(x^{(i)})-y^{(i)})^2+\lambda\sum_{j=1}^n\theta_j^2 \right] J(θ)=2m1​[i=1∑m​(hθ​(x(i))−y(i))2+λj=1∑n​θj2​]
由于在代价函数里添加了与参数值大小直接相关的项,所以在学习过程中算法就会尽量减小参数大小,从而达到我们降低参数权值的目的。注意这里的jjj是从1开始的,也就是说一般情况下我们并不会正则化θ0\theta_0θ0​。事实上,正则化θ0\theta_0θ0​与否对结果并没有什么影响。

其中,λ\lambdaλ为正则化参数,作用为平衡对训练集的拟合程度与参数大小,使得学习结果的更加合理。所以λ\lambdaλ的设置对于避免过拟合至关重要,除了人工调整,当然也有算法可以自动地选择λ\lambdaλ,不过这些内容不会出现在本篇博客。

梯度下降

对于θ0\theta_0θ0​,因为它并没有正则化,所以它的更新还是跟之前一样:
θ0:=θ0−α1m∑i=1m(hθ(x(i))−y(i))x0(i)\theta_0:=\theta_0-\alpha\frac{1}{m}\sum_{i=1}^m(h_\theta(x^{(i)})-y^{(i)})x_0^{(i)} θ0​:=θ0​−αm1​i=1∑m​(hθ​(x(i))−y(i))x0(i)​
对于其他参数,我们在上面的公式里再加一项正则项的求导结果即可:
θj:=θj−α[1m∑i=1m(hθ(x(i))−y(i))x0(i)+λmθj]:=θj(1−αλm)−α1m∑i=1m(hθ(x(i))−y(i))x0(i)\theta_j:=\theta_j-\alpha\left[\frac{1}{m}\sum_{i=1}^m(h_\theta(x^{(i)})-y^{(i)})x_0^{(i)}+\frac{\lambda}{m}\theta_j \right]\\ :=\theta_j(1-\alpha\frac{\lambda}{m})-\alpha\frac{1}{m}\sum_{i=1}^m(h_\theta(x^{(i)})-y^{(i)})x_0^{(i)} θj​:=θj​−α[m1​i=1∑m​(hθ​(x(i))−y(i))x0(i)​+mλ​θj​]:=θj​(1−αmλ​)−αm1​i=1∑m​(hθ​(x(i))−y(i))x0(i)​
可以看出,使用正则化后,每次更新是在原梯度下降的基础上把θj\theta_jθj​压缩成1−αλm1-\alpha\frac{\lambda}{m}1−αmλ​倍(0<1−αλm<10<1-\alpha\frac{\lambda}{m}<10<1−αmλ​<1,大约0.990.990.99的样子)。

Normal Equation

在这篇博客里,我们已经推导了未正则化的Normal Equation表达式为
Θ=(XTX)−1XTYΘ=(X ^T X)^{−1} X^T Y Θ=(XTX)−1XTY
Normal Equation的思想就是直接求解偏导数为0的解,在正则化后,偏导数其实就多了一项λmθj\frac{\lambda}{m}\theta_jmλ​θj​,把这一项进去就可以得到正则化后的Normal Equation为
Θ=(XTX+λ[0⋯1⋯⋮1⋯⋮1⋮⋱⋮⋯1])−1XTY\Theta=(X ^T X+ \lambda\left[\begin{matrix} 0&&\cdots&&&\\ &1&&\cdots&&\\ \vdots&&1&&\cdots&\\ &\vdots&&1&&\\ &&\vdots&&\ddots&\vdots\\ &&&&\cdots&1\\ \end{matrix}\right] )^{−1} X^T Y Θ=(XTX+λ⎣⎢⎢⎢⎢⎢⎢⎢⎢⎢⎡​0⋮​1⋮​⋯1⋮​⋯1​⋯⋱⋯​⋮1​⎦⎥⎥⎥⎥⎥⎥⎥⎥⎥⎤​)−1XTY
在这里,正则化还有一个好处,加上了正则项之后,可以证明该矩阵一定是可逆的,解决了某些情况下XTXX^TXXTX不可逆的问题。

逻辑回归的正则化

与线性回归的正则化类似,我们也在代价函数中加上正则项,使代价函数变为
J(θ)=−1m∑i=1m[ylog⁡(hθ(x⃗))+(1−y)log⁡(1−hθ(x⃗))]+λ2m∑j=1nθj2J(\theta)=-\frac{1}{m}\sum_{i=1}^m\left[y\log(h_\theta(\vec{x}))+(1-y)\log(1-h_\theta(\vec{x}))\right] +\frac{\lambda}{2m}\sum_{j=1}^n\theta_j^2 J(θ)=−m1​i=1∑m​[ylog(hθ​(x))+(1−y)log(1−hθ​(x))]+2mλ​j=1∑n​θj2​
从而让我们的算法更倾向于减小参数值的大小,使高次项的影响变小。

梯度下降

对于θ0\theta_0θ0​,因为它并没有正则化,所以它的更新还是跟之前一样:
θ0:=θ0−α1m∑i=1m(hθ(x(i))−y(i))x0(i)\theta_0:=\theta_0-\alpha\frac{1}{m}\sum_{i=1}^m(h_\theta(x^{(i)})-y^{(i)})x_0^{(i)} θ0​:=θ0​−αm1​i=1∑m​(hθ​(x(i))−y(i))x0(i)​
对于其他参数,我们在上面的公式里再加一项正则项的求导结果即可:
θj:=θj−α[1m∑i=1m(hθ(x(i))−y(i))xj(i)+λmθj]:=θj(1−αλm)−α1m∑i=1m(hθ(x(i))−y(i))xj(i)\theta_j:=\theta_j-\alpha\left[\frac{1}{m}\sum_{i=1}^m(h_\theta(x^{(i)})-y^{(i)})x_j^{(i)}+\frac{\lambda}{m}\theta_j \right]\\ :=\theta_j(1-\alpha\frac{\lambda}{m})-\alpha\frac{1}{m}\sum_{i=1}^m(h_\theta(x^{(i)})-y^{(i)})x_j^{(i)} θj​:=θj​−α[m1​i=1∑m​(hθ​(x(i))−y(i))xj(i)​+mλ​θj​]:=θj​(1−αmλ​)−αm1​i=1∑m​(hθ​(x(i))−y(i))xj(i)​
形式跟线性回归的梯度下降还是一样的,不过还是注意两个算法的hθh_\thetahθ​定义并不相同。

机器学习:过拟合问题与其正则化解决相关推荐

  1. 欠拟合的原因以及解决办法(深度学习)

    之前这篇文章,我分析了一下深度学习中,模型过拟合的主要原因以及解决办法: 过拟合的原因以及解决办法(深度学习)_大黄的博客-CSDN博客 这篇文章中写一下深度学习中,模型欠拟合的原因以及一些常见的解决 ...

  2. 过拟合的原因以及解决办法(深度学习)

    过拟合:模型在训练集上表现的非常好,但在测试集的数据下表现很差. 具体观察loss函数就是,train loss一直降低,而test loss先降低,而后随着epoach的增加,而不断增加. 这张图可 ...

  3. 【深度学习】模型过拟合的原因以及解决办法

    [深度学习]模型过拟合的原因以及解决办法 1.背景 2.模型拟合 3.简述原因 4.欠拟合解决办法 5.过拟合解决办法 1.背景 所谓模型过拟合现象: 在训练网络模型的时候,会发现模型在训练集上表现很 ...

  4. 机器学习笔记——模型选择与正则化

    机器学习笔记--模型选择与正则化 一.模型选择 1.方差与偏差 2.过拟合与欠拟合 3.模型选择的平衡 4.欠.过拟合解决方法 二.正则化 1.正则化线性回归 2.正则化对数回归 3.训练集规模对误差 ...

  5. 什么是欠拟合现象_欠拟合和过拟合是什么?解决方法总结

    欠拟合与过拟合 欠拟合是指模型在训练集.验证集和测试集上均表现不佳的情况: 过拟合是指模型在训练集上表现很好,到了验证和测试阶段就大不如意了,即模型的泛化能力很差. 欠拟合和过拟合一直是机器学习训练中 ...

  6. 欠拟合、过拟合现象,及解决办法

    @创建于:2022.05.27 @修改于:2022.05.27 文章目录 1.过拟合与欠拟合 2.欠拟合 2.1 出现的原因 2.2 解决的办法 3.过拟合 3.1 出现的原因 3.2 解决的办法 4 ...

  7. 多目标机器学习_NIPS2018 - 用多目标优化解决多任务学习

    题外话: 多任务学习可以说是机器学习的终极目标之一, 就像物理学家在追求统一所有力一样, 个人认为机器学习也在追求一个模型解决几乎所有问题. 虽然我们现在还离这个目标很远, 但是多任务学习在实际应用中 ...

  8. 统计学第一章--最小二乘拟合正弦函数,正则化

    #coding:utf-8 import numpy as np import scipy as sp from scipy.optimize import leastsq import matplo ...

  9. 吴恩达机器学习CS229A_EX2_逻辑回归与正则化_Python3

    逻辑回归 问题描述:特征集为学生的两门课的成绩,标签集为是否被大学录取. 说明: 这里调用 scipy 库函数执行梯度下降的具体迭代,不用手动设置步长和迭代次数,但 cost 如何计算.梯度如何求取需 ...

  10. 【机器学习入门到精通系列】正则化解决过拟合问题(附Iris-L1 正则化代码)

    文章目录 1 概述 2 L2正则化 3 L1正则化 1 概述 第一个模型是一个线性模型, 欠拟合,也称为高偏差,不能很好地适应我们的训练集:第三个模型是一个四次方的模型, 过于强调拟合原始数据,而丢失 ...

最新文章

  1. 自然语言处理(NLP)之英文单词词性还原
  2. Charles使用1
  3. Linux从零开始(二、基础命令)
  4. case是java关键字吗_Java关键字
  5. 在过程中要正式批准可交付成果_邛海—螺髻山风景名胜区邛海西岸详细规划》获国家林草局批准执行...
  6. OpenCV在jni中使用混合高斯背景模型出现的通道匹配错误
  7. Android常用组件
  8. Ubuntu下camshift算法进行目标跟踪
  9. JS广告代码效果大全
  10. 当我阻止应用程序跟踪我的iPhone 1周后我发现了什么
  11. 谷歌中国四年去本地化接近尾声
  12. 神雕侠侣手游mm虚拟服务器,【神雕侠侣】(神雕传说)手游虚拟机镜像一键服务端+配套安卓客户端+本地验证+启动教程...
  13. 数据分析学习笔记——第4天
  14. 5款主流智能音箱入门款测评:苹果小米华为天猫小度,谁的表现更胜一筹?
  15. 1,515美元的价格可让您驾驭野兽式机械套装
  16. 3D数学基础——Rotator类的C++实现
  17. Unity之2D摄像机跟随
  18. 怎么用命令远程重启服务器,使用命令行重启Windows服务器的方法
  19. Qt中Q_D和Q_P的作用
  20. matlab dlnode,Matlab 绘制三维立体图(以地质异常体为例)

热门文章

  1. java连接sftp的几种方式_Java使用SFTP和FTP两种连接服务器的方式实现对文件的上传下载...
  2. 使用A2P2V针对特定目标生成攻击序列
  3. python樱花树画法图片_武大樱花又盛开,用Python画一棵樱花树
  4. ajax验证作用,通过正则表达式使用ajax检验注册信息功能
  5. android 单手模式开发,单手操作毫无压力 安卓单指缩放技巧
  6. php操作mysql工具类_PHP操作数据库的工具类
  7. 互联网时代的了解和未来的预期_互联网时代的四个特点你了解多少?
  8. Android 开发 Camera2开发_3_处理预览和拍照偏暗问题
  9. 6.2.6 String_Number
  10. OpenUDID 和 IDFA 比较