Overfitting&Underfitting Problems
这次根据结合Google的翻译果然速度快上许多,暂时休息,晚上在传一个exm2的随笔。
关于过度拟合下的问题
考虑从x∈R预测y的问题,下面的最左边的图显示了将\(y=\theta_0+\theta_1x\)拟合到数集的结果,我们看到数据不是真的在直线上,所以适合度不是很好。

相反,如果我们添加了一个额外的特征\(x^2\),并且拟合\(y=\theta_0+\theta_1x+\theta_2x^2\),那么我们获得一个稍微更好的拟合数据(见中图)。 哈哈,这时候是不是我们添加的功能越多越好呢?当然不是!当增加太多特征的时候,也会出现很多问题:最右边的图是拟合五阶多项式\(y=\sum_{j=0}^{5}\theta_jx^j\)的结果。图中我们可以看到即使拟合的曲线完美地通过了数据,但我们也不会指望这是对不同生活区(x)的房价(y)很好的预测结果,即当面对新的数据输入(x)时,输出结果(y)是不令人满意的。
没有正式定义这些术语是什么意思,我们会说左边的数字显示了一个不合适的实例,即拟合图形未能清晰捕捉数据集,而右边的数字就是过拟合的例子。
欠拟合(underfitting)或称高偏差,主要由于存在较少的特征集或拟合出的功能函数过于简单导致,此时拟合出的图形对数据的实际趋势的反应能力很差。相反地,过拟合(overfitting)或高方差是由适合可用数据的假设函数引起的,但不能很好地推广到预测新数据。 它通常是由复杂的功能引起的,它产生了与数据无关的大量不必要的曲线和角度。
过拟合与欠拟合这两个术语适用于线性和逻辑回归。
解决过拟合问题有两个主要选择:
1)减少特征数量
- 自己手动选择要保留的特征
- 使用选择算法模型(在以后的课程中引出)
2)正则处理(Regularization)
- 保持所有的特征,但是减小参数\(\theta_j\)的大小。
- 当我们有很多有用的特征集时,正则化后的效果很好。
过拟合下的代价函数(cost function)
如果我们从假设函数中出现过度拟合,我们可以通过增加代价(cost)来减少我们函数中的一些参数的权重。
假设我们想使以下函数:
\(\theta_0+\theta_1x+\theta_2x^2+\theta_3x^3+\theta_4x^4\)
我们试图消除(减弱)\(\theta_3x^3\)与\(\theta_4x^4\)的影响力。实际上并不用删除这些特征或改变我们假设的形式,我们可以这样改变我们的成本函数:

我们在末尾添加了两个额外项,以增加\(\theta_3\)和\(\theta_4\)的成本。 现在,为了使成本函数接近零,我们必须将\(\theta_3\)和\(\theta_4\)的值减小到接近零。 这将大大降低我们假设函数中\(\theta_3x^3\)和\(\theta_4x^4\)的值。 因此,我们看到新假设(由粉红色曲线描绘)看起来像一个二次函数,但是由于额外的小项\(\theta_3x^3\)和\(\theta_4x^4\),更适合数据。

我们可以正则(regularize)所有的参数theta,总结如下:

正则下的线性回归
梯度下降
我们不想消除(减弱)\(\theta_0\)的权重,因此需要先将\(\theta_0\)从所有的参数theta中剔除,同步不断递归:

因式变换后有:

正则方程(Normal Equation)下的regularization
为了增加正则化,方程与我们的原始方法相同,只是我们在括号内添加另一个项:

L是一个矩阵,其左上角为0,对角线为1,其他地方为0。 应该有维数(n + 1)×(n + 1)。 直观地,这是单位矩阵(尽管我们不包括\(x_0\)),乘以单个实数λ。
之前我们提到\(X^TX\)可能存在的不可逆情形,这里经过\(X^TX+\lambda L\)运算之后一定是可逆的!!
正则下的逻辑回归
我们将线性回归正规化,同时也可以类似的方式对逻辑回归进行正则化。 因此,我们可以避免过度拟合。 下图显示了由蓝线显示的正则化函数比由蓝线表示的非正则化函数更容易具有代表性:

代价函数(cost function)
之前的计算公式为:

正则后的结果为(同样需要事先剔除第一个参数theta_0):

同时须保证梯度下降中德参数theta的同步更新:

Overfitting&Underfitting Problems的更多相关文章
- overfitting &&underfitting
1.过拟合 然能完美的拟合模型,但是拟合出来的模型会含有大量的参数,将会是一个含有大量参数的非常庞大的模型,因此不利于实现 1.1解决过拟合的方法 1.1.1 特征选择,通过选取特征变量来减少模型参数 ...
- Machine Learning for Developers
Machine Learning for Developers Most developers these days have heard of machine learning, but when ...
- Course Machine Learning Note
Machine Learning Note Introduction Introduction What is Machine Learning? Two definitions of Machine ...
- [C2P2] Andrew Ng - Machine Learning
##Linear Regression with One Variable Linear regression predicts a real-valued output based on an in ...
- 一起啃PRML - 1.1 Example: Polynomial Curve Fitting 多项式曲线拟合
一起啃PRML - 1.1 Example: Polynomial Curve Fitting @copyright 转载请注明出处 http://www.cnblogs.com/chxer/ 前言: ...
- Reading | 《机器学习》(周志华)(未完待续)
目录 I. 大师对人工智能和机器学习的看法 II. Introduction A. What is Machine Learning 什么是机器学习 B. Basic terms 基础术语 C. In ...
- 机器学习之step by step实战及知识积累笔记
数据工作者工作时间划分 据crowdflower数据科学研究报告,数据科学工作者的时间分配主要在以下几个领域: 首先是数据收集要占20%左右的时间和精力,接着就是数据清洗和再组织需要占用60%的时间. ...
- stochastic noise and deterministic noise
在机器学习中,导致overfitting的原因之一是noise,这个noise可以分为两种,即stochastic noise,随机噪声来自数据产生过程,比如测量误差等,和deterministic ...
- 局部加权回归、欠拟合、过拟合(Locally Weighted Linear Regression、Underfitting、Overfitting)
欠拟合.过拟合 如下图中三个拟合模型.第一个是一个线性模型,对训练数据拟合不够好,损失函数取值较大.如图中第二个模型,如果我们在线性模型上加一个新特征项,拟合结果就会好一些.图中第三个是一个包含5阶多 ...
随机推荐
- spark2.0系列《一》—— RDD VS. DataFrame VS. DataSet
虽说,spark我也不陌生,之前一直用python跑的spark,基本的core和SQL操作用的也是比较熟练.但是这一切的基础都是在RDD上进行操作,即使是进行SQL操作也是将利用SpaekConte ...
- String转int数字格式异常问题
写在前面的话 差不多一年前就计划写博客,可因为种种原因一直没有写,反而我身边的一些同学在我建议他们写博客不久之后就写了,比如张博同学,基本每次总结一个知识点就写一篇,这样不但方便自己以后查看翻阅,也 ...
- Python实现脚本锁功能,同时只能执行一个脚本
1. 文件锁 脚本启动前检查特定文件是否存在,不存在就启动并新建文件,脚本结束后删掉特定文件. 通过文件的判断来确定脚本是否正在执行. 方法实现也比较简单,这里以python脚本为例 #coding= ...
- LNMP源码编译安装
思路:根据Linux系统以及公司网站系统的信息,选择合适的安装包进行安装 一.查看系统信息 # uname -a # 查看内核/操作系统/CPU信息 # ...
- hdu1054 Strategic Game 树形DP
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1054 思路:树形DP,用二分匹配也能解决 定义dp[root][1],表示以root 为根结点的子树且 ...
- [笔记]scanf的使用(主要是针对char)
学的是C++,用cin cout也用的很顺溜,写自己的类时重载"<<"与">>"运算符也很爽,但是发现在刷算法竞赛题时,cin cout ...
- 基本排序算法<二>
归并排序 归并排序,顾名思义,就是通过将两个有序的序列合并为一个大的有序的序列的方式来实现排序.合并排序是一种典型的分治算法:首先将序列分为两部分,然后对每一部分进行循环递归的排序,然后逐个将结果进行 ...
- 全国各省市GeoCoord SQL文件(不包括区县)
/* Navicat MySQL Data Transfer Source Server : 192.168.0.234 Source Server Version : 50543 Source Ho ...
- Java过滤敏感词语/词汇---DFA算法
最近网站需要在评论.投稿等地方过滤敏感词汇,于是在网上查找了相关教程,特此整理分享. 关于DFA算法,详细的可以去http://blog.csdn.net/u013378306/article/det ...
- selenium+python环境的搭建的自动化测试
一.安装python: 我安装的是2.7.13版本的:可以在CMD下 运行python命令查看是否安装python,以及安装版本: 在https://www.python.org/getit/这个地址 ...