前言
涉及的知识点:
- 使用最小二乘法来拟合参数的本质原因
- 拟合和过拟合的概念
- 局部线性回归算法(Locally Weighted Regression)——接触的首个“non-parametric”(非参数)机器学习方法
- 二元分类问题的机器学习解法
为什么使用最小二乘法?
回想高中的时候老师教最小二乘法,就直接告诉你用这个最小二乘公式来算直线的斜率k和截距b,得到的直线就能够最好地拟合图中出现的数据。这里“最好地拟合”的含义,我记得老师说是“经过最多点且未经过的点在直线两边均匀分布”。
本讲用概率的方法使我明白了:“最好的拟合”本质上是求出一个拟合函数 使得图像上的所有离散点出现在这个函数图像上或者在这个函数图像附近的概率最大。从概率观点出发,自然地推导出最小二乘法。
符号定义
:在确定了
作为参数的前提下,
出现后,
出现的概率。注意这个符号和
不同。前者的
不是随机变量而是一个确定的值(只不过我们还没有拟合出来);后者的
是一个随机变量,在概率论中的含义是“在随机变量
,
出现的情况下,
出现的条件概率”.
: 表示在给定
作为参数时,所有训练样本出现的条件下得到结果
的概率。
:定义
为
为极大似然函数,强调的是
是随
的变化而变化的。但是数值上二者是一样的。
: 为了数学计算的方便而定义。
推导过程
设 ;其中
为误差函数。
假设误差函数 服从正态分布(Gaussian distribution),则由于
, 所以
假设误差函数满足正态分布的原因是“中心极限定理”:许多独立的随机变量之和趋向于服从正态分布。
我们假设引起误差的因子之间是“独立同分布的”(Independent and identically distributed),即因子都为随机变量,相互之间不互相影响,且具有相同的分布。
这个假设是比较符合事实的,因为引起误差的因子往往是互不相关的。比如你要拟合房价和房子面积的关系函数,对于获取到的面积-房价数据,一定存在某种不可估量的误差:你记录数据的时候恰好房东太太心情不好,把房价定的偏高、记录房价的时候抄错数据等等。这些引起误差的因子之间是鲜有关联的。
{% asset_img markdown-img-paste-20180101182814570.png %}
因此可以计算 :
极大似然估计:
求出一个 使上式得最大值,也就是使数据集
中的数据及其对应的
出现的可能性最大。
易知: 使 最大的
值也能够使
达到最大.
因此转而求 的最大值:
为使上式最大,只需要使 最小即可。
结论
从上述推导可以看出,使用最小二乘估计来拟合训练样本的方法,从概率论的角度看,实质上是在假设误差符合IID的情况下(这个假设符合实际),求出一个 使训练样本中的数据出现的概率最大。(这应该也是拟合的本质?)
拟合和过拟合的概念
对于给定的训练样本,比如之前使用的房价-房子面积的例子,其中只有“房子面积”这一个特征,在之前的定义中,我们这样定义 :
。这样拟合出的将会是一条直线:

为了更加精确地拟合每个训练样本,我们可以这样定义 :
这样拟合出的是一个二次函数,可以看到拟合效果比上面好一些,因为经过了更多的点且未经过的点在函数图像两边均匀分布:

以此类推,如果有6个训练样本,我们可以这么定义 :
看起来有点像泰勒公式,这样拟合出的曲线将经过每个训练样本:

上面的三个例子中:
第一个例子称为"underfitting"(欠拟合),因为它没有较好地反映出房价和房子面积的关系结构。
第三个例子称为"overfitting"(过拟合),因为它太过于注重拟合训练样本,而没有体现出宏观上的房价和房子面积的结构关系,也就是说它只能够表现已知的数据,不能够根据输入变量来预测输出变量。(输入变量和输出变量在上一讲的笔记中定义)
“非参数”算法
不知道为啥课程要在这里提一嘴“非参数算法”,并以局部线性回归算法为例子简要讲解了一下,这似乎和之前和之后将要讲的内容没什么关联。但是既然讲了我就记一下。
所谓“非参数”,是区别于“确定参数”算法的另一类算法,在之前的线性回归中,我们使用训练样本拟合出一个参数 后,如果要根据新的输入变量预测输出变量,那么只需要将新的输入变量代入拟合出的函数即可。在“非参数”算法中,我们的
的参数和训练样本数据是紧密相关的,(可以说训练样本数据就是参数的一部分?)随着训练样本数量的增加,为计算
需要保存的东西也线性增加。
“非参数”算法的例子:局部线性回归算法
在线性回归算法中,我们的计算过程如下:
-
确定
使得
最小
-
输出
而在局部线性回归算法中,我们需要这么计算:
-
确定
使得
最小
-
输出
其中 称为第i组数据的权重,是一个非负的值,它的标准定义如下:
其中 是新输入的输入变量。
可以看到,在局部线性回归算法中,每次根据新的输入变量 计算输出变量
都需要所有之前出现过的训练样本参与确定新的
,且从
的表达式中可以看出,距离
越远的训练样本中的输入变量
对应的权重
越小,根据这个算法计算每次计算出来的
具有很强的局部特征,因此称为局部线性回归算法。
二元分类问题
二元分类问题是指输出变量y的值域为 的问题。比如判断一个人是否患病、判断一个软件是否是恶意软件、判断一个人是男是女等等问题,这些问题只有两种可能的答案,是或者不是。
线性回归算法在二元分类问题中表现较差
在之前的线性回归问题中,我们定义 这样拟合出来的将会是一个线性函数,现在考虑用线性函数来拟合一个简单的二元分类问题:
现有一组训练样本分布,根据线性回归算法可以拟合出下图中的直线:

在上述训练样本分布下用线性回归算法解决二元分类问题是简单的,只需要根据拟合出的直线求出 时对应的
的值,则
但是对于下面这个训练样本分布,上述线性回归算法就不能准确分类:

可以看到线性回归算法解决分类问题时受训练样本数据分布的影响较大(如果硬要用线性回归来解决分类问题似乎要用之前说的”非参数”算法?)
logistic(也称sigmoid)函数解决分类问题
logistic函数: 函数图像大致如下:

注意到这个函数值域为 。
定义不同于线性回归算法的新 :
至于为什么在二分类问题中使用logistic函数来定义 (应该有很多其他值域为
可供选择),这个问题将在下一讲的广义线性模型(GLM)中很自然地解决。
那么,如何拟合这个新的 的参数呢?
在线性回归问题中,我们使用最小二乘法来拟合 的参数,为什么使用最小二乘法,上面已经解释清楚;那么,如何拟合这个新定义的
的参数呢?首先我们要明确参数拟合的最终目的是为了得出一个
使得训练样本数据出现的概率最大,也就是达到极大似然估计。
在二元分类问题中,定义概率分布如下:
因为y的取值只能是0或1,上述两式可以合并为一个式子:
则极大似然函数
因此,
为了使 达到最大值(还记得吗?我们在线性回归部分通过使
最小来做到这一点),我们需要使用“梯度上升法”,简单来说就是朝着梯度方向每次走一步,直到梯度为0时达到最大值。
求解过程在讲义中能找到,如下:
首先要知道怎么求 的导数:

则 的梯度为:

根据梯度上升,得到 的更新公式:

这个更新公式除了梯度上升和下降导致的符号不同之外,和线性回归中推出的更新公式看起来是一样的,只是这里的 和线性回归中的不同。这不是巧合,在下一讲中的广义线性模型中我们就能知道原因。
网友评论