[转]如何正确的选择回归模型?

Pushback Pushback     2022-09-19     738

关键词:

转自CSDN_杨志友  http://blog.csdn.net/yangzhiyouvl/article/details/53955073
原文标题:7 Types of Regression Techniques you should know! 
链接:https://www.analyticsvidhya.com/blog/2015/08/comprehensive-guide-regression/

Introduction

线性回归(Linear regressions)和对率回归(Logistic regressions)是人们学习算法的第一个预测模型。因此它们很常见,还有许多分析人员认为它们是仅有的回归模型,部分分析师认为它们是所有回归模型中最重要的。 
事实上有无数的回归模型都能被使用,每种形式的回归模型都有它独特且重要的应用场景。在这篇文章里我以简单的方式解释最常用的7种回归模型,通过这篇文章,我希望人们对回归模型有一种广泛性的了解,取而代之的是希望能在每个场景合适的使用linear / logistic regression。

Table of Contents

  1. 什么是回归分析?
  2. 为什么使用回归分析?
  3. 有什么类型的回归? 
    • Linear Regression
    • Logistic Regression
    • Polynomial Regression
    • Stepwise Regression
    • Ridge Regression
    • Lasso Regression
    • ElasticNet Regression
  4. 如何正确的选择回归模型?

什么是回归分析?

回归分析是预测模型技术中的一种形式,它探讨的是因变量(target)和独立变量(predictor)之间的关系。这个技术常用于进行预测、时间序列模型和在两变量之间寻找因果效应的关系。譬如,使用回归能最好的研究道路交通事故和司机鲁莽驾驶的关系。

回归分析是建模和分析数据的一类重要的工具。这里,我们使用曲线/直线来拟合这些数据点,某些方法是数据点到曲线/直线的距离偏差最小,在接下来的部分我将说明更多的细节。

技术分享

为什么使用回归分析?

如上所述,回归分析是评估两个或更多变量之间的关系。让我们使用一个简单的例子进行理解:

如我所说,你想基于当前的经济状况去评估公司的销售额的增长,公司最近的数据表明在当前的经济条件下出现2到5倍的增长,利用这个发现,我们能基于当前或过去的信息来预测公司未来的销售情况。

这有使用回归分析的几点好处: 
1.它表明了因变量和独立变量之间的重要关系; 
2.它表明的是多个独立变量对因变量影响的强度。

回归分析还使我们能比较变量在不同程度上影响,如价格变动对促销活动的影响。这样有利于市场研究员/数据分析师/数据科学家在建立模型的时候排除并评估出最好的变量。

我们有多少种回归技术?

有很多的回归技术可用于预测中,大多数的回归由3个指标所衡量(自变量的数目,因变量的类型以及回归线的形状),在后面我们对这3个指标进行更加详细的讨论。

技术分享 
对于有创造性的人,你可以创造新的回归,就需要组合以前没有使用过的参数。在你开始之前,让我们来了解最常用的回归:

1. 线性回归(Linear Regression)

它是广泛为人所知的模型技术之一。线性回归常被选用在线性预测模型中,在这个模型中,因变量是连续的,自变量可以是连续或离散的,回归线的性质是线性的。

线性回归使用最佳拟合直线建立因变量(Y)和一个或多个独立变量(X)之间的关系(也成为回归线)

它是被方程式:Y = a + b*X + e 所表示,这里 a 为截距,b 为斜率和 e 为误差项。这个方程式能基于给定的预测变量来预测目标变量的值。

技术分享

简单的线性回归与多元线性回归的区别在于,多元线性回归有多个(>1)独立变量,而简单线性回归只有1个独立变量。现在,我们如何获得最佳拟合线?

1). 如何获得最佳拟合线(a和b的值)?

这个目标可以容易的由最小二乘法完成,最小二乘法是拟合回归线最常用的方法,它通过最小化每个数据点到线的垂直偏差的平方和来计算观察数据的最佳拟合线。因为偏差是一个平方,当相加时,在正值和负值之间没有抵消。

 

minωXω?y22

 

技术分享 
我们可以使用R平方来评估模型性能。要了解有关这些指标的更多详细信息,您可以阅读:模型性能指标第1部分第2部分

2). 要点: 
* 独立变量和因变量之间必须存在线性关系; 
* 多元回归具有多重共线性,自相关,异方差性; 
* 线性回归对异常值非常敏感。它可以严重影响回归线和最终的预测值; 
* 多重共线性可以增加系数估计值(系数)的方差,并使该估计值对模型中的微小变化非常敏感。结果是系数估计值不稳定; 
* 在多个独立变量的情况下,我们可以采用前向选择,反向消除和逐步方法来选择最重要的自变量。

2. 对率回归(Logistic Regression)

逻辑回归用于发现事件的概率=成功和事件的事件=失败。当因变量是二进制(0/1,True / False,是/否)时,我们应该使用逻辑回归。这里,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函数。在上面的等式中,选择参数用来最大化这些观察样本的似然值,而不是最小化平方误差的和(类似于普通回归)。

技术分享

要点 
* 它被广泛的用于分类问题; 
* 逻辑回归不需要依赖变量和自变量之间的线性关系。它可以处理各种类型的关系,因为它对预测的胜率使用非线性对数(log)变换; 
* 为了避免过拟合和欠拟合,我们应该使用所有的有意义的变量。确保这种做法的一个好方法是使用逐步法来估计逻辑回归; 
* 它需要大量的样本,因为最大似然估计在小样本上比普通最小二乘方更弱; 
* 自变量之间不应该彼此相关,即没有多共性。然而,我们在分析和模型时包含分类变量的交互效应(相互之间有影响); 
* 如果因变量的值是有序的,那么它被称为有序逻辑回归; 
* 如果因变量是多类,则称为多分类Logistic回归。

3. 多元回归

如果自变量的幂大于1,则回归方程是多项式回归方程。下面的方程式表示多项式方程:

 

y=a+b?x2

 

在这种回归技术中,最佳拟合线并不是直线。它是一条拟合数据点的曲线。

技术分享 
要点 
* 虽然可能存在用较高次多项式去拟合较低次多项式的误差,这可能导致过拟合。绘制出数据点与拟合曲线之间的拟合图来确保曲线拟合问题的性质。这里有一个如何绘制的例子可以帮助理解:

技术分享

  • 特别注意曲线向两端,看看这些形状和趋势是否有意义。更高的多项式可以最终在外推上产生更多的结果。

4. 逐步回归

当我们处理多个自变量时常使用这种形式的回归。在这种技术中,独立变量的选择是借助于自动过程完成的,其不用涉及到人类干预。

它的专长是通过观察统计值,如R平方,t统计和AIC度量来辨别重要变量。逐步回归基本上适合回归模型,通过基于指定标准一次一个地添加/删除共变量。下面列出了一些最常用的逐步回归方法:

  • 标准逐步回归做两件事。它根据需要为每个步骤添加和删除预测变量;
  • 向前选择从模型中的最重要的预测变量开始,并为每个步骤添加变量;
  • 向后消除从模型中的所有预测变量开始,并删除每个步骤中的最低有效变量。

该建模技术的目的是利用最小数量的预测变量来最大化预测能力。它是处理更高维度数据集的方法之一。

5. Ridge Regression

Ridge回归是当数据受多重共线性(自相关变量高度相关)时常使用的技术。在多重共线性中,即使最小二乘估计(OLS)是无偏的,它们的方差很大,这偏离了观察值远离真实值。通过对回归估计增加一定程度的偏差,Ridge回归减小了标准误差。

上面,我们看到了线性回归方程,它可以表示为:

 

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.

在线性方程中,预测误差可以分解为两个子分量。第一是由于偏差,第二是由于方差。由于这两个或两个分量中的任一个都可能发生预测误差。在这里,我们将讨论由于方差导致的错误。

Ridge回归通过收缩参数λ(lambda)来解决多重共线性问题。看看下面的方程。

 

=argminβRpy?Xβ22Loss+λβ22Penelty

 

在这个方程中,我们有两个组成部分。第一个是最小二乘项,另一个是β2(β平方)的总和乘以lambda,其中β是系数。这被添加到最小二乘项以便收缩具有非常低的方差参数。

要点 
* 该回归的假设与最小二乘回归相同,除非不假设数据集正态性; 
* 它收缩系数的值,但不会达到零,这表明没有特征选择特征; 
* 这是一个正则化方法,并使用l2正则化。

6. Lasso Regression

与Ridge回归类似,Lasso(最小绝对收缩和选择算子)也惩罚回归系数的绝对大小。此外,它能够减少变化性和提高线性回归模型的准确性。看看下面的方程:

 

β=argminβRpy?Xβ22Loss+λβ1Penelty

 

Lasso回归与Ridge回归的区别在于,它使用的是绝对值惩罚函数而不是平方惩罚函数。这使惩罚(或等价地约束估计的绝对值的和)值导致一些参数估计精确地为零。使用更大的惩罚会让估计进一步的收缩到绝对零。这导致在给定的n个变量中作变量选择。

要点 
* 该回归的假设与最小二乘回归相同,除非不假设正态性; 
* 它将系数收缩为零(正好为零),这有助于特征选择; 
* 这是一个正则化方法,使用l1正则化; 
* 如果一批预测变量是高度相关,则Lasso只挑选其中一个,并将其他缩减为零。

7. ElasticNet Regression

ElasticNet是Lasso和Ridge回归技术的混合模型。它是用L1和L2作为正则化训练的。当有多个相关的特征时,Elastic-net是有用的,Lasso可能随机选择其中一个,Elastic-net很可能选择两个。

 

β^=argminβ(y?Xβ2+λ2β2+λ1β1)

 

在Lasso和Ridge之间折衷的实际优点是它允许Elastic-Net继承一些Ridge的稳定性。

要点 
* 它鼓励在高度相关变量之间的群效应; 
* 对所选变量的数量没有限制; 
* 它可能遭受双倍收缩率。

如何正确的选择回归模型?

当你只知道一两种技术时生活通常很简。我知道一个培训机构告诉他们的学生:如果结果是连续的就应用线性回归。 如果是二元态的就使用逻辑回归!然而,我们可用的选项数量越多,选择正确的选项就越困难。类似的情况发生在回归模型。

在多种类型的回归模型中,重要的是基于独立和因变量的类型、数据的维度和数据的一些其他基本特征来选择最适合的技术。 以下是您应该练习选择正确回归模型的关键因素:

  1. 数据探索是建立预测模型的必要组成部分。它应该是你选择正确的模型之前的第一步,如识别变量的关系和影响;
  2. 为了比较不同模型的拟合程度,我们可以分析不同的指标,如参数的重要性统计、R平方、调整r平方、AIC、BIC和误差项。另一个是Mallow的Cp标准。这本质上是通过将模型与所有可能的子模型(或仔细选择它们)进行比较来检查模型中的可能偏差;
  3. 交叉验证是评估用于预测的模型的最佳方式。这里您将数据集分为两组(训练集和验证集)。观测值和预测值之间的简单均方差给出一个预测精度的指标;
  4. 如果您的数据集有多个混杂变量,您不应选择用自动模型选择的方法,因为您不想同时将它们放在一个模型中;
  5. 这也将取决于你的目标。与高度统计学显着的模型相比,一个相对不强大的模型更容易实现;
  6. 回归正则化方法(Lasso,Ridge和ElasticNet)在具有高维度和多重共线性的数据集变量上效果更好。

结束语

现在,我希望你对回归有一个总体概述。确定使用哪种技术的最佳方法之一是检查变量族,即离散或连续。

在本文中,我讨论了7种类型的回归和每种技术相关的一些关键点。作为这个行业的新人,我建议你学习这些技术,然后在你的模型中实现它们。




































如何在r语言中使用logistic回归模型

...Logistic回归:变量选择方法方法选择允许您指定自变量将如何进入到分析中。通过使用不同的方法,您可以从相同的变量组构造多个回归模型。 参考技术B用logit的命令 查看详情

如何使用线性回归模型进行预测?

】如何使用线性回归模型进行预测?【英文标题】:HowtomakepredictionswithLinearRegressionModel?【发布时间】:2017-11-3018:14:54【问题描述】:我目前正在从事一个线性回归项目,我需要收集数据,将其拟合到模型上,然后根据测试数据... 查看详情

最小角回归lars算法包的用法以及模型参数的选择

...许多其他文章可以参考,这里不过多赘述,这里主要简介如何在R中利用lars算法包求解线性回归问题以及参数的选择方法。以下的的一些用法参照lars包的帮助文件,再加上自己的使用心得。所用的示例数据diabetes是Efron在 查看详情

如何在r语言中使用logistic回归模型

logit=glm(y~x1+x2,data=data,family=binomial(link='logit'))glm表示广义线性回归,data表示y,x1,x2所在的数据集,family中的link用来选择回归类型,logit表示选择logistic回归参考技术A在R语言中使用Logistic回归模型:Logistic模型主要有三大用途... 查看详情

如何使用 scikit 线性回归模型同时求解多个独立的时间序列

】如何使用scikit线性回归模型同时求解多个独立的时间序列【英文标题】:Howtosolveseveralindependenttimeseriesatthesametimeusingscikitlinearregressionmodel【发布时间】:2016-03-2922:57:11【问题描述】:我尝试使用sklearn线性回归模型同时预测多个... 查看详情

交叉验证

...某些候选模型中选择最适合某个学习问题的模型,我们该如何选择?以多元回归模型为例:,应该如何确定k的大小,使得该模型对解决相应的分类问题最为有效?如何在偏倚(bias)和方差(variance)之间寻求最佳的平衡点?更... 查看详情

一文带你用python玩转线性回归模型❤️加利福尼亚房价预测❤️回归模型评估指标介绍(代码片段)

前言这一篇文章,我会详细介绍如何利用Python来实现线性回归以及线性回归的实战模拟,以及回归模型的评估指标的详细介绍,感兴趣的朋友可以看一看。目录前言1线性回归的Scikit-learn实现1.1导入模块后开始下载数... 查看详情

岭回归和lasso回归(转)

回归和分类是机器学习算法所要解决的两个主要问题。分类大家都知道,模型的输出值是离散值,对应着相应的类别,通常的简单分类问题模型输出值是二值的,也就是二分类问题。但是回归就稍微复杂一些,回归模型的输出值... 查看详情

Python Sklearn 逻辑回归模型拟合不正确

】PythonSklearn逻辑回归模型拟合不正确【英文标题】:PythonSklearnLogisticRegressionModelIncorrectFit【发布时间】:2017-11-2809:31:00【问题描述】:对于逻辑回归,我试图从Wikipedialogisticregression页面重现结果。所以,我的代码如下所示:impor... 查看详情

如何在r语言中使用logistic回归模型

Logistic回归在做风险评估时,一般采用二值逻辑斯蒂回归(BinaryLogisticRegression)。以滑坡灾害风险评估为例。1、滑坡发生与否分别用0和1表示(1表示风险发生,0表示风险未发生);2、确定影响滑坡风险的影响因子,这个根据区... 查看详情

如何转成libsvm支持的数据格式并做回归分析

本次实验的数据是来自老师给的2006-2008年的日期,24小时的温度、电力负荷数据,以及2009年的日期,24小时的温度数据,目的是预测2009年每天24小时的电力负荷,实验数据本文不予给出。用libsvm进行预测的步骤大体是:将数据进... 查看详情

机器学习实战精读--------回归

...会导致在后期测试的时候不能够很好地识别数据,即不能正确的分类,模型泛化能 查看详情

scikit-learn的线性回归模型

...自http://blog.csdn.net/jasonding1354/article/details/46340729内容概要如何使用pandas读入数据如何使用seaborn进行数据的可视化scikit-learn的线性回归模型和使用方法线性回归模型的评估测度特征选择的方法 作为有监督学习,分类问题是预测... 查看详情

spss:得到一个多元线性回归模型之后,如何比较预测值和真实值?如何判断模型是不是有预测能力?

1、打开SPSS软件后点击右上角的【打开文件按钮】打开你需要分析的数据文件。2、接下来就是开始做回归分析建立模型,研究其变化趋势,因为回归分析分为线性回归和非线性回归,分析它们的办法是不同的,所以先要把握它们... 查看详情

多变量回归模型成本不降低

...其中。我知道对于简单的线性模型,偏差是y截距,但我如何在这里实现它。 查看详情

如何在 GridSearchCV 中正确选择最佳模型 - sklearn 和 caret 都做错了

】如何在GridSearchCV中正确选择最佳模型-sklearn和caret都做错了【英文标题】:HowtoproperlyselectthebestmodelinGridSearchCV-bothsklearnandcaretdoitwrong【发布时间】:2020-02-2702:08:15【问题描述】:考虑3个数据集train/val/test。SklearnsGridSearchCV默认选... 查看详情

使用逻辑回归进行特征选择

】使用逻辑回归进行特征选择【英文标题】:featureselectionusinglogisticregression【发布时间】:2016-01-2523:51:11【问题描述】:我正在使用逻辑回归执行特征选择(在具有1,930,388行和88个特征的数据集上)。如果我在保留数据上测试模... 查看详情

python对线性模型进行特征选择,不断模型线性模型的aic(代码片段)

...方法进行逐步回归逐步回归是一种贪心算法,它每次迭代选择一个最优的特征加入模型或从模型中删除一个特征,直到最终得到一个最优的子集。有两种逐步回归算法,一种是前向逐步回归(forwardstepwiseregression),另一种是后... 查看详情