2019/11/19 Caesar
前言
回归算法是一种有监督学习算法,用来建立自变量X和观测变量Y之间的映射关系,如果观测变量是离散的,则称其为分类Classification;如果观测变量是连续的,则称其为回归Regression。
线性回归模型试图学得一个线性模型以尽可能准确地预测实值X的输出标记Y。在这个模型中,因变量Y是连续的,自变量X可以是连续或离散的。
在回归分析中,如果只包括一个自变量和一个因变量,且二者关系可用一条直线近似表示,称为一元线性回归分析;如果回归分析中包括两个或两个以上的自变量,且因变量和自变量是线性关系,则称为多元线性回归分析。对于二维空间线性是一条直线,对于三维空间线性是一个平面,对于多维空间线性是一个超平面。
1. 情景代入
下面我们可以用一个简单的例子来直观理解线性回归模型。
![](https://img.haomeiwen.com/i17022525/5ed7f39617395f37.png)
从图像中我们可以发现房子价和房子面积之间,存在着一定的线性关系,似乎是在沿着某条直线上下随机波动,我们甚至可以找到一条直线串联大部分的点。
![](https://img.haomeiwen.com/i17022525/34e20506d66a1ed0.png)
在二维平面中,这条直线的方程就是 y = wx + b,假设这条就是我们最佳拟合的直线 y = wx + b。对于每个样本点分别代入即可。为了防止正误差值和负误差值相抵的情况,使用绝对值来表示距离:
但是在线性回归中,我们需要找极值,需要函数可导,而
不是一个处处可导的函数,因此很自然地想到可以使用:
对于所有样本则有:
那么,问题来了,如何得到 w 和 b 呢?显然?关键在于如何衡量 f(x) 与 y 之间的差别,均方误差是回归任务中最常用的性能度量,因此我们可试图让均方误差最小化,.而这种基于均方误差最小化进行模型求解的方法称为“最小二乘法”。在线性回归中,最小 乘法就是试图找到一条直线,使所有样本到直线上的欧氏距离之和最小。接下来介绍以下“最小二乘法”。
2. 最小二乘法
2.1 最小二乘法引入
还是刚才的房子的栗子,首先,把得到的值画在笛卡尔坐标系中,分别记作 yi :
![](https://img.haomeiwen.com/i17022525/4ca84d22990db1ba.png)
其次,把要猜测的真实值用平行于横轴的直线来表示(因为是猜测的,所以用虚线来画),记作 y :
![](https://img.haomeiwen.com/i17022525/212b6c385c68d6f7.png)
每个点都向 y 做垂线,垂线的长度就是 | y - yi | ,也可以理解为预测值和真实值之间的误差:
![](https://img.haomeiwen.com/i17022525/0356fdecf72a0634.png)
因为误差是长度,还要取绝对值,计算起来麻烦,就干脆用平方来代表误差:
![](https://img.haomeiwen.com/i17022525/82ce4df77a32274b.png)
总的误差的平方就是:
![](https://img.haomeiwen.com/i17022525/9f61d6a572e3caae.png)
法国数学家,阿德里安-馬里·勒讓德提出让总的误差的平方最小的 y 就是真值,这是基于,如果误差是随机的,应该围绕真值上下波动。这就是最小二乘法,即:
![](https://img.haomeiwen.com/i17022525/f726a4c9893e2d90.png)
这是一个二次函数,对其求导,导数为0的时候取得最小值:
![](https://img.haomeiwen.com/i17022525/f581a63e02bc802b.png)
可得:
![](https://img.haomeiwen.com/i17022525/c86655503756209a.png)
2.2 线性回归中的应用
我们是要找到 a 和 b ,使得损失函数:
尽可能的小。这里,将简单线性问题转为最优化问题。下面对函数的各个位置分量求导,导数为0的地方就是极值:
J(a, b) 对 b 进行求导:
然后mb提到等号前面,两边同时除以m,等号右面的每一项相当于均值。
此时将对 b 进行求导得到的结果
代入上式中,得到:
将上式进行整理,得到
转载于公众号:数据科学家联盟
将上式继续进行整理:
转载于公众号:数据科学家联盟
这样在实现的时候简单很多。最终我们通过最小二乘法得到a、b的表达式:
3. 评估模型
3.1 损失函数
损失函数是针对单个具体的样本而言的。表示的是模型预测的值与样本真实值之间的差距。在线性回归中,我们通常使用平方损失函数:
另外还有一些常用的损失函数:
![](https://img.haomeiwen.com/i17022525/3c5f95f567e9d4d9.png)
损失函数是针对于单个样本的,但是一个训练数据集中存在N个样本,N个样本给出N个损失,如何进行选择呢?
3.2 风险函数
期望风险是损失函数的期望,用来表达理论上模型f(X)关于联合分布P(X,Y)的平均意义下的损失。又叫期望损失/风险函数。
![](https://img.haomeiwen.com/i17022525/0f10359ce8af3ea7.png)
转载于公众号:数据科学家联盟
3.3 经验风险
模型f(X)关于训练数据集的平均损失,称为经验风险或经验损失。
![](https://img.haomeiwen.com/i17022525/0c705d846ff300cb.png)
转载于公众号:数据科学家联盟
经验风险是对训练集中的所有样本点损失函数的平均最小化。经验风险越小说明模型f(X)对训练集的拟合程度越好,但是对于未知的样本效果怎么样呢?我们知道未知的样本数据(<X,Y>)的数量是不容易确定的,所以就没有办法用所有样本损失函数的平均值的最小化这个方法,那么怎么来衡量这个模型对所有的样本(包含未知的样本和已知的训练样本)预测能力呢?
3.4 期望风险
熟悉概率论的很容易就想到了用期望。没错!即假设X和Y服从联合分布P(X,Y).那么期望风险就可以表示为:
![](https://img.haomeiwen.com/i17022525/ec91dd64f7cc58a1.png)
转载于公众号:数据科学家联盟
3.5 总结
3.5.1 损失函数、经验风险、期望风险
损失函数:针对单个样本,衡量预测值与真实值的差异程度。损失函数是理解经验风险和期望风险的基础。
经验风险:经验风险是局部的,基于训练集所有样本点,损失函数最小化的。经验风险函数是现实的,可求的。
期望风险:期望风险是全局的,基于所有样本点,损失函数最小化的。期望风险函数是理想化的,不可求的。
3.5.2
我们平时所说的损失函数一定是数据集维度的,所以是经验风险或期望风险的一种。
4. 最优化
4.1 凸优化
确定损失函数是完成机器学习算法关键的一步,一旦它确定了,剩下的就是求解最优化问题,这在数学上一般有标准的解决方案。
现将回归预测函数带入损失函数的定义,可以得到如下损失函数:
![](https://img.haomeiwen.com/i17022525/f96cdd591008064a.png)
可以证明这个函数是凸函数。凸优化问题的局部最优解就是全局最优解,凸优化问题的研究较为成熟,当一个具体被归为一个凸优化问题,基本可以确定该问题是可被求解的。
4.2 梯度下降
得到对权重的梯度之后,可以用梯度下降进行更新。也可以直接寻找梯度为0的点来解决此问题,求解线性方程组,这就是经典的最小二乘法。
梯度下降算法的数学公式:
![](https://img.haomeiwen.com/i17022525/14f8c9901d2ce0d2.png)
此公式的意义是:J是关于Θ的一个函数,我们当前所处的位置为Θ0点,要从这个点走到J的最小值点,也就是山底。首先我们先确定前进的方向,也就是梯度的反向,然后走一段距离的步长,也就是α,走完这个段步长,就到达了Θ1这个点!
- α是什么含义?
α在梯度下降算法中被称作为学习率或者步长,意味着我们可以通过α来控制每一步走的距离,以保证不要步子跨的太大扯着蛋,哈哈,其实就是不要走太快,错过了最低点。同时也要保证不要走的太慢,导致太阳下山了,还没有走到山下。所以α的选择在梯度下降法中往往是很重要的!α不能太大也不能太小,太小的话,可能导致迟迟走不到最低点,太大的话,会导致错过最低点! - 为什么要梯度要乘以一个负号?
梯度前加一个负号,就意味着朝着梯度相反的方向前进!我们在前文提到,梯度的方向实际就是函数在此点上升最快的方向!而我们需要朝着下降最快的方向走,自然就是负的梯度的方向,所以此处需要加上负号。
5. 过拟合与欠拟合
后续补充
6. 正则化
后续补充
:
网友评论