本帖最后由 morinson 于 2016-1-15 20:50 编辑
fox同学tensorflow学习分享--线性分类法 by fox 20150105
作者:fox 整理排版:morinson 来源:FGM学习小组
拟合和欠拟合
还是房价的例子,当x1 为房子大小时:
左图中使用线性函数作为假设,通过梯度下降法,能获得一个比较契合的函数,但是会丢失一些二次成分
右图中,增加了x2= 房子大小的平方,即x2=
,获得了一个很契合的函数
下图中,将所有7 个数据都用作特征输入时,可以获得一个满足所有训练数据的曲线,但是不会有人相信这是真实的房价预测函数
所以在左图中,称为欠拟合,下图中称为过拟合
局部加权回归
这是一个非参数学习算法,即参数数量和训练数据数量相等
首先,看问题:
如图,有图中这样一个训练数据集合,如果使用之前介绍的线性回归,我们或许会得到一个图中虚线表示的函数,但是这肯定不是我们希望得到的结果。
或者你可以用sin 或者二次函数来模拟出一个和训练数据很像的曲线,那样确实是可以的,但是我们希望能够自动的合成一个函数,来适应这个数据集合。
那么我们会使用局部加权回归。
局部加权回归的思路如图
如果我们想求出图中x 的位置的值,那么我们只需要取x 周围一些数据来线性回归出一条直线,并且用这个直线来预测h θ(x) 的值。
那么他的数学描述如下:
ωi表示一个函数:exp(-
)
所以如果有一个训练样本 (xi - x)很小,那么ωi 近似等于1
相反,如果(xi - x)很大,那么ωi近似等于0
所以这个函数的图像就像一个钟型,使得距离x越近的值获得更高的权值,越远的权值越低
ωi函数可以是其他样子的衰减函数,但是普遍认为指数形式的衰减函数是最有普遍性的。
这个ωi函数看起来有点像高斯分布,但是他跟高斯分布没有一毛钱关系,他只是看起来像而已,千万不能把它和高斯分布联系起来。
ζ(tow)称为波长函数。控制权值下降的速度。
当ζ很小的时候,是中间那个细长的图像,图像衰减的很快,所以x附近只有一点点数据得到权重。
相反,是很粗的那个图像,权重下降的很慢
这个ωi函数也存在过拟合和欠拟合问题,所以选择适当的波长也是一个问题。(这个问题会在后面讲解)
局部加权回归的问题在于每次计算h θ(x) 时,都要遍历所有数据集合来拟合出一条线性函数,计算量会非常大。(有方法可以让这个算法在大型数据集中更快的工作,参考andrew moore 的KD tree )
线性模型的概率解释
回到预测房价的例子中。
yi =
εi
其中εi 表示一个误差项。
可以把误差项看作是任何没有计算在内的特征,比如房子在几层,房子有没有花园,房主心情不好等情况的总和。
假设εi 服从高斯分布即εi ~ N (0 ,
),这个公式的意思是εi 服从高斯分布均值为0 ,方差为
file:///C:\Users\ADMINI~1\AppData\Local\Temp\msohtmlclip1\01\clip_image013.png
如图中εi 的密度公式和图像
所以,房屋价格的概率密度公式,如图
所以,换句话说,房价是一个服从高斯分布,如图
关于εi 误差项的性质:为什么使用高斯分布来模拟误差项?
1 )便于数学计算
2 )误差项是由很多独立事件构成的,符合高斯分布特征
3 )误差足够使用,机器学习中没有绝对精确这个概念
新概念:似然性L( θ)
这里的θ不是随机变量,而是一个确定的值,只是我们还不知道,这是频率学派的观点,所以公式中θ前面是分号,如果是贝叶斯学派,则用逗号。
所以似然性L( θ) 是每一个训练数据i 的概率之积。
似然性L( θ) 表示的事以θ为参数的函数,而函数hθ(x)的概率表示的是以x为参数的函数,虽然他们是相等的。但是要从概念上把他们区分出来。
首先要选取一个θ,使得似然性最大
上图中,让花写的L( θ) 等于L( θ) 的对数,这样做为了获得数学上便利
利用对数的性质,对一个乘积取对数,等于各项取对数之和。
得到上图中的式子,这时log和exp会互相抵消
得到上图的式子
所以,如果要让花写的L( θ) 最大化,那么需要让
最小化。最终这个结果就是之前线性回归中的J(θ)
在上图中的
不管取什么值,并不会影响最终θ的取值
所以也就是说误差项的在服从高斯分布的情况下,不管方差是多少,都不会影响θ的取值。
下面,要用线性回归的概率解释,来阐述我们第一个分类算法:
有时候数据结果是二元的,比如病人是否得病。所以函数的值只能是0或者1
现在有这样的数据集:
如果用一个线性回归来预测这个数据集,我们能看到会是上图这样,看起来似乎很好
但是如果再给一个数据时:
很明显,线性回归会表现的不好。
如果想让hθ(x)在0-1之间,我们选择这样一个函数:
它的图像如上图,我们称这个函数为sigmoid函数或者logistic函数
下面是概率解释
当y=1的时的概率是hθ(x)那么反过来y=0时就是1- hθ(x)
如果写成一行就是
所以似然性L(θ)等于所有数据概率的积
跟刚才一样,加上log获得花写的L(θ)
然后为了让L(θ)最大化,我们使用之前的梯度法,不同的是,这次是梯度上升法
然后对花写L(θ)求偏导
推倒过程被忽略。。。
最终将偏导结果带入梯度上升法公式
这里,老师提出了一个问题,这个公式似曾相识,和上一节课讲的线性回归公式不是一样吗?
只是负号变成了加?因为hθ(x)不一样,它不再是一个线性函数了,而是一个sigmoid函数,这是一个通用的优雅的学习模型
感知器算法perceptronalgorithm
又是一个hθ(x)不同而不同的算法,由于感知器算法简单粗暴,所以在后面会使用这个算法来做基础构建,所以这里就只讲这么多
|