回归补充(一)
发布日期:2021-07-03 20:40:35 浏览次数:1 分类:技术文章

本文共 4323 字,大约阅读时间需要 14 分钟。

回归补充(一)

文章目录

一.如何用极大似然的原理来推最小二乘法

我们知道,在线性回归回归当中,尽管你得出了一个线性回归函数,能够尽可能的和给出的训练数据相拟合。但是这个现行回归函数得出来的值,和实际值还是有一个误差的。因此,实际值我们就可以用下面这个公式表示,其中ε (i)表示误差。

公式一

(公式1)

值得一提的是,着当中的误差ε (i) (1≤i≤m)是独立同分布的,服从均值为0,方差为某定值σ^2 的高斯分布(也叫正态分布)。这个规律往往随着数据量的增大而越发的明显,哪怕这些独立同分布的数据本身并不一定服从正态分布。基于这个现象,人们经过不断的论证,最后通过中心极限定理很好的解释了这个现象。

既然这里的ε (i)在体量足够大的时候服从正态分布,那么,它的表达式如下:

在这里插入图片描述

我们把上面这个算式当中的ε (i)用公式1给替换一下,那么就得到了下面这个算式:

在这里插入图片描述

那么它关于theta的最大似然估计是多少呢?在大学本科学过概率论的小伙伴应该清楚当中的套路。为了方便计算,我们首先求它的对数L(θ)。

计算过程如下:

在这里插入图片描述
在这里插入图片描述

如何让上述算式的值最大呢?即:如何才能得到最大似然估计值呢?我们分析一下最后这个式子。这当中,m, π,σ2都是已知的,其中σ2 为正态分布的方差。如果要让这个式子取最大值,那么减号之后的那部分只要尽可能的小,整个式子就会尽可能的大。我再σ^2 排除掉,剩下的部分就是最小二乘法的式子:

在这里插入图片描述

(公式二)

二. 线性回归中,权重θ的推导

在稍早前介绍线性回归的时候,我们知道了一个公式:

在这里插入图片描述

这个公式其实是可以通过梯度下降的方法求出来的。

我们在上边已经推出来了最小二乘法的公式,我们依靠的就是这个最小二乘法公式,我们看公式二,当中的h(xi)其实就是最开始提及的误差值ε (i),只不过是换了一个表达式,显得更加正式。

我们发现最小二乘法公式其实是一个个平方项的加和,学过线性代数的同学应该了解,平方项是可以用矩阵乘法的方式去表示的,如下:

在这里插入图片描述

这个式子,我们对θ求偏导,即可知道J(θ)下降速度最快的方向:

在这里插入图片描述

上述式子倒数第一行求驻点,经过移项,就可以得到所求公式。

注意:上一个式子的倒数第二行,运用到了矩阵的求导公式。如何求,可以参考这个链接:

上面这个式子主要用到了这几个公式:

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

不过,上述公式的推导是基于一个前提条件:X(T)X是可逆的,万一遇到不可逆的情况呢?答案是:加上一个“扰动值”,不光在不可逆的时候,过拟合的时候也可以使用这个方法:

在这里插入图片描述

其中λ为扰动值,I为单位矩阵。加入扰动值之后又是怎么一个结果呢?

首先,尽管,X(T)*X有可能不是可逆的,但它一定是半正定的,理由如下:

在这里插入图片描述

因此,如果λ大于0,那么新构建的矩阵一定是正定的:进而保证了可逆

三.两种正则化

正则化的英文名:regularization。字面理解就是规则化,这个字面意思就很好的形容了正则化的含义:所谓的规则化,就是指要加一些规矩,避免你做出一些出格的事情。而在过拟合当中,你也一定要对线性回归函数加一些限制,使他不要过度适应。因此,所谓的正则化,就是一种对对象进行限制以满足某一特定目的的处理方法。我们的方法是:在损失函数后面加上一个正则项,如果用一句话来概括加上正则项的目的,就是:防止过拟合。

3.1 L1正则化

即,后面加上权值的绝对值乘以一个超参数,如下:

在这里插入图片描述

经过L1正则化之后,我们就得到了另一个回归方程:Lasso回归

3.2 L2正则化

如果我们在损失函数的基础上,加上平方和损失,就是所谓的L2正则化,它的算式如下:

在这里插入图片描述

经过L2正则化之后,我们就得到了另一个回归方程:Ridge(岭)回归

3.3 Elastic Net

这个其实是Lasso回归和岭回归的一个折中,因为无论是L1还是L2回归都有一些难以处理的事情。不过在讨论这个事情之前,我们得知道一个概念:稀疏解。

所谓的稀疏解,其实是人们的一个愿望。线性回归有常数项,一次项,二次项……n次项,我们希望这些项的前方尽可能不要有太多的非0系数,因为非0系数太多,往往代表过拟合。

因此,为了防止过拟合,我们应当让我们的模型能够适当的稀疏化。

因此,对于h = w(T)*X,我们自然希望w当中的0能够多一些

首先,我们看Lasso回归的后半部分,加了绝对值,而且是一次项,那么我们简单的想一想初中的东西,y=|x|的图像是什么样子呢?相信很多人都知道,是一个菱形的形状。在机器学习当中,我们绝大多数情况都会使用梯度下降法去处理问题。我们先看一张图:

在这里插入图片描述

图中这一圈又一圈代表目标函数J(w),当w1,和w2都减小的时候,这个目标函数也就越小,那么,在随着目标函数沿着梯度方向逐渐减小的过程中,总会取到黑点的部分,而那个点,至少w1=0,也就是说,我们的w当中是可以取到0的。

通过这个简单的例子,我们直观体会到了Lasso的一个特点:更容易获得稀疏解。

但是岭回归则不然:

我们知道,岭回归后面的式子是平方项,如果用二维来举例子,那就是一个圆,如图所示:

在这里插入图片描述

可见,当取到式子后半部分的边界的时候,w1和w2都不是0,所以,岭回归并不容易得到稀疏解。

不过,单一从稀疏解的角度,并不能全面说明两种算法的好坏。因为在日常的使用过程中,人们发现,如果数据量比较大,岭回归的性能往往要比Lasso性能要好不少。于是矛盾点产生了:Lasso可以较容易的得到稀疏解,岭回归做不到;岭回归的性能往往不错,但是Lasso不行。于是就有人想:能不能集两者之大成呢?于是就出现了弹性网络。

弹性网络(Elastic Net)的公式如下:

在这里插入图片描述

需要注意一个事情:这三种方法当中都有一个超参数:入。因此,在实际使用当中,我们可以用交叉验证的方法来处理

3.4 正则化为什么能处理过拟合?

我们把最小二乘法损失函数给简化一下:以L2正则化为例(不严谨,只说明原理)

J ( θ ) = J 0 + λ θ j 2 J(\theta) = J_{0} + \lambda \theta _{j}^2 J(θ)=J0+λθj2

我们分别对权重theta,以及对截距b求偏导:

∂ J ∂ θ = ∂ J 0 ∂ θ + 2 λ θ \frac{\partial J}{\partial \theta} = \frac{\partial J_{0}}{\partial \theta} + 2\lambda\theta θJ=θJ0+2λθ
∂ J ∂ b = ∂ J 0 ∂ b \frac{\partial J}{\partial b} = \frac{\partial J_{0}}{\partial b} bJ=bJ0
不难发现:正则化,对b没有影响,但是对权重theta可有影响
theta的变化,通过上面这个式子,可以得到:
θ → θ − α ∂ J 0 ∂ θ − 2 α λ θ → ( 1 − 2 α λ ) θ − α ∂ J 0 ∂ θ \theta\rightarrow\theta-\alpha \frac{\partial J_{0}}{\partial \theta}-2\alpha \lambda\theta \rightarrow(1-2\alpha\lambda)\theta - \alpha \frac{\partial J_{0}}{\partial \theta} θθαθJ02αλθ(12αλ)θαθJ0

所以,不难看出,权重theta的系数有所变化了,其中alpha,lambda都是指定的超参数,一般情况下,不会是负数,因此,theta前面的系数小于1,这就是所谓的:权重衰减。

正则化,正是利用的权重衰减来防止过拟合

四.广义逆矩阵

这个广义逆矩阵其实相对于我们大学本科阶段学习的线性代数里面的逆矩阵。在本科的线性代数当中,我们默认一个事情:只有方阵才有可能有逆矩阵,于是就有人想:如果不是方阵呢?于是,经过一部分人的总结,广义逆矩阵的概念就被提出来了。

广义逆矩阵也叫伪逆矩阵,它是指:若A为非奇异矩阵(即:满秩),则线性方程组Ax=b的解为:

在这里插入图片描述

于是,从方程解的直观意义上,我们大可以定义伪逆矩阵为:

在这里插入图片描述

五.批量梯度与随机梯度

如果梯度下降能够在整体上趋向于局部最小值,那么万一有整体的最小值呢?在之前的文章中,我们就说过,这个方法其实一直没有找到一些好办法。但是,批量梯度与随机梯度是两个不错的思路,可以参考。

5.1 批量梯度下降(Batch gradient descent , 简称BGD)

如果,整体上只有一个局部最小值,那么这个事情就容易解决多了,批量梯度下降就是一个方式。批量梯度下降的思路就是:既然整体最小值也是局部最小值,那么不管从哪个方向开始下降,最终都会走到那个最小值,即:汇聚在了一起。批量梯度的伪代码如下:

在这里插入图片描述

即:对所有的点都进行梯度计算,直到所有的点都汇集到最低的那个点,这也意味着批量梯度下降一定能找到全局的最优点

5.2 随机梯度下降(Stochastic gradient descent, 简称:SGD)

批量梯度下降需要不停的进行梯度下降,直到所有的点都能汇集到最小点,这也意味着他的计算量非常巨大,因此,如果数据量比较大,BGD费时费力。于是就有人提出了SGD。

随机梯度下降是每次迭代使用一个样本来对参数进行更新。比如说,我第一次迭代,得到了一个较低的值,我再往后迭代的时候,碰到了更低的值,那么就用这个更低的值去覆盖原来的值。以此类推,直到迭代结束。

随机梯度的伪代码如下:

在这里插入图片描述

当然了,虽然熟读更快,运算量也比BGD减少不少,不过,由于只是经历了m次循环,二不像BGD那样把所有的可能性都走了一遍,这也意味着那个全局的最低点恐怕总也找不到。

于是,就有人想,能不能折中一下呢?

5.3 小批量梯度下降(Mini-Batch)

BGD与SGD的折中方案就是这个Mini-Batch。小批量梯度下降对随机梯度下降当中的for循环做了修改,它不像随机梯度算法那样,把i从1到m都跑一遍,而是从m个样本中随机抽取若干个进行迭代。而选出来的这几个进行BGD。

为了能够从m个样本当中随机抽取,小批量梯度下降搞出了一个batch_size, 其实就是一个参数,我们假设这个batch_size = 10。那么我们大概就可以写出Mini_batch的伪代码如下:

repeat until convergence{	for i = 1, 11,21,31……m,{		SGD	}}

六.梯度下降改进

这个,请详见这篇文章

转载地址:https://blog.csdn.net/johnny_love_1968/article/details/116276421 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:回归补充(二)
下一篇:数据清洗

发表评论

最新留言

做的很好,不错不错
[***.243.131.199]2024年02月29日 01时17分16秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

推荐文章

arch Linux添加源,在Arch Linux系统中使用Archlinuxcn源(清华源)的方法 2019-04-21
私人linux远程连接,Linux远程连接 - osc_5g1gl9wp的个人空间 - OSCHINA - 中文开源技术交流社区... 2019-04-21
windows文件迁移到linux,从Windows到Linux迁移之文件服务器(Samba和AD完美结合) 2019-04-21
linux下vi编辑器的命令大全,linux下VI编辑器命令大全(超级完整版) 2019-04-21
linux结构体数组的定义数组,task_struct结构体中的run_list和array域 2019-04-21
C语言极坐标转直角坐标,C语言实现直角坐标转换为极坐标的方法 2019-04-21
16F877A和24C02通信汇编语言,PIC16f877A读写24c02程序 2019-04-21
用c语言编写小于n的所有素数,关于求N以内素数的一点小问题(N小于一亿) 2019-04-21
华为100万部鸿蒙,2019年Q4发布 华为100万部鸿蒙OS手机已开测 2019-04-21
android+大富翁+局域网,【图片】大富翁6局域网(LAN)多人联机教程(求精)_大富翁吧_百度贴吧... 2019-04-21
html5 video视频资源保护,HTML5 视频播放 <video> 2019-04-21
html表头跟随滚动,JS实现table表格固定表头且表头随横向滚动而滚动_心善_前端开发者... 2019-04-21
rn webview加载本地静态html,React Native - Webview 加载本地文件 2019-04-21
dax powerbi 生成表函数_Power BI |DAX函数のCALCULATETABLE、CALENDAR函数以及相关表生成函数... 2019-04-21
编程之类的文案_如何锻炼写文案的能力? 2019-04-21
vscode 不能使用中文输入法_vscode中vim插件设置 2019-04-21
当集合a为空集时a的取值范围_1.1.2 集合间的基本关系 2019-04-21
vue 可合并表格组件_Vue实战046:详解Mixins混入使用和注意事项 2019-04-21
python包怎么做双重差分did分析_多变量相关性分析(一个因变量与多个自变量) 2019-04-21
fi sap 凭证冲销 稅_SAP中的成本要素 2019-04-21