文章内容均来自斯坦福大学的Andrew Ng教授讲解的Machine Learning课程,本文是针对该课程的个人学习笔记,如有疏漏,请以原课程所讲述内容为准。感谢博主Rachel Zhang 的个人笔记,为我做个人学习笔记提供了很好的参考和榜样。


§ 4.正则化与过拟合问题 Regularization/The Problem of Overfitting

1 过拟合问题 The problem of overfitting

首先,Andrew Ng还是对之前几节中提到过的房屋面积-房价问题进行分析:

在图1中我们不难发现,随着房屋面积增大,房屋价格的增加趋于平缓。而此时图中的曲线相对来说并没有很好地拟合训练数据,这种情况称为欠拟合(Underfitting) / 高偏差(High bias)。

而在图2中,$h_{\theta}(x)$加入了一个二次项,此时曲线拟合地比较好。

在图3中,则又是另一个极端的情况——用四次(高阶)多项式,通过五个(较少的)训练样本,拟合成为了一条通过了所有训练样本的曲线,这条曲线上下波动得很厉害。这样的假设模型虽然通过了所有的训练样本,但无法很好地泛化到新的数据样本中,这样的情况称为过拟合(Overfitting) / 高方差(High variance)。

接下来Andrew Ng给出了对"过拟合"的解释:如果有太多的变量,训练出的假设模型过度地拟合了训练数据,此时代价函数的值可能会非常接近于0(例如图3)甚至等于0。但是这样的假设模型很可能实际上无法很好地泛化到新的数据样本中,也难以准确地预测新的数据样本所对应的房屋价格。

关于泛化的解释:指的是一个假设模型能够应用到新样本的能力。

随后举例讲解了在先前讨论过的肿瘤分类问题中欠拟合、相对较好地拟合与过拟合的情况。

下面是一道习题,关键在于考察对过拟合定义的理解——在训练数据中能够准确预测,但是对于之前没有出现过的新数据样本无法准确预测(泛化能力差)。

如何解决过拟合问题呢?

绘制假设模型曲线可以作为决定多项式阶次的一种方法,但是这并不是总是有用的,因为我们可能会遇到有很多变量的假设模型,这么多的变量会使得绘制图像变得十分困难,也很难进行可视化。

(1)减少变量个数 (PS:其缺点是舍弃变量的同时可能也会舍弃一些数据中的有用信息)

-a: 人工选择哪些变量要保留,哪些变量要舍弃,从而减少变量个数

-b: 利用模型选择算法,自动选择或舍弃变量

(2)正则化

-a: 保留所有的变量,但是减少参数$\theta$的数量级或者值

-b: 当我们有很多有用的变量时,正则化能够很好地帮助我们解决过拟合的问题

2.代价函数 Cost Function

为了防止过拟合,我们可以考虑在代价函数中加入一些惩罚项,使得所得出的模型中高次项对应的参数值$\theta$非常小,就像被忽略了一样,这样所得出的模型就能够恰到好处地拟合数据了。

这对应了正则化的基本思想,当参数值比较小时,我们往往可以简化得到一个更简单的假设形式,使得得出的假设模型没那么容易出现过拟合的情况。因此在正则化中,我们会在代价函数的后面加入一个包含参数$\theta$的项,从而使得各个参数的值较小。

$\lambda$代表正则化参数,正则化参数需要平衡训练目标和保持参数较小的目的。

下面这道题目考查了正则化参数对结果的影响:

解释如下:如果正则化参数过大,那么$\theta_1$、$\theta_2$、$\theta_3$、$\theta_4$的值会非常接近于0,只剩下$\theta_0$保持正常,那么假设模型的曲线就会是一条直线,模型无法很好地拟合训练数据,属于欠拟合(高偏差)状态。注意,在这里我们将不对$\theta_0$进行惩罚。

3.正则化线性回归 Regularized linear regression

(1)梯度下降法

随着代价函数的变化,梯度下降法中的具体过程也出现了一些变化:

一般来说,$m$会比较大,而$\alpha$会比较小,因此$(1-\alpha \frac{\lambda}{m})$一般是小于1但是非常接近1的。对应习题如下:

这里相当于用$0.99$乘了$\theta_j$,即把参数压缩了一点。

(2)正规方程

随着代价函数的改变,正规方程中也出现了一些改变:

关于不可逆问题:很多时候其实$(X^T X)$是不可逆的,而正则化后,当$\lambda>0$时,加上新的这部分后是可逆的。因此正则化可以关注过拟合的同时照顾到不可逆的问题。

4.正则化逻辑回归Regularized Logistic Regression

(1)梯度下降法

与正则化线性回归类似,正则化逻辑回归也是在代价函数后加入一个惩罚项:

对应的习题:

(2)高级优化算法

这里需要注意,在针对$\theta_0$的情况下,代价函数是没有关于正则化的那一项的。

笔记目录

(一)单变量线性回归 Linear Regression with One Variable

(二)多变量线性回归 Linear Regression with Multiple Variables

(三)逻辑回归 Logistic Regression

(四)正则化与过拟合问题 Regularization/The Problem of Overfitting

(五)神经网络的表示 Neural Networks: Representation

(六)神经网络的学习 Neural Networks: Learning

(七)机器学习应用建议 Advice for Applying Machine Learning

(八)机器学习系统设计Machine Learning System Design

(九)支持向量机Support Vector Machines

(十)无监督学习Unsupervised Learning

(十一)降维 Dimensionality Reduction

(十二)异常检测Anomaly Detection

(十三)推荐系统Recommender Systems

(十四)大规模机器学习Large Scale Machine Learning

机器学习(四)正则化与过拟合问题 Regularization / The Problem of Overfitting的更多相关文章

  1. Ng第七课:正则化与过拟合问题 Regularization/The Problem of Overfitting

    7.1  过拟合的问题 7.2  代价函数 7.3  正则化线性回归 7.4  正则化的逻辑回归模型 7.1  过拟合的问题 如果我们有非常多的特征,我们通过学习得到的假设预测可能能够非常好地适应训练 ...

  2. 机器学习之正则化(Regularization)

    1. The Problem of Overfitting 1 还是来看预测房价的这个例子,我们先对该数据做线性回归,也就是左边第一张图. 如果这么做,我们可以获得拟合数据的这样一条直线,但是,实际上 ...

  3. 机器学习之五 正则化的线性回归-岭回归与Lasso回归

    机器学习之五 正则化的线性回归-岭回归与Lasso回归 注:正则化是用来防止过拟合的方法.在最开始学习机器学习的课程时,只是觉得这个方法就像某种魔法一样非常神奇的改变了模型的参数.但是一直也无法对其基 ...

  4. CNN学习笔记:正则化缓解过拟合

    CNN学习笔记:正则化缓解过拟合 过拟合现象 在下图中,虽然绿线完美的匹配训练数据,但太过依赖,并且与黑线相比,对于新的测试数据上会具有更高的错误率.虽然这个模型在训练数据集上的正确率很高,但这个模型 ...

  5. machine learning(13) -- solving the problem of overfitting:regularization

    solving the problem of overfitting:regularization 发生的在linear regression上面的overfitting问题 发生在logistic ...

  6. 斯坦福大学公开课机器学习: advice for applying machine learning | regularization and bais/variance(机器学习中方差和偏差如何相互影响、以及和算法的正则化之间的相互关系)

    算法正则化可以有效地防止过拟合, 但正则化跟算法的偏差和方差又有什么关系呢?下面主要讨论一下方差和偏差两者之间是如何相互影响的.以及和算法的正则化之间的相互关系 假如我们要对高阶的多项式进行拟合,为了 ...

  7. 机器学习中正则化项L1和L2的直观理解

    正则化(Regularization) 概念 L0正则化的值是模型参数中非零参数的个数. L1正则化表示各个参数绝对值之和. L2正则化标识各个参数的平方的和的开方值. L0正则化 稀疏的参数可以防止 ...

  8. 【机器学习】正则化的线性回归 —— 岭回归与Lasso回归

    注:正则化是用来防止过拟合的方法.在最开始学习机器学习的课程时,只是觉得这个方法就像某种魔法一样非常神奇的改变了模型的参数.但是一直也无法对其基本原理有一个透彻.直观的理解.直到最近再次接触到这个概念 ...

  9. 吴恩达机器学习笔记19-过拟合的问题(The Problem of Overfitting)

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

随机推荐

  1. Xcode 9.3 pod install update 错误

    [!] Oh no, an error occurred. Search for existing GitHub issues similar to yours: https://github.com ...

  2. BZOJ 3771: Triple(生成函数 FFT)

    Time Limit: 20 Sec  Memory Limit: 64 MBSubmit: 911  Solved: 528[Submit][Status][Discuss] Description ...

  3. chromium之MessagePump.h

    上代码,注释已经写得很详细了. 粗看一下,这是个纯虚类,用于跨平台的通用接口. MessagePump,Pump的意思是泵,,MessagePump也就是消息泵,输送消息 namespace base ...

  4. mysql集群压测

    mysql压测 mysql自带就有一个叫mysqlslap的压力测试工具,通过模拟多个并发客户端访问MySQL来执行压力测试,并且能很好的对比多个存储引擎在相同环境下的并发压力性能差别.通过mysql ...

  5. 转:AbstractQueuedSynchronizer的介绍和原理分析

    引自:http://ifeve.com/introduce-abstractqueuedsynchronizer/ 简介 提供了一个基于FIFO队列,可以用于构建锁或者其他相关同步装置的基础框架.该同 ...

  6. MVC Controller 基类 BaseController 中的 Request

    今天修复mvc中的一个bug,需求是每个页面要获取当前URL链接中 host首是否正确,我把获取url的方法写到了Controller的基类BaseController(BaseController继 ...

  7. Hive(4)-Hive的数据类型

    一. 基本数据类型 Hive数据类型 Java数据类型 长度 例子 TINYINT byte 1byte有符号整数 20 SMALINT short 2byte有符号整数 20 INT int 4by ...

  8. django路由基本使用-6

    路由定义位置 django的路由是定义在 urls.py 文件下的 urlpatterns 列表中的. urls.py 文件是路由解析的入口. from django.conf.urls import ...

  9. Python学习1——关于变量

    在python中,使用变量之前不需要声明变量的数据类型, 但是,使用变量前,必须要先对变量进行赋值: 例: num01 += 100 print('num01') 上述例子中,表示的意思是 num01 ...

  10. python新手之字典增删改查

    一.字典的定义 city_list = { 'beijin':"北京",'shanghai':"上海" } print(city_list) 二.字典添加一个元 ...