这是CS229的第三节课,早上睡醒不想起床,在被窝里看完了这一个课程,好玩的是,中间我还看睡着了,哈哈哈。
这节主要讲的内容有:
1、underfit and overfit
2、loess回归(局部加权回归)
3、最小二乘法的概率解释
4、逻辑回归的推导(留作逻辑回归一起讲述)
underfit and overfit
Linear Regrassion我们看一下这个线性回归的图,如果我们用一个特征,也就是一维来拟合这个训练集,效果会不是很好,这就是欠拟合,就像上图的第一个,但是如果我们用6个特征来拟合,我们会发现我们穿过了每一个点,但是他对测试集的效果是特别的差,这叫过拟合。
我们这里就简单理解一下underfit和overfit
loess回归(局部加权回归)
我们之前学习的线性回归是一种参数学习方法
什么是参数学习方法呢?
就是一旦确定了特征,那么就会有固定数量的参数来进行数据的拟合。
相反的,我们就知道了什么是非参数学习方法
当然,并不是没有参数,而是参数会随着数据量的增加而线性增长。那么问题来了:
我们为什么需要非参数学习方法?
我们在做线性回归的时候可以发现,特征的选取是一个很麻烦的事情,如果维度选择低,会出现underfit,相反,则是overfit。而非参数学习方法则可以为我们缓解对特征的依赖程度,为什么呢?
我们通过对Loess回归的分析就可以看出来:
首先,我们通过一个例子来看一下局部加权回归的原理:
我们先用numpy生成一堆数据,然后在jupyter notebook里面用seaborn画出来
import numpy as np
import seaborn as sns
data = np.arange(0, 10, .2)
data = np.multiply(data * data, 2) - 13 * data + 20*np.random.rand(50)
sns.scatterplot(x=np.arange(0, 10, .2).reshape(50), y=data.reshape(50))
nike
然后,我们在其中随便插入一个点,
insert a point
然后,如果用线性回归,我们想估计一下这个点的真值,我们需要,首先确定特征,比如说二维,然后用最小二乘法的损失函数来求出theta参数,然后在将这个点带入。
现在我们用局部加权回归的话,就在这个点周围确定一定大小的数据子集,然后,认为这个子集是符合一维特征的线性回归,然后就和线性回归一样了,最后,我们求出了这个点。 确定数据子集
我们很明显的看到,在前期我们省略了复杂的特征选择过程,缓解了对特征选择的依赖,当然他的缺点也是很明显的,比如说,给我一个点,我就得重新拟合一次,所以如果当数据量很大的时候,代价可想而知。当然也是有解决方法的,吴恩达教授当时提到了用KD树解决这个问题,我并没有仔细查这个问题,我想的是应该就是用KD树将空间划分为许多的子空间,然后,通过剪枝等算法,快速确定数据子集(一己之见)。
算法:
对于我们说的确定一个数据子集,实际上并不是自己去一个范围,而是用到了一种叫做局部加权的方法:
要算出给定值对应的真值,同样的,我们需要求出参数theta,而theta的求取依然离不开代价函数:
这里的omega_i叫做权重,是表示一个样本点对于代价函数的贡献程度,如果一个点离我们给出的点很远的话,他的权重也就趋近于零,也就是对代价函数的贡献特别小,接近于零,这样就自动的形成了一个数据子集。
weight
这里面的分母上的tau是叫做波长参数,他控制权重下降的快慢,如果tau很大的话,较远处的权重会很快的下降,体现在函数上就是一个高窄的钟型曲线,在这里声明一下:根据吴恩达教授说的,这个曲线与高斯分布的密度函数的图像没有任何关系,强靠上去也没有意义。
最小二乘法的概率解释
我想在线性回归中直接使用最小二乘法作为损失函数,会让人不解,为什么就用最小二乘法来拟合呢?
现在,从数学的角度来说一下,为什么最小二乘法的模型可以用来作为线性回归的损失函数。
首先,我们用一种新的方式来定义一下线性回归的假设函数:
这里的varepsilon的意思是误差项,就是说我们在拟合模型时,可能因为没有考虑某些特征,或者数据噪声而导致了误差。
- 我们假设误差项是符合高斯分布的,为什么呢?
因为,误差项可能是由许许多多我们认为独立同分布的特征导致的误差的加和,然后根据中心极限定理,这些的加和是成正态分布的(平均值等于加和除以数量)。而且假设成为高斯分布是有利于计算的。
所以我们可以得到:
然后,我们可以推出来:
给定参数theta,在Xi条件下Yi的概率
注意上图的名字,这里我还是有一个疑问的,我们知道上图的式子其实是概率密度函数,并不是概率,但是吴恩达教授当时就是这么写的,我想的是:可能是因为概率密度函数可以代替概率吧,因为后面用到了极大似然,这个是数学上可以证明的
然后,我们要不忘初心,我们线性回归是为了干嘛?为了解出参数theta啊,到这一步,我们很容易接想到了,参数估计求出theta值,当然,具体来说就是极大似然估计。
第一步,构建似然函数:
likehood function
第二步,NLL优化(就是求对数)
第三部,化简
最终结果:
然后,这里吴恩达教授给大家卖了一个关子:我告诉你,这个似然函数的最大值至于后面的有关,你问我为啥?看我后面的课程,哈哈哈,这个我后面会补上去,现在先留个坑,这个不是我懒,是我爸催我走了,哈哈哈哈。
我们可以看到最后的一项就是最小二乘法的模型函数,所以求最大似然就是在求最小二乘法的最小值。
For My Dream
网友评论