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阶多 ...
随机推荐
- CSS3弹性伸缩布局(上)——box布局
布局简介 CSS3提供了一种崭新的布局方式:Flexbox布局,即弹性伸缩布局模型(Flexible Box)用来提供一个更加有效的方式实现响应式布局. 由于这种布局还处于W3C的草案阶段,并且它分为 ...
- java并发程序——并发容器
概述 java cocurrent包提供了很多并发容器,在提供并发控制的前提下,通过优化,提升性能.本文主要讨论常见的并发容器的实现机制和绝妙之处,但并不会对所有实现细节面面俱到. 为什么JUC需要提 ...
- 开始使用gentoo linux——gentoo安装笔记(上)
gentoo linux安装笔记(上) 家里有一台破旧的富士通笔记本,08年至今质量依然杠杠的,但是性能已经不能和现代超极本同日而语,装上了ubuntu更是不敢恭维,别提gnome和kde的linux ...
- web安全—浏览器的进制
浏览器的进制 字符的ascii码值可以转化为进制形式.可以用来绕过XSS filter. HTML属性值中的进制使用 .十进制使用a 表示,&#作为前缀,;作为后缀,后缀也可以没有. 如果要使 ...
- 利用GDB进行多线程调试
一.多线程调试 多线程调试重要就是下面几个命令: info thread 查看当前进程的线程. thread <ID> 切换调试的线程为指定ID的线程. break file.c:100 ...
- VirtulBox虚拟机搭建Linux Centos系统
简要说明 该文章目的是基于搭建hadoop的前置文章,当然也可以搭建Linux的入门文章.那我再重复一下安装准备软件. 环境准备:http://pan.baidu.com/s/1dFrHyxV 密码 ...
- Docker - 虚拟网桥
容器的网络模式 None --- 容器不能访问外部网络,内部存在回路地址. Container --- 将容器的网络栈合并到一起,可与其他容器共享网络. Host --- 与主机共享网络. Bridg ...
- poj1125 Stockbroker Grapevine Floyd
题目链接:http://poj.org/problem?id=1125 主要是读懂题意 然后就很简单了 floyd算法的应用 代码: #include<iostream> #include ...
- RabbitMQ集群和失败处理
RabbitMQ内建集群的设计用于完成两个目标:允许消费者和生产者在RabbitMQ节点在奔溃的情况下继续运行,以及通过添加更多的节点来线性扩展消息通信的吞吐量.当失去一个RabbitMQ节点时客户端 ...
- Openstack(企业私有云)万里长征第一步——安装
一.前言 单位新进了十几台服务器,建了一个高标准的一体化机房,状似刘姥姥进大观园的我,从机房规划到企业私有云搭建一一重头学来,除了机房泥墙其他基本都涉猎到了. 从企业私有云这个名字就能看出这是多么复杂 ...