线性回归算法模型与线性分类算法模型联系与区别初探 - Go语言中文社区

线性回归算法模型与线性分类算法模型联系与区别初探


1. 线性算法模型

0x1:线性回归和线性分类中的“线性”指的是什么

线性(linear),指量与量之间按比例、成直线的关系,在数学上可以理解为一阶导数为常数的函数;
非线性(non-linear)则指不按比例、不成直线的关系,一阶导数不为常数

0x2:从输入输出角度看"回归"和"分类"的区别

线性分类问题和线性回归问题都要根据训练样本训练出一个实值函数g(x),g(x)也叫映射函数

1. 回归模型: 给定一个新的输入特征, 推断它所对应的输出y(连续值实值)是多少, 也就是使用y=g(x)来推断任一输入x所对应的输出值。
注意: 如果我们将回归模型(regression model)的连续输出进行离散化,虽然看起来得到了有限个离散类别,但其本质还是回归模型,只是对输出做了特殊处理

2. 分类模型: 给定一个新的输入特征, 推断它所对应的类别(大多数情况是二分类如: +1, -1,也可以基于二分类扩展出多分类), 也就是使用y=sign(g(x))来推断任一输入x所对应的类别.
注意: 模型的输出结果类别是有限的

0x3:典型线性回归和线性分类算法

1. 典型线性回归算法

1. Linear Regression: 输出一个标量 wx+b,这个值是连续值,所以可以用来处理回归问题
2. SVR(Support Vector Regression):输出 wx+b,即某个样本点到分类面的距离,是连续值,所以是回归模型
3. Naive Bayes用于分类: 预测结果y是离散的类别,所以得到离散的 p(y|x),给定 x ,输出每个类上的概率
4. 前馈神经网络(如 CNN 系列)用于回归: 最后一层有m个神经元,每个神经元输出一个标量,m个神经元的输出可以看做向量 v,然后全部连到一个输出神经元上,则这个神经元输出 wv+b,是一个连续值,可以处理回归问题,和 Linear Regression 思想一样

2. 典型线性分类算法

1. Logistic Regression(逻辑斯蒂回归):把 Linear Regression的 wx+b 通过 sigmoid 函数映射到(0,1)上,并划分一个阈值,大于阈值的分为一类,小于等于分为另一类,可以用来处理二分类问题
2. SVM(Support Vector Machine): 把SVR得到的距离用 sign(·) 函数进行离散化处理,距离为正(在超平面一侧)的样本点是一类,为负的是另一类,所以是分类模型 
3. Naive Bayes用于分类: 对最大后验预测结果p(y|x)求期望 ΣyP(y|x)(即得到概率密度),就得到连续值
4. 前馈神经网络(如 CNN 系列)用于分类: m个神经元最后连接到 N 个神经元,就有 N 组w值不同的 wv+b,同理可以归一化(比如用 softmax )变成 N个类上的概率,然后取概率最大的那一类作为N分类的预测结果

3. 感知机属于线性回归还是线性分类算法?

这里我们来思考一下这个问题,感知机使用的是超分界面是线性回归模型(是一个线性函数),类似下图

然后感知机使用的不同softmax进行区间压缩,而是直接用了“y是否大于0”作为判别法则,把结果 y > 0和y < 0对应的输入 x 分成两类。我个人更愿意将其理解为简化版本的逻辑斯蒂回归,因为从图上就可以看到,感知机对区别度较大的样本分类效果很好,但是对区别度较小的(靠近0)的中间那块,这样一刀切的方式就很容易造成误报和漏报

但其本质还是:基于线性回归的结果,进行离散化得到有限个分类结果。和上面讨论的典型线性分类算法核心思想是一样的

0x4:回归和分类各自的应用场景

1. 回归问题的应用场景 - 回归是对真实值的一种"逼近预测"
    1) 回归问题通常是用来预测一个值,如预测房价、未来的天气情况等等
    2) 例如一个产品的实际价格为500元,通过回归分析预测值为499元,我们认为这是一个比较好的回归分析
    3) 预测明天的气温是多少度,这是一个回归任务

2. 分类问题的应用场景 - 分类并没有逼近的概念,最终正确结果只有一个,错误的就是错误的,不会有相近的概念
    1) 分类问题是用于将事物打上一个标签,通常结果为离散值
    2) 例如判断一幅图片上的动物是一只猫还是一只狗)
    3) 预测明天是阴、晴还是雨,就是一个分类任务,但是很容易理解

总体来说,回归模型对精度要求更低,它允许模型包含一定的误差,只要不影整体拟合结果即可

Relevant Link:

http://blog.csdn.net/caroline_wendy/article/details/13294893
https://my.oschina.net/zzw922cn/blog/544221?p=1
http://www.jianshu.com/p/d6f206c869ed
http://zh.numberempire.com/derivativecalculator.php

 

2. 线性回归模型

回归模型适合用在"值预测"的场景中,这里的场景就非常灵活了,根据数据集的不同,映射函数g(x)可以是线性函数,也可以是非线性函数。我们本文重点讨论线性函数相关问题,关于非线性函数问题放在文章的最末尾简单讨论

0x1:线性相关性分析 - 线性回归的原理基础

线性回归分析(Linear Regression Analysis)是确定两种或两种以上变量间相互依赖的定量关系的一种统计分析方法

线性回归分析法是以相关性原理为基础的.相关性原理是预测学中的基本原理之一

在统计学中,线性回归(Linear regression)是利用称为线性回归方程的最小二乘函数对一个或多个自变量和因变量之间的关系(这个关系就是要通过训练样本获得的知识)进行建模的一种回归分析。这种函数是一个或多个(即多元线性回归可以看成是很多个一元线性回归的线性组合)称为回归系数的模型参数的线性组合

例如:

一个地区的房价和面积、地段、层数、周边配套等因素组成。
这里面积、地段、层数、周边配套就是自变量;房价就是因变量。
线性回归要做的是就是找到一个数学公式能相对较完美地把所有自变量组合(加减乘除)起来,得到的结果和房价接近。这里的所谓“数学公式”就是一个线性模型

0x2:从一元线性回归说起

在回归分析中,只包括一个自变量和一个因变量,且二者的关系可用一条直线近似表示,这种回归分析称为一元线性回归分析(其实也就是我们最熟悉的y=f(x)函数)。接下来我们用一个例子来思考如何去解决一个现实中常见的问题,在一开始我们先不涉及最小二乘法、损失函数、牛顿法、梯度下降这些概念,我们只是单纯地去思考和解决问题

1. 问题描述

比方说有一个公司,每月的广告费用和销售额,如下表所示

如果我们把广告费和销售额画在二维坐标内,就能够得到一个散点图,如果想探索广告费和销售额的关系,就可以利用一元线性回归做出一条拟合直线

2. 这条线是怎么画出来的

很自然地,我们要思考一个问题:我们能不能画出这样一条直线,它能很好地解释历史上广告费和销售额的关系,并且还能帮助我们预测将来新的投入更多的广告费,销售额能到的具体数值。我们假设这样一个一元线性方程:

Y = ax + b(a、b分别代表2个参数,是我们需要通过观察数据计算得到的)

但是我们发现,这里的a、b参数可能的取值空间是无限的,就算是如上图所示的基本和点集拟合的直线,上下稍微微调一些也是无限的,那到底选哪一条是"相对最精确"的呢?(绝对精确是不可能的,误差总是存在的)。很自然地,我们需要引入一个"标准"来评价模型参数空间中,哪一个是最好的,这就是经验损失函数(注意区别于结构损失函数)

损失函数其 - 残差平方和(又称误差平方和,SSE,Sum of Squaresfor Error)

直观上,我们把我们预测的线性函数对每一个X的回归值(回归函数上的Y值)和真实值进行相减,为了防止负值的出现加上平方,得到一个平方和,最后对比所有的模型参数,谁的平方和最小,谁就是最佳的回归函数

然后利用平均数,把上面式子中每个括号里的内容进一步化简。例如

则:

于是

对于函数Q,分别对于a和b求偏导数,然后令偏导数等于0,就可以得到一个关于a和b的二元方程组,就可以求出a和b了。这个方法被称为最小二乘法

进一步化简,可以消掉2n,最后得到关于a,b的二元方程组为

最后得出a和b的求解公式:

有了这个公式,对于广告费和销售额的那个例子,我们就可以算出那条拟合直线具体是什么,分别求出公式中的各种平均数,然后带入即可,最后算出a=1.98,b=2.25

最终的回归拟合直线为Y=1.98X+2.25,利用回归直线可以做一些预测,比如如果投入广告费2万,那么预计销售额为6.2万

线性回归问题中使用最小二乘法求解全局最优解

上面提到的残差平方和,就是最小二乘法用于评估当前损失函数的方法,我在线性回归中所谈到的最小二乘是指侠义的最小二乘方法,它是一种闭式解的参数求解方法,通过对所有输入样本的残差平方和公式求解最小误差条件下的极值(导数为0),一步获得全局最优解

https://zhuanlan.zhihu.com/p/21852600
https://www.zhihu.com/question/24095027/answer/30698645
https://www.zhihu.com/question/37031188
https://www.zhihu.com/question/20822481

3. 为什么对历史数据拟合的看起来不是那么准?

上面得到了回归拟合直线:Y=1.98X+2.25,但是我们仔细观察一下会发现这条回归直线对历史数据拟合的并不是那么准,很多的点都没有落在直线上。这是为什么呢?对这个问题,存在几个原因:
1. 异常噪音点:样本本身可能存在一些“离群异常点”,这些点无法和模型完美的拟合
2. 非线性:这个是个严重的问题,意味着我们的建模就错误了,目标问题根本就不是一个线性关系问题,强行用线性模型拟合肯定是不行的
3. 异质性:导致因变量的自变量不在我们选取的特征中,换句话说,即我们选择的特征不能很好的体现出线性型的特征。对于销售额这个例子来说,其实广告费只是影响销售额的其中一个比较重要的因素,可能还有经济水平、产品质量、客户服务水平等众多难以说清的因素在影响最终的销售额,那么实际的销售额就是众多因素相互作用最终的结果,由于销售额是波动的,回归线只表示广告费一个变量的变化对于总销售额的影响,所以必然会造成偏差,所以才会有实际值和回归值是有差异的,因此回归线只能解释一部分影响。那么实际值与回归值的差异,就是除了广告费之外其他无数因素共同作用的结果,是不能用回归线来解释的 

这就反回来启发我们,应该用一个更加切近真实情况的损失评估标准来评估我们的回归线,为了引入这个新的损失评估标准,我们先来引入一个新的误差函数

SST(总偏差)=SSR(回归线可以解释的偏差)+SSE(回归线不能解释的偏差)

总偏差平方和(又称总平方和,SST,Sum of Squaresfor Total):是每个因变量的实际值(给定点的所有Y)与因变量平均值(给定点的所有Y的平均)的差的平方和,即,反映了因变量取值的总体波动情况。实际上也就是方差

回归平方和(SSR,Sum of Squares forRegression):因变量的回归值(直线上的Y值)与其均值(给定点的Y值平均)的差的平方和,即,它是由于自变量x的变化引起的y的变化,反映了y的总偏差中由于x与y之间的线性关系引起的y的变化部分,是可以由回归直线来解释的

残差平方和(又称误差平方和,SSE,Sum of Squaresfor Error):因变量的各实际观测值(给定点的Y值)与回归值(回归直线上的Y值)的差的平方和,它是除了x对y的线性影响之外的其他因素对y变化的作用,是不能由回归直线来解释的

R^2=SSR/SST 或 R^2=1-SSE/SST, R^2的取值在0,1之间,越接近1说明拟合程度越好

可以看到,我们将SSR(回归线可以解释的偏差)除以(归一化)一个总偏差,以此来更加准确地评估我们的回归线对真实情况的拟合。 
1. 假如所有的点都在回归线上,说明SSE为0,则R^2=1,意味着Y的变化100%由X的变化引起,没有其他因素会影响Y,回归线能够完全解释Y的变化
2. 如果R^2很低,说明X和Y之间可能不存在线性关系

还是回到最开始的广告费和销售额的例子,这个回归线的R^2为0.73,说明拟合程度还可以

引申思考:相关系数R:如何拟合程度差到一定程度会怎么样?说明了什么?

继续上面的例子,如果我们的数据集是下图所示

不用做数学分析,从肉眼上我们也可以看出,这个回归线的拟合效果非常差,但似乎这个回归线也"尽力"了,它只能拟合到这种程度了(根据平方差损失函数)。为了定量说明这个问题,我们需要引入相关系数R

注意和上面说的判定系数R^2的区分理解,判定系数来判断回归方程的拟合程度,表示拟合直线能多大程度上反映Y的波动。

在统计中还有一个类似的概念,叫做相关系数R(学名是皮尔逊相关系数,因为这不是唯一的一个相关系数,而是最常见最常用的一个),用来表示X和Y作为两个随机变量的线性相关程度,取值范围为【-1,1】。

1. 当R=1,说明X和Y完全正相关,即可以用一条直线,把所有样本点(x,y)都串起来,且斜率为正
2. 当R=-1,说明完全负相关,及可以用一条斜率为负的直线把所有点串起来
3. 如果在R=0,则说明X和Y没有线性关系,注意,是没有线性关系,说不定有其他关系(例如非线性关系)
这就告诉我们,如果遇到这种情况,即我们用线性回归发现无法很好地拟合我们的训练样本,这个时候其实是有两种可能
1. 我们的特征工程有问题,选错了一个和目标值Y不相关或相关性很差的特征X
2. 特征X选对了,但是X和Y是非线性关系,强行用线性回归自然无法得到好的结果

我们在建模之前,就需要先对我们的业务场景进行充分的了解,根据实际业务场景中数据的规律选择合适的拟合模型

Relevant Link:

http://scikit-learn.org/stable/auto_examples/linear_model/plot_ols.html#sphx-glr-auto-examples-linear-model-plot-ols-py
http://www.jianshu.com/p/fcd220697182
http://studyai.site/2016/07/22/%E6%96%AF%E5%9D%A6%E7%A6%8F%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0%E8%AF%BE%E7%A8%8B%20%E7%AC%AC%E4%B8%80%E5%91%A8%20(4)%E4%B8%80%E5%85%83%E7%BA%BF%E6%80%A7%E5%9B%9E%E5%BD%92/
https://baike.baidu.com/item/%E4%B8%80%E5%85%83%E7%BA%BF%E6%80%A7%E5%9B%9E%E5%BD%92%E9%A2%84%E6%B5%8B%E6%B3%95

0x3:扩展到多元线性回归

将上面一元的例子推广到多元的情况。多元线性回归模型(multivariable linear regression model )

在实际经济问题中,一个变量往往受到多个变量的影响,有时几个影响因素主次难以区分,或者有的因素虽属次要,但也不能略去其作用。例如,家庭消费支出,除了受家庭可支配收入的影响外,还受诸如家庭所有的财富、物价水平、金融机构存款利息等多种因素的影响。在这种复杂问题的拟合中,我们要用到多元线性函数

多元回归分析预测法,是指通过对两个或两个以上的自变量与一个因变量的相关分析,建立预测模型进行预测的方法。当自变量与因变量之间存在线性关系时,称为多元线性回归分析

1. 多元线性模型数学公式

假定被解释变量与多个解释变量之间具有下面的线性关系(即满足下面关于变量X的多元线性函数),则称X和Y的关系组成了一个多元线性回归模型


其中被解释变量解释变量未知参数随机误差项。可以看到,多元线性函数其实是由很多个一元线性函数线性组合而成

对于组观测值,其方程组形式为:

其矩阵形式为

=+

即:

其中

被解释变量的观测值向量解释变量的观测值矩阵总体回归参数向量随机误差项向量

总体回归方程表示为: 

2. 回归变量的选择与逐步回归 - 建立多元线性回归模型前怎么去做特征工程 

有时候我们在建立多元线性模型进行预测的时候遇到效果不好,可能就会一味的增加X的个数,也许碰巧确实增加的X中有一些是和Y相关性较高的X特征,所以拟合和预测效果提高了,我们误以为做了正确的事情然后暗自高兴,但其实可能浪费了大量的计算资源,其实只要增加其中几个有限的特征X就可以达到相同的效果

建立多元性回归模型时,为了保证回归模型具有优良的解释能力和预测效果,应首先注意自变量的选择,其准则是:

(1) 自变量对因变量必须有显著的影响,并呈密切的线性相关(相关系数R值较大);
(2) 自变量与因变量之间的线性相关必须是真实的,而不是形式上的,这就要求我们在建模前对业务场景有充分的了解。这里举一个例子来说明,也许在训练集中,天气的情况和你这个月的收入正好呈现强正相关,但这也许只是样本量不足带来的一种假象,事实上是不符合真实规律的;
(3) 自变量之间应具有一定的互斥性,即自变量之间的相关程度不应高于自变量与因变量之因的相关程度,这条准则意思是特征自变量之间最好不要存在太多的冗余关系,当出现冗余时可以考虑降维处理(例如PCA);
(4) 自变量应具有完整的统计数据,其预测值容易确定

在实际问题中,影响因变量Y的因素(自变量)很多,我们希望从中挑选出影响显著的自变量来建立回归关系式,这就涉及到自变量选择的问题。

在回归方程中若漏掉对Y影响显著的自变量,那么建立的回归式用于预测时将会产生较大的偏差。但回归式若包含的变量太多,且其中有些对Y影响不大,显然这样的回归式不仅使用不方便,而且反而会影响预测的精度。因而选择合适的变量用于建立一个"最优"的回归方程是十分重要的问题。

选择"最优"子集的变量(特征)筛选法包括

1. 逐步回归法(Stepwise)
2. 向前引入法(Forward)
3. 向后剔除法(Backwad)

1. 向前引入法

向前引入法是从回归方程仅包括常数项开始,把自变量逐个引入回归方程。具体地说,先在m个自变量中选择一个与因变量线性关系最密切的变量(利用X和Y的相关系数R),记为,然后在剩余的m-1个自变量中,再选一个,使得联合起来二元回归效果最好,第三步在剩下的m-2个自变量中选择一个变量,使得联合起来回归效果最好,...如此下去,直至得到"最优"回归方程为止。

向前引入法中的终止条件为,给定显著性水平,当某一个对将被引入变量的回归系数作显著性检查时,若p-value (即提高的幅度小于一定的阈值),则引入变量的过程结束,所得方程即为"最优"回归方程。

向前引入法有一个明显的缺点,就是由于各自变量可能存在着相互关系,因此后续变量的选入可能会使前面已选入的自变量变得不重要。这样最后得到的"最优"回归方程可包含一些对Y影响不大的自变量。即存在冗余的可能

2. 向后剔除法

向后剔除法与向前引入法正好相反,首先将全部m个自变量引入回归方程,然后逐个剔除对因变量Y作用不显著的自变量。具体地说,从回归式m个自变量中选择一个对Y贡献最小的自变量,比如,将它从回归方程中剔除;然后重新计算Y与剩下的m-1个自变量回归方程,再剔除一个贡献最小的自变量,比如,依次下去,直到得到"最优"回归方程为止。

向后剔除法中终止条件与向前引入法类似。即直到减小的幅度小于一定的阈值说明就收敛了

向后剔除法的缺点在于,前面剔除的变量有可能因以后变量的剔除,变为相对重要的变量,这样最后得到的"最优"回归方程中有可能漏掉相对重要的变量。

3. 逐步回归法

向前引入法和向后剔除法的缺点原因已经清楚了,很自然地我们会想到找一种动态调和的方法来综合使用这2种技术,逐步回归法就应运而生了,逐步回归法是上述两个方法的综合。向前引入中被选入的变量,将一直保留在方程中。向后剔除法中被剔除的变量,将一直排除在外。这两种方程在某些情况下会得到不合理的结果。于是,可以考虑到,被选入的的变量,当它的作用在新变量引入后变得微不足道时,可以将它删除;被剔除的变量,当它的作用在新变量引入情况下变得重要时,也可将它重新选入回归方程。这样一种以向前引入法为主,变量可进可出的筛选变量方法,称为逐步回归法
逐个引入自变量。每次引入对Y影响最显著的自变量,并对方程中的老变量逐个进行检验,把变为不显著的变量逐个从方程中剔除掉,最终得到的方程中既不漏掉对Y影响显著的变量,又不包含对Y影响不显著的变量

3. 根据训练样本(观测数据)来推测出多元线性模式的参数 - 最大似然估计思想

多元线性回归模型包含多个解释变量,多个解释变量同时对被解释变量发生作用,若要考察其中一个解释变量对的影响就必须假设其它解释变量保持不变来进行分析。因此多元线性回归模型中的回归系数为偏回归系数,即反映了当模型中的其它变量不变时,其中一个解释变量对因变量的均值的影响。

由于参数都是未知的,可以利用样本观测值对它们进行估计。若计算得到的参数估计值为,用参数估计值替代总体回归函数的未知参数,则得多元线性样本回归方程: .其中参数估计值样本回归值样本拟合值样本估计值

其矩阵表达形式为:

其中拟合值列向量样本观测矩阵参数估计值列向量

4. 多元线性模型下怎么评估拟合程度的好坏?

1. 残差平方估计

和一元线性回归一样,在多元的情况下也可以使用最小二乘估计来得到拟合值和实际值的差距

观测值与回归值的残差为:

由最小二乘法可知从训练样本估计得到的参数估计值应使全部观测值与回归值的残差的平方和最小,即使


取得最小值。根据多元函数的极值原理,分别对求一阶偏导,并令其等于零,即

化简得下列方程组

 (3.3)

上述个方程称为正规方程,其矩阵形式为


因为

为参数估计值向量

根据上式可得到正规方程组:

2. 可决系数R2

与一元线性回归中可决系数r2相对应,多元线性回归中也有多重可决系数r2,它是在因变量的总变化中,由回归方程解释的变动(回归平方和)所占的比重,R2越大,回归方各对样本数据点拟合的程度越强,所有自变量与因变量的关系越密切。计算公式为:

R^2=frac{sum(hat{y}-bar{y})^2}{sum(y-bar{y})^2}=1-frac{sum(y-hat{y})^2}{sum(y-bar{y})^2}

分母表示实际值和实际均值的残差平方和,分子表示拟合值和实际均值的残差平方和

3. 估计标准误差

估计标准误差,即因变量y的实际值与回归方程求出的估计值hat{y}之间的标准误差,估计标准误差越小,回归方程拟合程度越好

S_y=sqrt{frac{sum(y-hat{y})^2}{n-k-1}}

其中,k为多元线性回归方程中的自变量的个数。除此之后还显著性检验,F检验等,本质上都类似的,都是用来评估拟合值和真实值之间的差距程度,这里就不一一列举
注意多重共线性问题
多重共线性是指在多元线性回归方程中,自变量之间有较强的线性关系,这种关系若超过了因变量与自变量的线性关系,则回归模型的稳定性受到破坏,回归系数估计不准确。需要指出的是,在多元回归模型中,多重共线性的难以避免的,只要多重共线性不太严重就行了。判别多元线性回归方程是否存在严惩的多重共线性,可分别计算每两个自变量之间的可决系数r2,若r2 > R2或接近于R2,则应设法降低多重线性的影响
降低多重共线性的办法主要是转换自变量的取值,如
1. 变绝对数为相对数或平均数
2. 或者更换其他的自变量 

Relevant Link:

http://scikit-learn.org/stable/modules/generated/sklearn.linear_model.LinearRegression.html 
https://zh.wikipedia.org/wiki/%E7%B7%9A%E6%80%A7%E5%9B%9E%E6%AD%B8
https://medium.com/towards-data-science/simple-and-multiple-linear-regression-in-python-c928425168f9https://baike.baidu.com/item/%E5%A4%9A%E5%85%83%E7%BA%BF%E6%80%A7%E5%9B%9E%E5%BD%92%E6%A8%A1%E5%9E%8B
http://www.cnblogs.com/dfcao/p/ng_ml_2.html
http://www.cnblogs.com/zgw21cn/archive/2008/12/24/1361287.html 
https://onlinecourses.science.psu.edu/stat501/node/311
http://wiki.mbalib.com/wiki/%E5%A4%9A%E5%85%83%E7%BA%BF%E6%80%A7%E5%9B%9E%E5%BD%92%E9%A2%84%E6%B5%8B

0x4:非线性回归

1. 非线性模型和线性模型的区别

非线性回归生成一个用于描述连续响应变量与一个或多个预测变量之间的非线性关系的方程,并预测新观测值。注意:线性回归和非线性回归之间的根本差别,以及两种分析的命名依据,在于可接受何种形式的模型函数

1. 线性回归要求线性参数: 这限制方程只能有一种基本形式。当模型中的各项之间是相加关系,并且每一项只包含一个与该项相乘的参数时,参数是线性的,即 y = βo + β1X1 + β2X2 + ... + βkXk
2. 而非线性回归则不要求,它既可以是线性参数也可以是非线性参数

除此之外,非线性回归使用不同于线性回归的过程来使残差误差平方和 (SSE) 最小化

2. 非线性回归数学模型

和线性回归模型一样,在训练之前需要先建立非线性回归的数学模型,模型代表了从实际场景中问题的数学抽象,更具体来说就是我们需要对我们要拟合/预测的问题有一个先验的了解,这个了解包括

1. 我们可以抽象出的特征有哪些
2. 特征和待预测值的关系是怎样的?线性地还是非线性的?如果是非线性的那曲线形状大致是怎样的?

换句话说,如果样本数据足够好,特征足够有效,规律本身就已经呼之欲出了,用什么模型去拟合都查不了太多,效果都会是很好的

下表列举了一些的非线性回归模型的示例模型语法。随机选择的模型不太可能很好地拟合数据。参数的适当起始值是必要的,有些模型还要求使用约束才能实现收敛性

名称模型表达式
渐近回归 b1 + b2 * exp(b3 * x)
渐近回归 b1 – (b2 * (b3 ** x))
密度(D) (b1 + b2 * x) ** (–1 / b3)
Gauss b1 * (1 – b3 * exp(–b2 * x ** 2))
Gompertz b1 * exp(–b2 * exp(–b3 * x))
Johnson-Schumacher b1 * exp(–b2 / (x + b3))
对数修改 (b1 + b3 * x) ** b2
对数 Logistic b1 – ln(1 + b2 * exp(–b3 * x))
Metcherlich 的收益递减规律 b1 + b2 * exp(–b3 * x)
Michaelis Menten b1 * x / (x + b2)
Morgan-Mercer-Florin (b1 * b2 + b3 * x ** b4) / (b2 + x ** b4)
Peal-Reed b1 / (1+ b2 * exp(–(b3 * x + b4 * x **2 + b5 * x ** 3)))
三次比 (b1 + b2 * x + b3 * x ** 2 + b4 * x ** 3) / (b5 * x ** 3)
四次比 (b1 + b2 * x + b3 * x ** 2) / (b4 * x ** 2)
Richards b1 / ((1 + b3 * exp(–b2 * x)) ** (1 / b4))
Verhulst b1 / (1 + b3 * exp(–b2 * x))
Von Bertalanffy (b1 ** (1 – b4) – b2 * exp(–b3 * x)) ** (1 / (1 – b4))
韦伯 b1 – b2 * exp(–b3 * x ** b4)
产量密度 (b1 + b2 * x + b3 * x ** 2) ** (–1)

在选定预期函数后,若变量间非线性关系式已知(多数未知),且难以用变量变换法将其线性化,则进行数值迭代的非线性回归分析

这里需要注意的是,虽然理论上我们需要事先指定用于执行非线性回归的预期函数,设定了预期函数之后才能够根据训练集去训练出模型参数,但在实际的业务场景问题建模过程中,我们遇到的最多的问题就是:

1. 要解决问题似乎太过复杂,导致肉眼或者先验经验无法给出判断该用什么预期函数建模
2. 可能需要付出很多精力才能确定可以为数据提供最佳拟合的函数。这通常需要额外的研究、专业领域知识和试错分析。另外,对于非线性方程,在确定每个预测变量对响应的影响时可能不如线性方程那样直观

若实际问题的曲线类型不易确定时,由于任意曲线皆可由多项式来逼近,故常可用多项式回归来拟合曲线。但这样就导致参数的解空间很大,也就要花费更多的时间去拟合样本数据,深度神经网络DNN就是典型的例子

3. 非线性回归参数估计策略

非线性模型中的参数估计无法像线性模型中那样直接求解一个closed form,本质上还是求导太复杂,因此在非线性模型中需要使用基于估计思想的方法进行逐步估计

非线性回归分析参数估计的方法也有多种,主要方法有

1. 非线性最小二乘估计(nonlinear least squares estimator, NLS):模型本身复杂无法一次得到全局最优解,只能通过迭代的方法来逐步进行参数优化
2. 非线性最大似然估计(Nonlinear maximum likelihood estimator, NMLE)

4. 非线性回归参数估计迭代算法介绍

实际上,非线性最小二乘估计和非线性极大似然估计都是非线性优化的问题,虽然策略方法不变,但是因为最小二乘涉及到求导极值方程,这在线性情况是下很容易的,但是到了非线性领域对高阶方程求偏导就变得十分困难,有时候甚至无法完成。这意味着在非线性回归方程中,我们无法通过直接求导得到极值,所以非线性回归中常常使用"逐步逼近"的思想,在不断地迭代中不断逼近最优的模型参数

最速下降法

最速下降法(又称梯度法,或Steepest Descent),是无约束最优化领域中最简单的算法,它属于比较古老提出的一种算法。但是,它的理念思想却对之后提出的非线性回归模型的参数搜索奠定了基础,我们会发现在其他某些算法中,也有最速下降法的“影子”

最速下降法只使用目标函数的一阶导数信息,从“梯度法”这个名字可以看出它的本意是取目标函数值“最快下降”的方向作为搜索方向。于是问题来了:沿什么方向,目标函数 f(x)的值下降最快呢?答案是沿负梯度方向  d =gk (即负一阶导数方向),函数值下降最快。我们通过公式推导来说明一下该结论的原理

将目标函数在点处泰勒展开:

高阶无穷小 o(α) 可忽略,由于我们定义了步长 α>0(即朝某个方向前进的一段距离),同时,只有当 时, f(x)<f(xk) (即函数值是下降的)。所以 dk和gk的方向至少需要是相反的,才能达到下降的目的
同时Cauchy-Schwartz不等式(柯西-许瓦兹不等式)可得:
当且仅当 dk=gk 时,等号成立,所以 dk =gk 时, 最小(<0), f(x) 下降量最大

版权声明:本文来源CSDN,感谢博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/weixin_34356555/article/details/85935703
站方申明:本站部分内容来自社区用户分享,若涉及侵权,请联系站方删除。

  • 发表于 2020-02-25 02:21:23
  • 阅读 ( 1286 )
  • 分类:算法

0 条评论

请先 登录 后评论

官方社群

GO教程

猜你喜欢