7、 正则化(Regularization)

7、 正则化(Regularization)7.1过拟合的问题到现在为止,我们已经学习了几种不同的学习算法,包括线性回归和逻辑回归,它们能够有效地解决许多问题,但是当将它们应用到某些特定的机器学习应用时,会遇到过拟合(over-fittin

大家好,又见面了,我是你们的朋友全栈君。

7.1 过拟合的问题

  到现在为止,我们已经学习了几种不同的学习算法,包括线性回归和逻辑回归,它们能够有效地解决许多问题,但是当将它们应用到某些特定的机器学习应用时,会遇到过拟合(over-fitting)的问题,可能会导致它们效果很差。

  在这段视频中,我将为你解释什么是过度拟合问题,并且在此之后接下来的几个视频中,我们将谈论一种称为正则化(regularization)的技术,它可以改善或者减少过度拟合问题

如果我们有非常多的特征,我们通过学习得到的假设可能能够非常好地适应训练集(代价函数可能几乎为0),但是可能会不能推广到新的数据。

下图是一个回归问题的例子:

 <span role="heading" aria-level="2">7、 正则化(Regularization)

第一个模型是一个线性模型,欠拟合,不能很好地适应我们的训练集;第三个模型是一个四次方的模型,过于强调拟合原始数据,而丢失了算法的本质:预测新数据。我们可以看出,若给出一个新的值使之预测,它将表现的很差,是过拟合,虽然能非常好地适应我们的训练集但在新输入变量进行预测时可能会效果不好;而中间的模型似乎最合适。

分类问题中也存在这样的问题:

<span role="heading" aria-level="2">7、 正则化(Regularization)

就以多项式理解,x$的次数越高,拟合的越好,但相应的预测的能力就可能变差。

问题是,如果我们发现了过拟合问题,应该如何处理?

  1. 丢弃一些不能帮助我们正确预测的特征。可以是手工选择保留哪些特征,或者使用一些模型选择的算法来帮忙(例如PCA)

  2. 正则化。 保留所有的特征,但是减少参数的大小(magnitude)。

7.2 代价函数

上面的回归问题中如果我们的模型是: 

<span role="heading" aria-level="2">7、 正则化(Regularization)

  我们可以从之前的事例中看出,正是那些高次项导致了过拟合的产生,所以如果我们能让这些高次项的系数接近于0的话,我们就能很好的拟合了。

  所以我们要做的就是在一定程度上减小这些参数θ 的值,这就是正则化的基本方法。我们决定要减少θ3和θ4的大小,我们要做的便是修改代价函数,在其中θ3和θ4设置一点惩罚。这样做的话,我们在尝试最小化代价时也需要将这个惩罚纳入考虑中,并最终导致选择较小一些的θ3和θ4。 修改后的代价函数如下:

<span role="heading" aria-level="2">7、 正则化(Regularization)

通过这样的代价函数选择出的θ3和θ4 对预测结果的影响就比之前要小许多。假如我们有非常多的特征,我们并不知道其中哪些特征我们要惩罚,我们将对所有的特征进行惩罚,并且让代价函数最优化的软件来选择这些惩罚的程度。这样的结果是得到了一个较为简单的能防止过拟合问题的假设:

<span role="heading" aria-level="2">7、 正则化(Regularization)

其中?称为正则化参数(Regularization Parameter)。 注:根据惯例,我们不对?0   进行惩罚。经过正则化处理的模型与原模型的可能对比如下图所示:

<span role="heading" aria-level="2">7、 正则化(Regularization)

  如果选择的正则化参数λ大,则会把所有的参数都最小化了,导致模型变成 hθ(x)=θ0,也就是上图中红色直线所示的情况,造成欠拟合。

   那为什么增加的一项<span role="heading" aria-level="2">7、 正则化(Regularization)可以使θ的值减小呢?

   因为如果我们令  ?   的值很大的话,为了使Cost Function 尽可能的小,所有的θ 的值(不包括θ0)都会在一定程度上减小。 但若? 的值太大了,那么θ 的值(不包括θ0)都会趋近于0,这样我们所得到的只能是一条平行于x轴的直线。 所以对于正则化,我们要取一个合理的  ?  的值,这样才能更好的应用正则化。 回顾一下代价函数,为了使用正则化,让我们把这些概念应用到到线性回归和逻辑回归中去,那么我们就可以让他们避免过度拟合了。

 7.3 正则化线性回归

对于线性回归的求解,我们之前推导了两种学习算法:一种基于梯度下降,一种基于正规方程。

正则化线性回归的代价函数为:

<span role="heading" aria-level="2">7、 正则化(Regularization)

如果我们要使用梯度下降法令这个代价函数最小化,因为我们未对进行正则化,所以梯度下降算法将分两种情形:

<span role="heading" aria-level="2">7、 正则化(Regularization)

 

 

 对上面的算法中? = 1,2, . . . , ?  时的更新式子进行调整可得:

<span role="heading" aria-level="2">7、 正则化(Regularization)

 

 

 可以看出,正则化线性回归的梯度下降算法的变化在于,每次都在原有算法更新规则的基础上令?值减少了一个额外的值。

我们同样也可以利用正规方程来求解正则化线性回归模型,方法如下所示:

<span role="heading" aria-level="2">7、 正则化(Regularization)

 

 

 图中的矩阵尺寸为 (n+1)*(n+1)。

7.4 正则化的逻辑回归模型

  针对逻辑回归问题,我们在之前的课程已经学习过两种优化算法:我们首先学习了使用梯度下降法来优化代价函数?(?),接下来学习了更高级的优化算法,这些高级优化算法需要你自己设计代价函数?(?)。

<span role="heading" aria-level="2">7、 正则化(Regularization)

 

 自己计算导数同样对于逻辑回归,我们也给代价函数增加一个正则化的表达式,得到代价函数:

<span role="heading" aria-level="2">7、 正则化(Regularization)

 

 python代码:

 1 import numpy as np 
 2 def costReg(theta, X, y, learningRate): 3 theta = np.matrix(theta) 4 X = np.matrix(X) 5 y = np.matrix(y) 6 first = np.multiply(-y, np.log(sigmoid(X*theta.T))) 7 second = np.multiply((1 - y), np.log(1 - sigmoid(X*theta.T))) 8 reg = (learningRate / (2 * len(X))* np.sum(np.power(theta[:,1:the 9 ta.shape[1]],2)) 10 return np.sum(first - second) / (len(X)) + reg 

要最小化该代价函数,通过求导,得出梯度下降算法为:

<span role="heading" aria-level="2">7、 正则化(Regularization)

注:看上去同线性回归一样,但是知道 hθ(x)=g(θTX),所以与线性回归不同。

 Octave 中,我们依旧可以用 fminuc 函数来求解代价函数最小化的参数,值得注意的是参数θ0的更新规则与其他情况不同。 注意:

  1. 虽然正则化的逻辑回归中的梯度下降和正则化的线性回归中的表达式看起来一样,但由于两者的hθ(x)不同所以还是有很大差别。

  2. θ0不参与其中的任何一个正则化。

  目前大家对机器学习算法可能还只是略懂,但是一旦你精通了线性回归、高级优化算法和正则化技术,坦率地说,你对机器学习的理解可能已经比许多工程师深入了。现在,你已经有了丰富的机器学习知识,目测比那些硅谷工程师还厉害,或者用机器学习算法来做产品。

  接下来的课程中,我们将学习一个非常强大的非线性分类器,无论是线性回归问题,还是逻辑回归问题,都可以构造多项式来解决。你将逐渐发现还有更强大的非线性分类器,可以用来解决多项式回归问题。我们接下来将将学会,比现在解决问题的方法强大N倍的学习算法。

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/154380.html原文链接:https://javaforall.net

(0)
上一篇 2022年7月4日 下午1:46
下一篇 2022年7月4日 下午1:46


相关推荐

  • 开启生产效率新时代

    开启生产效率新时代

    2021年5月25日
    115
  • mobilenet改进_常用的轻量化网络

    mobilenet改进_常用的轻量化网络摘要最近出了一篇旷视科技的孙剑团队出了一篇关于利用ChannelShuffle实现的卷积网络优化——ShuffleNet。我关注了一下,原理相当简单。它只是为了解决分组卷积时,不同featuremaps分组之间的channels信息交互问题,而提出ChannelShuffle操作为不同分组提供channels信息的通信的渠道。然而,当我读到ShuffleNetUnit和Network…

    2025年9月7日
    6
  • stopwords.txt中英文数据集,四川大学机器智能实验室停用词库,哈工大停用词表,中文停用词表,百度停用词表百度网盘下载

    stopwords.txt中英文数据集,四川大学机器智能实验室停用词库,哈工大停用词表,中文停用词表,百度停用词表百度网盘下载今天找stopwords.txt数据集找了好长时间,真是气死了,好多都是需要金币,这数据集不是应该共享的么。故搜集了一些数据集,主要包括四川大学机器智能实验室停用词库,哈工大停用词表,中文停用词表,百度停用词表和一些其他的stopword.text。最后用python将这些数据集合并成一个完整的数据集stopword.txt。百度网盘地址在链接:https://pan.baidu.com/s/1KBkOzYk-wRYaWno6HSOE9g提取码:4sm6文件不是很大可以直接下载。下面是详细的目录。

    2022年6月24日
    29
  • python解析jmeter.jtl文件_jmeter jtl文件解析

    python解析jmeter.jtl文件_jmeter jtl文件解析Jmeter 报告生成 1 第一种在测试过程中直接用命令生成图标在测试过程中将 jtl 转成测试报告 在 jmeter 的 bin 目录下执行 jmeter n tbaidu requests results jmx r lbaidu requests results jtl e o home tester apache jmeter 3 0 resultReport 参数说明 n 非

    2026年3月16日
    3
  • 数字 IC 笔试面试必考点(1)FPGA 芯片架构[通俗易懂]

    数字 IC 笔试面试必考点(1)FPGA 芯片架构[通俗易懂]FPGA芯片架构是非常重要的,如果你不了解FPGA芯片内部的详细架构,那么,你将对于你自己的设计一无所知,你将不懂如何去实现资源的优化,你也不懂如何合理调用内部模块,你更不懂如何去权衡速度与面积,那么你的Verilog就跟C差不多…所以,让我们来了解一下其架构:如下所示,这是部件号为XC7A100TFGG484-2的FPGA芯片内部的整体架构,一方面按照时钟域(顾名思义就是不同频率的时钟所划分的不同区域模块)划分的,即根据不同的工艺、器件速度和对应的时钟.

    2025年9月27日
    7
  • 单机本地真助手!华硕GX10 OpenClaw安装指南

    单机本地真助手!华硕GX10 OpenClaw安装指南

    2026年3月13日
    5

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号