农产品进出口,这样的数据应该用什么函数进行局部多项式回归拟合合?

回归/拟合方法总结
&&&&&& 回归分析是建模和分析数据的重要工具。本文解释了回归分析的内涵及其优势,重点总结了应该掌握的线性回归、逻辑回归、多项式回归、逐步回归、岭回归、套索回归、ElasticNet回归等七种最常用的回归技术及其关键要素,最后介绍了选择正确的回归模型的关键因素。
&&&&&&&本文做了极少量修改,如有疑问,请访问原始文章链接。
&&&&&& 原文链接:http://news.csdn.net/article_preview.html?preview=1&reload=1&arcid=2825492
什么是回归分析?
回归分析是一种预测性的建模技术,它研究的是因变量(目标)和自变量(预测器)之间的关系。这种技术通常用于预测分析,时间序列模型以及发现变量之间的因果关系。例如,司机的鲁莽驾驶与道路交通事故数量之间的关系,最好的研究方法就是回归。
回归分析是建模和分析数据的重要工具。在这里,我们使用曲线/线来拟合这些数据点,在这种方式下,从曲线或线到数据点的距离差异最小。我会在接下来的部分详细解释这一点。
我们为什么使用回归分析?
如上所述,回归分析估计了两个或多个变量之间的关系。下面,让我们举一个简单的例子来理解它:
比如说,在当前的经济条件下,你要估计一家公司的销售额增长情况。现在,你有公司最新的数据,这些数据显示出销售额增长大约是经济增长的2.5倍。那么使用回归分析,我们就可以根据当前和过去的信息来预测未来公司的销售情况。
使用回归分析的好处良多。具体如下:
它表明自变量和因变量之间的显著关系;它表明多个自变量对一个因变量的影响强度。
回归分析也允许我们去比较那些衡量不同尺度的变量之间的相互影响,如价格变动与促销活动数量之间联系。这些有利于帮助市场研究人员,数据分析人员以及数据科学家排除并估计出一组最佳的变量,用来构建预测模型。
我们有多少种回归技术?
有各种各样的回归技术用于预测。这些技术主要有三个度量(自变量的个数,因变量的类型以及回归线的形状)。我们将在下面的部分详细讨论它们。
对于那些有创意的人,如果你觉得有必要使用上面这些参数的一个组合,你甚至可以创造出一个没有被使用过的回归模型。但在你开始之前,先了解如下最常用的回归方法:
1.&Linear&Regression线性回归
它是最为人熟知的建模技术之一。线性回归通常是人们在学习预测模型时首选的技术之一。在这种技术中,因变量是连续的,自变量可以是连续的也可以是离散的,回归线的性质是线性的。
线性回归使用最佳的拟合直线(也就是回归线)在因变量(Y)和一个或多个自变量(X)之间建立一种关系。
用一个方程式来表示它,即Y=a+b*X&+&e,其中a表示截距,b表示直线的斜率,e是误差项。这个方程可以根据给定的预测变量(s)来预测目标变量的值。
一元线性回归和多元线性回归的区别在于,多元线性回归有(&1)个自变量,而一元线性回归通常只有1个自变量。现在的问题是“我们如何得到一个最佳的拟合线呢?”。
如何获得最佳拟合线(a和b的值)?
这个问题可以使用最小二乘法轻松地完成。最小二乘法也是用于拟合回归线最常用的方法。对于观测数据,它通过最小化每个数据点到线的垂直偏差平方和来计算最佳拟合线。因为在相加时,偏差先平方,所以正值和负值没有抵消。
我们可以使用R-square指标来评估模型性能。想了解这些指标的详细信息,可以阅读:模型性能指标Part&1,Part&2&.
自变量与因变量之间必须有线性关系多元回归存在多重共线性,自相关性和异方差性。线性回归对异常值非常敏感。它会严重影响回归线,最终影响预测值。多重共线性会增加系数估计值的方差,使得在模型轻微变化下,估计非常敏感。结果就是系数估计值不稳定在多个自变量的情况下,我们可以使用向前选择法,向后剔除法和逐步筛选法来选择最重要的自变量。
2.Logistic&Regression逻辑回归
逻辑回归是用来计算“事件=Success”和“事件=Failure”的概率。当因变量的类型属于二元(1&/&0,真/假,是/否)变量时,我们就应该使用逻辑回归。这里,Y的值从0到1,它可以用下方程表示。
odds= p/ (1-p) = probability of event occurrence / probability of not event occurrence
ln(odds) = ln(p/(1-p))
logit(p) = ln(p/(1-p)) = b0+b1X1+b2X2+b3X3....+bkXk
上述式子中,p表述具有某个特征的概率。你应该会问这样一个问题:“我们为什么要在公式中使用对数log呢?”。
因为在这里我们使用的是的二项分布(因变量),我们需要选择一个对于这个分布最佳的连结函数。它就是Logit函数。在上述方程中,通过观测样本的极大似然估计值来选择参数,而不是最小化平方和误差(如在普通回归使用的)。
它广泛的用于分类问题。逻辑回归不要求自变量和因变量是线性关系。它可以处理各种类型的关系,因为它对预测的相对风险指数OR使用了一个非线性的log转换。为了避免过拟合和欠拟合,我们应该包括所有重要的变量。有一个很好的方法来确保这种情况,就是使用逐步筛选方法来估计逻辑回归。它需要大的样本量,因为在样本数量较少的情况下,极大似然估计的效果比普通的最小二乘法差。自变量不应该相互关联的,即不具有多重共线性。然而,在分析和建模中,我们可以选择包含分类变量相互作用的影响。如果因变量的值是定序变量,则称它为序逻辑回归。如果因变量是多类的话,则称它为多元逻辑回归。
3.&Polynomial&Regression多项式回归
对于一个回归方程,如果自变量的指数大于1,那么它就是多项式回归方程。如下方程所示:
在这种回归技术中,最佳拟合线不是直线。而是一个用于拟合数据点的曲线。
虽然会有一个诱导可以拟合一个高次多项式并得到较低的错误,但这可能会导致过拟合。你需要经常画出关系图来查看拟合情况,并且专注于保证拟合合理,既没有过拟合又没有欠拟合。下面是一个图例,可以帮助理解:
明显地向两端寻找曲线点,看看这些形状和趋势是否有意义。更高次的多项式最后可能产生怪异的推断结果。
4.&Stepwise&Regression逐步回归
在处理多个自变量时,我们可以使用这种形式的回归。在这种技术中,自变量的选择是在一个自动的过程中完成的,其中包括非人为操作。
这一壮举是通过观察统计的值,如R-square,t-stats和AIC指标,来识别重要的变量。逐步回归通过同时添加/删除基于指定标准的协变量来拟合模型。下面列出了一些最常用的逐步回归方法:
标准逐步回归法做两件事情。即增加和删除每个步骤所需的预测。向前选择法从模型中最显著的预测开始,然后为每一步添加变量。向后剔除法与模型的所有预测同时开始,然后在每一步消除最小显着性的变量。
这种建模技术的目的是使用最少的预测变量数来最大化预测能力。这也是处理高维数据集的方法之一。
5.&Ridge&Regression岭回归
岭回归分析是一种用于存在多重共线性(自变量高度相关)数据的技术。在多重共线性情况下,尽管最小二乘法(OLS)对每个变量很公平,但它们的差异很大,使得观测值偏移并远离真实值。岭回归通过给回归估计上增加一个偏差度,来降低标准误差。
上面,我们看到了线性回归方程。还记得吗?它可以表示为:
y=a+&b*x
这个方程也有一个误差项。完整的方程是:
y=a+b*x+e (error term),
[error term is the value needed to correct for a prediction error between the observed and predicted value]=& y=a+y= a+ b1x1+ b2x2+....+e, for multiple independent variables.
在一个线性方程中,预测误差可以分解为2个子分量。一个是偏差,一个是方差。预测错误可能会由这两个分量或者这两个中的任何一个造成。在这里,我们将讨论由方差所造成的有关误差。
岭回归通过收缩参数λ(lambda)解决多重共线性问题。看下面的公式
在这个公式中,有两个组成部分。第一个是最小二乘项,另一个是β2(β-平方)的λ倍,其中β是相关系数。为了收缩参数把它添加到最小二乘项中以得到一个非常低的方差。
除常数项以外,这种回归的假设与最小二乘回归类似;它收缩了相关系数的值,但没有达到零,这表明它没有特征选择功能这是一个正则化方法,并且使用的是L2正则化。
6.&Lasso&Regression套索回归
它类似于岭回归,Lasso&(Least&Absolute&Shrinkage&and&Selection&Operator)也会惩罚回归系数的绝对值大小。此外,它能够减少变化程度并提高线性回归模型的精度。看看下面的公式:
Lasso&回归与Ridge回归有一点不同,它使用的惩罚函数是绝对值,而不是平方。这导致惩罚(或等于约束估计的绝对值之和)值使一些参数估计结果等于零。使用惩罚值越大,进一步估计会使得缩小值趋近于零。这将导致我们要从给定的n个变量中选择变量。
除常数项以外,这种回归的假设与最小二乘回归类似;它收缩系数接近零(等于零),这确实有助于特征选择;这是一个正则化方法,使用的是L1正则化;
·&如果预测的一组变量是高度相关的,Lasso&会选出其中一个变量并且将其它的收缩为零。
7.ElasticNet回归
ElasticNet是Lasso和Ridge回归技术的混合体。它使用L1来训练并且L2优先作为正则化矩阵。当有多个相关的特征时,ElasticNet是很有用的。Lasso&会随机挑选他们其中的一个,而ElasticNet则会选择两个。
Lasso和Ridge之间的实际的优点是,它允许ElasticNet继承循环状态下Ridge的一些稳定性。
在高度相关变量的情况下,它会产生群体效应;选择变量的数目没有限制;它可以承受双重收缩。
除了这7个最常用的回归技术,你也可以看看其他模型,如Bayesian、Ecological和Robust回归。
8.用于多类分类的SoftMax回归
参考链接:http://ufldl.stanford.edu/wiki/index.php/Softmax%E5%9B%9E%E5%BD%92
&&&&&& 我们介绍Softmax回归模型,该模型是logistic回归模型在多分类问题上的推广,在多分类问题中,类标签
可以取两个以上的值。 Softmax回归模型对于诸如MNIST手写数字分类等问题是很有用的,该问题的目的是辨识10个不同的单个数字。Softmax回归是有监督的,不过后面也会介绍它与深度学习/无监督学习方法的结合。(译者注:
MNIST 是一个手写数字识别库,由NYU 的Yann LeCun 等人维护。/exdb/mnist/ )
&&&&& 回想一下在 logistic 回归中,我们的训练集由
个已标记的样本构成:
&&&&&&&&&&&&
&&& 其中输入特征。(我们对符号的约定如下:特征向量
的维度为,其中
对应截距项 。) 由于 logistic 回归是针对二分类问题的,因此类标记。
我们将训练模型参数 ,使其能够最小化代价函数 :
在 softmax回归中,我们解决的是多分类问题(相对于 logistic 回归解决的二分类问题),类标
个不同的值(而不是 2 个)。因此,对于训练集,我们有。(注意此处的类别下标从
1 开始,而不是 0)。例如,在 MNIST 数字识别任务中,我们有 个不同的类别。
对于给定的测试输入 ,我们想用假设函数针对每一个类别j估算出概率值。也就是说,我们想估计
的每一种分类结果出现的概率。因此,我们的假设函数将要输出一个 维的向量(向量元素的和为1)来表示这
个估计的概率值。 具体地说,我们的假设函数 形式如下:
是模型的参数。请注意这一项对概率分布进行归一化,使得所有概率之和为
为了方便起见,我们同样使用符号
来表示全部的模型参数。在实现Softmax回归时,将
用一个 的矩阵来表示会很方便,该矩阵是将
按行罗列起来得到的,如下所示:
现在我们来介绍 softmax 回归算法的代价函数。在下面的公式中, 是示性函数,其取值规则为:
值为真的表达式
值为假的表达式。举例来说,表达式
的值为1 ,的值为 0。我们的代价函数为:
值得注意的是,上述公式是logistic回归代价函数的推广。logistic回归代价函数可以改为:
可以看到,Softmax代价函数与logistic 代价函数在形式上非常类似,只是在Softmax损失函数中对类标记的
个可能值进行了累加。注意在Softmax回归中将
分类为类别 的概率为:
的最小化问题,目前还没有闭式解法。因此,我们使用迭代的优化算法(例如梯度下降法,或
L-BFGS)。经过求导,我们得到梯度公式如下:
让我们来回顾一下符号 && 的含义。
本身是一个向量,它的第
个分量的偏导数。
有了上面的偏导数公式以后,我们就可以将它代入到梯度下降法等算法中,来最小化 。 例如,在梯度下降法的标准实现中,每一次迭代需要进行如下更新:()。
当实现 softmax 回归算法时, 我们通常会使用上述代价函数的一个改进版本。具体来说,就是和权重衰减(weight decay)一起使用。我们接下来介绍使用它的动机和细节。
Softmax回归模型参数化的特点
Softmax 回归有一个不寻常的特点:它有一个“冗余”的参数集。为了便于阐述这一特点,假设我们从参数向量
中减去了向量,这时,每一个
都变成了()。此时假设函数变成了以下的式子:
换句话说,从
完全不影响假设函数的预测结果!这表明前面的 softmax 回归模型中存在冗余的参数。更正式一点来说, Softmax 模型被过度参数化了。对于任意一个用于拟合数据的假设函数,可以求出多组参数值,这些参数得到的是完全相同的假设函数。
进一步而言,如果参数
是代价函数
的极小值点,那么 同样也是它的极小值点,其中
可以为任意向量。因此使 最小化的解不是唯一的。(有趣的是,由于
仍然是一个凸函数,因此梯度下降时不会遇到局部最优解的问题。但是 Hessian 矩阵是奇异的/不可逆的,这会直接导致采用牛顿法优化就遇到数值计算的问题)
时,我们总是可以将替换为(即替换为全零向量),并且这种变换不会影响假设函数。因此我们可以去掉参数向量
(或者其他 中的任意一个)而不影响假设函数的表达能力。实际上,与其优化全部的
个参数 (其中),我们可以令,只优化剩余的
个参数,这样算法依然能够正常工作。
在实际应用中,为了使算法实现更简单清楚,往往保留所有参数 ,而不任意地将某一参数设置为 0。但此时我们需要对代价函数做一个改动:加入权重衰减。权重衰减可以解决 softmax 回归的参数冗余所带来的数值问题。
Softmax回归与Logistic 回归的关系
时,softmax 回归退化为 logistic 回归。这表明 softmax 回归是 logistic 回归的一般形式。具体地说,当
时,softmax 回归的假设函数为:
利用softmax回归参数冗余的特点,我们令 ,并且从两个参数向量中都减去向量,得到:
因此,用 来表示,我们就会发现
softmax 回归器预测其中一个类别的概率为 ,另一个类别概率的为,这与
logistic回归是一致的。
如何获得回归解?
&&& 回归问题是统计学里面最基础的问题。在统计学里面,一般采用最大似然和最小二乘法直接导出解析解。具体可以参考任何一般统计学的教材。其解析解里面有一个矩阵的逆。求逆和伪逆运算有一些快速算法可以利用。所以对于数据量小的回归问题,直接用解析解就可以快速的得到模型的参数。而对于数据挖掘,海量数据导致内存的开销巨大,这时候直接求解析解是不现实的。于是,在机器学习相关的教程里面,对于回归问题,描述的都是迭代算法。基于随机梯度下降的迭代算法的好处是,内存开销小。
如何正确选择回归模型?
当你只知道一个或两个技术时,生活往往很简单。我知道的一个培训机构告诉他们的学生,如果结果是连续的,就使用线性回归。如果是二元的,就使用逻辑回归!然而,在我们的处理中,可选择的越多,选择正确的一个就越难。类似的情况下也发生在回归模型中。
在多类回归模型中,基于自变量和因变量的类型,数据的维数以及数据的其它基本特征的情况下,选择最合适的技术非常重要。以下是你要选择正确的回归模型的关键因素:
数据探索是构建预测模型的必然组成部分。在选择合适的模型时,比如识别变量的关系和影响时,它应该首选的一步。比较适合于不同模型的优点,我们可以分析不同的指标参数,如统计意义的参数,R-square,Adjusted&R-square,AIC,BIC以及误差项,另一个是Mallows'&Cp准则。这个主要是通过将模型与所有可能的子模型进行对比(或谨慎选择他们),检查在你的模型中可能出现的偏差。交叉验证是评估预测模型最好额方法。在这里,将你的数据集分成两份(一份做训练和一份做验证)。使用观测值和预测值之间的一个简单均方差来衡量你的预测精度。如果你的数据集是多个混合变量,那么你就不应该选择自动模型选择方法,因为你应该不想在同一时间把所有变量放在同一个模型中。它也将取决于你的目的。可能会出现这样的情况,一个不太强大的模型与具有高度统计学意义的模型相比,更易于实现。回归正则化方法(Lasso,Ridge和ElasticNet)在高维和数据集变量之间多重共线性情况下运行良好。
原文链接:7 Types of Regression Techniques you should know!(译者/刘帝伟 审校/刘翔宇、朱正贵 责编/周建丁)&
译者简介:&刘帝伟,中南大学软件学院在读研究生,关注机器学习、数据挖掘及生物信息领域。
> 本站内容系网友提交或本网编辑转载,其目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。如涉及作品内容、版权和其它问题,请及时与本网联系,我们将在第一时间删除内容!
逻辑回归优化方法-L-BFGS 逻辑回归的优化方法是一个经典的问题,如果我们把它视为一个最大熵模型,那么我们知道最早的优化方法是IIS,这个方法就不细讲了,因为它速度很慢.后来发现在最优化领域中非常常用的l-BFGS方法对于Logistic Regression的收敛速度优化是不错的.
l-BFGS方法是Quasi-Newton方法中的 ...
转自/archives/6343
在数据膨胀的当今社会里,海量数据中蕴含价值日渐凸显出来.怎样有效的挖掘海量数据中的有效信息已经成为各个领域面临的共同问题.以互联网企业为代表的科技公司根据自身的实际需求,開始大量的应用机器学习.数据挖掘以及人工智能等算法获取海量数据中蕴含的信息,而且已经取得了非常好的效果. ...
工业相机拍摄的图像中,由于摄像质量的限制,图像中的直线经过处理后,会表现出比较严重的锯齿.在这种情况下求取直线的倾角(其实就是直线的斜率),如果是直接选取直线的开始点和结束点来计算,或是用opencv自带的哈夫曼直线方法,都会引起较大的角度偏差,一般会达到好几度.误差这么大,显然达不到工控要求.后来尝试采取直线点集做最小二乘拟合,误差缩小到0.5以下 ...
上机器视觉和模式识别讨论课,我讲EBM(energy-based models),接触到EBLearn,Eblearn是一个开源的深度学习软件包,用C++语言写的.在源代码eblearn_1.2_r2631\core\libidx\src\numerics.cpp文件中发现了用三阶多项式插值拟合的方法,觉得这种计算方法很有工程性味道,且针对特定问题很有用.
理论基础就是最小二乘. regression 文件,读入数据,其中每行的数据以 \t 分割,末尾是\n 或者\r\n, 根据不同操作系统. from numpy import * def loadDataSet(fileNames): fr = open(fileNames); #the last number is label numFeat = len( ...
Matlab优化工具箱简介 1.MATLAB求解优化问题的主要函数
2.优化函数的输入变量 使用优化函数或优化工具箱中其它优化函数时, 输入变量见下表:
3. 优化函数的输出变量下表:
4.控制参数options的设置
Options中常用的几个参数的名称.含义.取值如下: (1)
Display: 显示水平.取值为'off'时,不显示输出 ...
利用CRM挖掘客户价值 美国管理学大师曾根据顾客对于企业的价值,将顾客划分为三类:最有价值顾客.最具增长性顾客与负值顾客.一家企业必须坚守住其最有价值的客户,尽量尽快地将其增长性的客户转化为价值客户,同时尽快抛弃掉负值客户,因为负值客户给企业带来不了任何价值,只会耗用企业资源. 客户价值分析 客户价值指CRM毛利.CRM毛利 = 购买金额 - 产品成本 -
机器学习中的一些方法如决策树,随机森林,SVM,神经网络由于对数据没有分布的假定等普通线性回归模型的一些约束,预测效果也比较不错,交叉验证结果也能被接受.下面以R中lars包包含数据集diabetes为例说明机器学习中的回归方法.一.数据集及交叉验证办法描述
Diabetes数据集包含在R的lars包中,数据分为x,y,x2三个部分,因 ...数值计算课程设计,拟合方法与拟合函数的选取_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
数值计算课程设计,拟合方法与拟合函数的选取
上传于||文档简介
&&数​值​计​算​课​程​设​计​,​拟​合​方​法​与​拟​合​函​数​的​选​取
阅读已结束,如果下载本文需要使用2下载券
想免费下载本文?
下载文档到电脑,查找使用更方便
还剩11页未读,继续阅读
你可能喜欢数据拟合与模型选择_图文_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
评价文档:
数据拟合与模型选择
上传于||暂无简介
大小:1.96MB
登录百度文库,专享文档复制特权,财富值每天免费拿!
你可能喜欢13529人阅读
机器学习(10)
机器学习中的预测问题通常分为2类:回归与分类。简单的说回归就是预测数值,而分类是给数据打上标签归类。本文讲述如何用Python进行基本的数据拟合,以及如何对拟合结果的误差进行分析。本例中使用一个2次函数加上随机的扰动来生成500个点,然后尝试用1、2、100次方的多项式对该数据进行拟合。拟合的目的是使得根据训练数据能够拟合出一个多项式函数,这个函数能够很好的拟合现有数据,并且能对未知的数据进行预测。代码如下:import matplotlib.pyplot as plt
import numpy as np
import scipy as sp
from scipy.stats import norm
from sklearn.pipeline import Pipeline
from sklearn.linear_model import LinearRegression
from sklearn.preprocessing import PolynomialFeatures
from sklearn import linear_model
''' 数据生成 '''
x = np.arange(0, 1, 0.002)
y = norm.rvs(0, size=500, scale=0.1)
y = y + x**2
''' 均方误差根 '''
def rmse(y_test, y):
& & return sp.sqrt(sp.mean((y_test - y) ** 2))
''' 与均值相比的优秀程度,介于[0~1]。0表示不如均值。1表示完美预测.这个版本的实现是参考scikit-learn官网文档& '''
def R2(y_test, y_true):
& & return 1 - ((y_test - y_true)**2).sum() / ((y_true - y_true.mean())**2).sum()
''' 这是Conway&White《机器学习使用案例解析》里的版本 '''
def R22(y_test, y_true):
& & y_mean = np.array(y_true)
& & y_mean[:] = y_mean.mean()
& & return 1 - rmse(y_test, y_true) / rmse(y_mean, y_true)
plt.scatter(x, y, s=5)
degree = [1,2,100]
y_test = []
y_test = np.array(y_test)
for d in degree:
& & clf = Pipeline([('poly', PolynomialFeatures(degree=d)),
& & & & & & & & & & ('linear', LinearRegression(fit_intercept=False))])
& & clf.fit(x[:, np.newaxis], y)
& & y_test = clf.predict(x[:, np.newaxis])
& & print(clf.named_steps['linear'].coef_)
& & print('rmse=%.2f, R2=%.2f, R22=%.2f, clf.score=%.2f' %
& & & (rmse(y_test, y),
& & & &R2(y_test, y),
& & & &R22(y_test, y),
& & & &clf.score(x[:, np.newaxis], y))) & &
& & plt.plot(x, y_test, linewidth=2)
plt.grid()
plt.legend(['1','2','100'], loc='upper left')
plt.show()
该程序运行的显示结果如下:[-0..]rmse=0.13, R2=0.82, R22=0.58, clf.score=0.82[ 0...]rmse=0.11, R2=0.88, R22=0.66, clf.score=0.88[ &6. &-1. & 6. &-1.......-9. &-9. &-9. &-1.-1. &-9. &-9. &-9.& -1.]rmse=0.10, R2=0.89, R22=0.67, clf.score=0.89显示出的coef_就是多项式参数。如1次拟合的结果为y = 0.x -0.&这里我们要注意这几点:1、误差分析。做回归分析,常用的误差主要有均方误差根(RMSE)和R-平方(R2)。RMSE是预测值与真实值的误差平方根的均值。这种度量方法很流行(Netflix机器学习比赛的评价方法),是一种定量的权衡方法。R2方法是将预测值跟只使用均值的情况下相比,看能好多少。其区间通常在(0,1)之间。0表示还不如什么都不预测,直接取均值的情况,而1表示所有预测跟真实结果完美匹配的情况。R2的计算方法,不同的文献稍微有不同。如本文中函数R2是依据scikit-learn官网文档实现的,跟clf.score函数结果一致。而R22函数的实现来自Conway的著作《机器学习使用案例解析》,不同在于他用的是2个RMSE的比值来计算R2。我们看到多项式次数为1的时候,虽然拟合的不太好,R2也能达到0.82。2次多项式提高到了0.88。而次数提高到100次,R2也只提高到了0.89。2、过拟合。使用100次方多项式做拟合,效果确实是高了一些,然而该模型的据测能力却极其差劲。而且注意看多项式系数,出现了大量的大数值,甚至达到10的12次方。这里我们修改代码,将500个样本中的最后2个从训练集中移除。然而在测试中却仍然测试所有500个样本。clf.fit(x[:498, np.newaxis], y[:498])这样修改后的多项式拟合结果如下:[-0..0052037 ]rmse=0.12, R2=0.85, R22=0.61, clf.score=0.85[-0...]rmse=0.10, R2=0.90, R22=0.69, clf.score=0.90...rmse=0.21, R2=0.57, R22=0.34, clf.score=0.57仅仅只是缺少了最后2个训练样本,红线(100次方多项式拟合结果)的预测发生了剧烈的偏差,R2也急剧下降到0.57。而反观1,2次多项式的拟合结果,R2反而略微上升了。这说明高次多项式过度拟合了训练数据,包括其中大量的噪音,导致其完全丧失了对数据趋势的预测能力。前面也看到,100次多项式拟合出的系数数值无比巨大。人们自然想到通过在拟合过程中限制这些系数数值的大小来避免生成这种畸形的拟合函数。其基本原理是将拟合多项式的所有系数绝对值之和(L1正则化)或者平方和(L2正则化)加入到惩罚模型中,并指定一个惩罚力度因子w,来避免产生这种畸形系数。这样的思想应用在了岭(Ridge)回归(使用L2正则化)、Lasso法(使用L1正则化)、弹性网(Elastic net,使用L1+L2正则化)等方法中,都能有效避免过拟合。更多原理可以参考相关资料。下面以岭回归为例看看100次多项式的拟合是否有效。将代码修改如下:clf = Pipeline([('poly', PolynomialFeatures(degree=d)),& & & & & & & & & & ('linear', linear_model.Ridge ())])clf.fit(x[:400, np.newaxis], y[:400])结果如下:[ 0. & & & & &0.]rmse=0.15, R2=0.78, R22=0.53, clf.score=0.78[ 0. & & & & &0..]rmse=0.11, R2=0.87, R22=0.64, clf.score=0.87[ &0. & 2. & 3. & 2.& &1. & 1. & 7. & 4.& &......& &3. & 2. & 2. & 1.& &1.]rmse=0.10, R2=0.90, R22=0.68, clf.score=0.90可以看到,100次多项式的系数参数变得很小。大部分都接近于0.另外值得注意的是,使用岭回归之类的惩罚模型后,1次和2次多项式回归的R2值可能会稍微低于基本线性回归。然而这样的模型,即使使用100次多项式,在训练400个样本,预测500个样本的情况下不仅有更小的R2误差,而且还具备优秀的预测能力。
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:302455次
积分:3532
积分:3532
排名:第5888名
原创:46篇
转载:15篇
评论:292条
(1)(1)(1)(1)(10)(1)(1)(1)(1)(1)(1)(2)(3)(1)(1)(1)(1)(3)(1)(1)(1)(2)(2)(1)(1)(1)(2)(1)(3)(3)(2)(1)(5)(1)}

我要回帖

更多关于 stata拟合回归模型 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信