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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 当同时安装Python2和Python3后,如何兼容并切换使用详解(比如pip使用)

    当同时安装Python2和Python3后,如何兼容并切换使用详解(比如pip使用)如何解决python2和python3的兼容问题,pip报错问题

    2022年7月6日
    19
  • iPhone屏幕分辨率「建议收藏」

    iPhone屏幕分辨率https://www.jianshu.com/p/41a8ccdf91ed①逻辑分辨率以point(pt)为单位,物理分辨率以pixel(px)为单位。②到了iPhone4开始,苹果引入了Retina屏幕(视网膜屏)。在一定物理单位内可以显示2倍的像素。iPhone4的屏幕物理尺寸还是3.5寸,分辨率为640×960,提升了4倍③因为逻辑分辨率和物理分辨率…

    2022年4月7日
    78
  • 大数据架构之– Lambda架构「建议收藏」

    大数据架构之– Lambda架构「建议收藏」一、什么是Lambda架构Lambda架构由Storm的作者[NathanMarz]提出,根据维基百科的定义,Lambda架构的设计是为了在处理大规模数据时,同时发挥流处理和批处理的优势。通过批处理提供全面、准确的数据,通过流处理提供低延迟的数据,从而达到平衡延迟、吞吐量和容错性的目的。为了满足下游的即席查询,批处理和流处理的结果会进行合并。二、Lambda架构组成Lambda架构包含三层,BatchLayer、SpeedLayer和ServingLayer。架.

    2022年6月25日
    34
  • VMware 虚拟机的三种网络连接方式「建议收藏」

    VMware 虚拟机的三种网络连接方式「建议收藏」VMware的虚拟机有三种网络连接方式,分别是桥接(Bridged)模式、NAT模式和仅主机(Host-only)模式。在安装VMware之后,宿主机上会出现几个相关的虚拟设备,每个设备的功能如下:VMnet0:桥接(Bridge)模式下的虚拟交换机。VMnet1:仅主机(Host-only)模式下的虚拟交换机。VMnet8:NAT模式下的虚拟交换机。VMwareNetworkAdapterVMnet1:宿主机与Host-only虚拟网络进行通信的虚拟网卡。VMwareN

    2022年6月20日
    42
  • string s=new string(“hello”)_result of string concatenation

    string s=new string(“hello”)_result of string concatenation—問題———我的页面上分别有两个按钮Button1,Button2,和两个编辑框TextBox1,TextBox2,我在PAGE_LOAD里加上下面这行代码后,     TextBox1.Attributes.Add(“onkeydown”,”if(event.keyCode==13){document.all.Button1.click();}”);     实现了对Te

    2022年9月26日
    2
  • log4j2的使用_logback log4j

    log4j2的使用_logback log4j一、目录简介基础部分日志框架简单比较(slf4j、log4j、logback、log4j2)log4j2基础知识log4j2实用配置实战部分slf4j+log4j2实际使用二、日志框架比较(slf4j、log4j、logback、log4j2)日志接口(slf4j)slf4j是对所有日志框架制定的一种规范、标准、接口,并不是一个框架的具体的实现,因为接口并不能独立使

    2025年9月15日
    5

发表回复

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

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