【机器学习-斯坦福】学习笔记3 - 欠拟合与过拟合概念

原文  http://blog.csdn.net/maverick1990/article/details/11721453

欠拟合与过拟合概念

本次课程大纲:

1、   局部加权回归 :线性回归的变化版本

2、   概率解释 :另一种可能的对于线性回归的解释

3、   Logistic 回归 :基于 2 的一个分类算法

4、   感知器算法 :对于 3 的延伸,简要讲

复习:

  – 第 i 个训练样本

令  ,以参数向量  为条件,对于输入 x ,输出为:

n 为特征数量

定义成本函数 J ,定义为:

m 为训练样本

通过正规方程组推导的结论:

1、 过拟合与欠拟合

通常,你选择交给学习算法处理的特征的方式对算法的工作过程有很大影响。

例:上次课的例子中,用 x1 表示房间大小。通过线性回归,在横轴为房间大小,纵轴为价格的图中,画出拟合曲线。回归的曲线方程为: 

若定义特征集合为: x1 表示房子大小, x2 表示房子大小的平方,使用相同的算法,拟合得到一个二次函数,在图中即为一个抛物线,即: 

以此类推,若训练集有 7 个数据,则可拟合出最高 6 次的多项式,可以找到一条完美的曲线,该曲线经过每个数据点。但是这样的模型又过于复杂,拟合结果仅仅反映了所给的特定数据的特质,不具有通过房屋大小来估计房价的普遍性。而线性回归的结果可能无法捕获所有训练集的信息。

所以,对于一个监督学习模型来说, 过小的特征集合使得模型过于简单,过大的特征集合使得模型过于复杂 。

对于特征集过小的情况,称之为 欠拟合( underfitting ) 

对于特征集过大的情况,称之为 过拟合( overfitting )

解决此类学习问题的方法:

1)        特征选择算法:一类自动化算法,在这类回归问题中选择用到的特征

2)        非参数学习算法:缓解对于选取特征的需求,引出局部加权回归

参数学习算法( parametric learning algorithm )

定义:参数学习算法是一类 有固定数目参数 ,以用来进行数据拟合的算法。设该固定的参数集合为  。线性回归即使参数学习算法的一个例子

非参数学习算法( Non-parametric learning algorithm )

定义:一个参数数量会 随 m (训练集大小)增长 的算法。通常定义为参数数量虽 m线性增长。换句话说,就是算法所需要的东西会随着训练集合线性增长,算法的维持是基于整个训练集合的,即使是在学习以后。

2、   局部加权回归( Locally Weighted Regression )

一种特定的非参数学习算法。也称作 Loess 。

算法思想:

假设对于一个确定的查询点 x ,在 x 处对你的假设 h(x) 求值。

对于线性回归,步骤如下:

1)        拟合出  ,使  最小

2)        返回 

对于 局部加权回归 ,当要处理 x 时:

1)        检查数据集合,并且只考虑 位于 x 周围的固定区域内 的数据点

2)        对这个区域内的点做线性回归,拟合出一条直线

3)        根据这条拟合直线对 x 的输出,作为算法返回的结果

用数学语言描述即:

1)        拟合出  ,使  最小

2)        w 为权值,有很多可能的选择,比如:

-           其意义在于,所选取的 x(i) 越接近 x ,相应的 w(i) 越接近 1 ; x(i) 越远离 x ,w(i) 越接近 0 。直观的说,就是离得近的点权值大,离得远的点权值小。

-           这个衰减函数比较具有普遍意义,虽然它的曲线是钟形的,但不是高斯分布。

-            被称作波长函数,它控制了权值随距离下降的速率。它越小,钟形越窄,w 衰减的很快;它越大,衰减的就越慢。

3)        返回 

总结:对于局部加权回归,每进行一次预测,都要重新拟合一条曲线。但如果沿着 x轴对每个点都进行同样的操作,你会得到对于这个数据集的局部加权回归预测结果,追踪到一条非线性曲线。

* 局部加权回归的问题:

由于每次进行预测都要根据训练集拟合曲线,若训练集太大,每次进行预测的用到的训练集就会变得很大,有方法可以让局部加权回归对于大型数据集更高效,详情参见 Andrew Moore 的关于 KD-tree 的工作。

3、 概率解释

 

概率解释所解决的问题:

在线性回归中,为什么选择最小二乘作为计算参数的指标,使得假设预测出的值和真正 y 值之间面积的平方最小化?

我们提供一组假设,证明在这组假设下最小二乘是有意义的,但是这组假设不唯一,还有其他很多方法可以证明其有意义。

(1)       假设 1 :

假设输入与输出为线性函数关系,表示为: 

其中,  为误差项,这个参数可以理解为对未建模效应的捕获,如果还有其他特征,这个误差项表示了一种我们没有捕获的特征,或者看成一种随机的噪声。

假设  服从某个概率分布,如高斯分布(正态分布):  ,表示一个均值是 0 ,方差是  的高斯分布。

高斯分布的概率密度函数:

根据上述两式可得:

即,在给定了特征与参数之后,输出是一个服从高斯分布的随机变量 , 可描述为:

* 为什么选取高斯分布?

1)          便于数学处理

2)          对绝大多数问题,如果使用了线性回归模型,然后测量误差分布,通常会发现误差是高斯分布的。

3)          中心极限定律:若干独立的随机变量之和趋向于服从高斯分布。若误差有多个因素导致,这些因素造成的效应的总和接近服从高斯分布。

注意:  并不是一个随机变量,而是一个尝试估计的值,就是说它本身是一个常量,只不过我们不知道它的值,所以上式中用分号表示。分号应读作“以 … 作为参数”,上式读作“给定 x(i) 以 为参数的 y(i) 的概率服从高斯分布”。

假设每个 为 IID (independently and identically distributed )独立同分布

即误差项彼此之间是独立的,并且他们服从均值和方差相同的高斯分布

(2)       假设 2 :

设  的似然性为(即给定 x(i) 以 为参数的 y(i) 的概率):

由于  是独立同分布,所以上式可写成所有分布的乘积:

(3)       假设 3 :

极大似然估计:选取  使 似然性  最大化(数据出现的可能性尽可能大)

定义对数似然函数 为  :

上式两个加项,前一项为常数。所以,使似然函数最大,就是使后一项最小,即:

这一项就是之前的  ,由此得证,即之前的最小二乘法计算参数,实际上是假设了误差项满足高斯分布,且独立同分布的情况,使似然最大化来计算参数。

注意:高斯分布的方差对最终结果没有影响,由于方差一定为正数,所以无论取什么值,最后结果都相同。这个性质会在下节课讲到。

4、 Logistic 回归

这是我们要学习的第一个 分类算法 。之前的回归问题尝试预测的变量 y 是连续变量,在这个分类算法中,变量 y 是离散的, y 只取 {0,1} 两个值。

一般这种离散二值分类问题用线性回归效果不好。比如 x<=3 , y=0 ; x>3 , y=1 ,那么当 x>3 的样本占得比例很大是,线性回归的直线斜率就会越来越小, y=0.5 时对应的 x 判决点就会比 3 大,造成预测错误。

若 y 取值 {0,1} ,首先改变假设的形式,使假设得到的值总在 [0,1] 之间,即:

所以,选取如下函数:

其中:

g 函数一般被称为 logistic 函数 ,图像如下:

z 很小时, g(z) 趋于 0 , z 很大时, g(z) 趋于 1 , z=0 时, g(z)=0.5

对假设的概率解释:

假设给定 x 以 为参数的 y=1 和 y=0 的概率:

可以简写成:

参数的似然性:

求对数似然性:

为了使似然性最大化,类似于线性回归使用梯度下降的方法,求对数似然性对  的偏导,即:

因为求最大值,此时为梯度上升。

偏导数展开:

则:

即类似上节课的随机梯度上升算法,形式上和线性回归是相同的,只是符号相反, 为 logistic 函数,但实质上和线性回归是不同的学习算法。

5、 感知器算法

在 logistic 方法中, g(z) 会生成 [0,1] 之间的小数,但如何是 g(z) 只生成 0 或 1 ?

所以,感知器算法将 g(z) 定义如下:

同样令  ,和 logistic 回归的梯度上升算法类似,学习规则如下:

尽管看起来和之前的学习算法类似,但感知器算法是一种非常简便的学习算法,临界值和输出只能是 0 或 1 ,是比 logistic 更简单的算法。后续讲到学习理论是,会将其作为基本的构造步骤。

时间: 2024-10-12 19:16:57

【机器学习-斯坦福】学习笔记3 - 欠拟合与过拟合概念的相关文章

《机器学习》学习笔记(一)

今天看了两集Stanford 的Machine Learning,先说说感受,在看的过程中,脑海里冒出来一个念头:在中国的大学里,教授们都是好像在做研究,而学生们都是好像在上课,到头来不知道学到了什么,我在屏幕的这边都能感受到他们和我们的不一样. 其实对于机器学习,我是真心不懂,也不知道为什么忽然就想学习一下了,然后看了第一集就觉得实在是太牛X了,他们做的那个爬越障碍物的狗和快速避障的小车,都不是我们能搞出来的,说来也奇怪,我们不是也有他们一样的课程体系吗?照理说在大学里能做出来的东西,我们也应

机器学习实战学习笔记(一)

1.k-近邻算法 算法原理: 存在一个样本数据集(训练样本集),并且我们知道样本集中的每个数据与其所属分类的对应关系.输入未知类别的数据后将新数据的每个特征与样本集中数据对应的特征进行比较,然后算法提取样本集中特征最相似(最近邻)的k组数据.然后将k组数据中出现次数最多的分类,来作为新数据的分类. 算法步骤: 计算已知类别数据集中的每一个点与当前点之前的距离.(相似度度量) 按照距离递增次序排序 选取与当前点距离最小的k个点 确定k个点所在类别的出现频率 返回频率最高的类别作为当前点的分类 py

Linux 程序设计学习笔记----终端及串口编程基础之概念详解

转载请注明出处,谢谢! linux下的终端及串口的相关概念有: tty,控制台,虚拟终端,串口,console(控制台终端)详解 部分内容整理于网络. 终端/控制台 终端和控制台都不是个人电脑的概念,而是多人共用的小型中型大型计算机上的概念. 1.终端 一台主机,连很多终端,终端为主机提供了人机接口,每个人都通过终端使用主机的资源. 终端有字符哑终端和图形终端两种. 控制台是另一种人机接口, 不通过终端与主机相连, 而是通过显示卡-显示器和键盘接口分别与主机相连, 这是人控制主机的第一人机接口.

[Android学习笔记]Android中多线程开发的一些概念

线程安全: 在多线程的情况下,不会因为线程之间的操作而导致数据错误. 线程同步: 同一个资源,可能在同一时间被多个线程操作,这样会导致数据错误.这是一个现象,也是一个问题,而研究如何解决此类问题的相关工作就叫做线程同步. android中,处理线程同步的手段就是:锁 一般分为公平锁和非公平锁: synchronized(内部锁,互斥锁):synchronized是JVM提供的线程同步机制,如果出现问题,JVM能捕获异常,并释放资源,具体实现机制需要查看JVM源码 synchronized的使用特

机器学习技法--学习笔记04--Soft SVM

背景 之前所讨论的SVM都是非常严格的hard版本,必须要求每个点都被正确的区分开.但是,实际情况时很少出现这种情况的,因为噪声数据时无法避免的.所以,需要在hard SVM上添加容错机制,使得可以容忍少量噪声数据. ? "软"化问题 软化SVM的思路有点类似正规化,在目标函数添加错误累加项,然后加一个系数,控制对错误的容忍度,并且在约束中添加错误容忍度的约束,形式如下: ? 现在问题就变成了(d+1+N)个变量和2N个约束.ξ用来描述错误的容忍度.C是常量,用来控制容忍度.C越大,由

【stanford 机器学习】学习笔记(2)--多变量线性回归(Linear Regression with Multiple Variables)

课程来自斯坦福大学吴恩达教授 machine learning: https://www.coursera.org/learn/machine-learning/home/welcome 多变量线性回归主要包括以下部分: 1) Multiple features(多维特征) 2) Gradient descent for multiple variables(梯度下降在多变量线性回归中的应用) 3) Gradient descent in practice I: Feature Scaling(

【吴恩达机器学习】学习笔记——2.1单变量线性回归算法

1 回顾1.1 监督学习定义:给定正确答案的机器学习算法分类:(1)回归算法:预测连续值的输出,如房价的预测(2)分类算法:离散值的输出,如判断患病是否为某种癌症1.2 非监督学习定义:不给定数据的信息的情况下,分析数据之间的关系.聚类算法:将数据集中属性相似的数据点划分为一类. 2 单变量线性回归算法2.1 符号定义m = 训练样本的数量x = 输入变量y = 输出变量2.2 工作方式训练集通过学习算法生成线性回归函数hypothesis  hθ(x) = θ0 + θ1x 原文地址:http

机器学习技法--学习笔记03--Kernel技巧

背景 上一讲从对偶问题的角度描述了SVM问题,但是始终需要计算原始数据feature转换后的数据.这一讲,通过一个kernel(核函数)技巧,可以省去feature转换计算,但是仍然可以利用feature转换的特性. ? 什么是kernel Kernel的其实就是将向量feature转换与点积运算合并后的运算,如下, 概念上很简单,但是并不是所有的feature转换函数都有kernel的特性. ? Kernel化的SVM 在对偶化的SVM解中,有三个地方会使用到kernel 计算截距b 计算QP

机器学习基石--学习笔记01--linear hard SVM

背景 支持向量机(SVM)背后的数学知识比较复杂,之前尝试过在网上搜索一些资料自学,但是效果不佳.所以,在我的数据挖掘工具箱中,一直不会使用SVM这个利器.最近,台大林轩田老师在Coursera上的机器学习技法课程上有很详细的讲授SVM的原理,所以机会难得,一定要好好把握这次机会,将SVM背后的原理梳理清楚并记录下来.这篇文章总结第一讲linear hard SVM的相关内容. ? ? 最好的分割线 之前有讲过PLA,即在线性可分的数据中,找到一条线,能够区分开正负样本,如下所示: 上面三条线,