Regression Techniques That You Should Know gaunthan Posted on Nov 27 2017 ? Machine Learning ? ? Regression Analysis ? ## Regression Analysis 回归分析是一种预测性的建模技术,它研究的是因变量(目标)和自变量(预测器)之间的关系。这种技术通常用于预测分析,时间序列模型以及发现变量之间的因果关系。例如研究房屋的面积与其售价之间的关系,最好的方法便是回归分析。 回归分析是建模和分析数据的重要工具,我们会使用曲线/直线拟合数据点。在这种方式下,从曲线/直线到数据点的距离差异最小。 使用回归分析的好处良多。具体如下: - 它表明自变量和因变量之间的**显著关系**; - 它表明多个自变量对一个因变量的**影响强度**。 ## Regression Techniques 有各种各样的回归技术用于预测。这些技术主要有三个度量: - 自变量的个数 - 因变量的类型 - 回归线的形状  ### Linear Regression **线性回归**(Linear Regression)通常是人们学习预测模型时的首选技术之一。在这种技术中,因变量是**连续的**,自变量可以是连续的也可以是离散的,回归线的性质是**线性的**。 线性回归使用最佳的拟合直线(也就是回归线)在因变量(Y)和一个或多个自变量(X)之间建立一种关系。  线性回归的预测模型如下定义: $$h_\theta(x) = \theta^T x, 其中 \theta = \begin{pmatrix}\theta_0 \\ \theta_1 \\ \theta_2 \\ \vdots \\ \theta_n \end{pmatrix}, x = \begin{pmatrix} x_0 \\ x_1 \\ x_2 \\ \vdots \\ x_n \end{pmatrix},x_0 = 1$$ 最佳拟合线可以使用**最小二乘法**(Ordinary least squares)求得。[^least_square] $$ \begin{matrix} arg \ min \\ \theta \end{matrix} ||X \theta - y||^2$$ [^least_square]: [最小二乘法. (2017, October 10). Retrieved from 维基百科, 自由的百科全书: https://zh.wikipedia.org/w/index.php?title=%E6%9C%80%E5%B0%8F%E4%BA%8C%E4%B9%98%E6%B3%95&oldid=46515039](https://zh.wikipedia.org/wiki/%E6%9C%80%E5%B0%8F%E4%BA%8C%E4%B9%98%E6%B3%95) 要点: - 自变量与因变量之间必须有线性关系 - 多元回归存在多重共线性,自相关性和异方差性。 - 线性回归对异常值非常敏感。它会严重影响回归线,最终影响预测值。 - 多重共线性会增加系数估计值的方差,使得在模型轻微变化下,估计非常敏感。结果就是系数估计值不稳定。 - 在多个自变量的情况下,我们可以使用向前选择法,向后剔除法和逐步筛选法来选择最重要的自变量。 ### Logistic Regreesion **逻辑回归**(Logistic Regression)是用来计算 “事件 = Success” 和 “事件 = Failure” 的概率。当因变量的类型属于二元(1/0,真/假,是/否)变量时,我们就应该使用逻辑回归。这里,因变量的值从0到1,它可以用以下方程表示: $$h_\theta(x) = {1 \over 1 + e^{-\theta^T x}} (*)$$ 对上式取对数,有 $$ln{h_\theta(x) \over 1 - h_\theta(x) } = \theta^T x$$ 如果将$h_\theta(x) $视为样本$x$作为正例的可能性,则$1-h_\theta(x) $是其反例可能性,两者的比值称为**几率**(odds),反映了$x$作为正例的相对可能性。对几率取对数则得到**对数几率**(log odds,亦称logit)。 可以看出,式$(*)$实际上是在用线性回归模型的预测结果去逼近真实标记的对数几率,因此,其对应的模型称为**对数几率回归**(logistic regression,常称为逻辑回归)。 逻辑回归通过观测样本的**极大似然估计**[^maximum_livelihood]值来选择参数,而不是最小化平方和误差(如在普通回归使用的): $$ \begin{matrix} arg \ max \\ \theta \end{matrix} \ell(\theta) = ln \prod_{i=1}^m p(y^{(i)}|x^{(i)};\theta) = \sum_{i=1}^m ln\ p(y^{(i)}|x^{(i)};\theta) $$ $$ p(y^{(i)}|x^{(i)};\theta) = y^{(i)} p(y=1|x;\theta) + (1-y^{(i)}) p(y=0|x;\theta) $$ 因此,最大化上式等价于最小化下式 $$ \begin{matrix} arg \ min \\ \theta \end{matrix} \ell(\theta) = \sum_{i=1}^m [-y^{(i)} ln(h_\theta(x^{(i)})) - (1-y^{(i)}) ln(1- h_\theta(x^{(i)}))] $$ [^maximum_livelihood]: [最大似然估计. (2018, January 28). Retrieved from 维基百科, 自由的百科全书: https://zh.wikipedia.org/w/index.php?title=%E6%9C%80%E5%A4%A7%E4%BC%BC%E7%84%B6%E4%BC%B0%E8%AE%A1&oldid=48050047](https://zh.wikipedia.org/wiki/%E6%9C%80%E5%A4%A7%E4%BC%BC%E7%84%B6%E4%BC%B0%E8%AE%A1) 要点: - 广泛用于分类问题。 - 逻辑回归不要求自变量和因变量是线性关系。它可以处理各种类型的关系,因为它对预测的相对风险指数使用了一个非线性的log转换。 - 为了避免过拟合和欠拟合,应该包括所有重要的变量。有一个很好的方法来确保这种情况,就是使用逐步筛选方法来估计逻辑回归。 - 需要大的样本量,因为在样本数量较少的情况下,极大似然估计的效果比普通的最小二乘法差。 - 自变量不应该相互关联,即不具有多重共线性。然而,在分析和建模中,我们可以选择包含分类变量相互作用的因素。 - 如果因变量的值是定序变量,则称它为**序逻辑回归**。 - 如果因变量是多类的话,则称它为**多元逻辑回归**。 ### Polynomial Regression 对于一个回归方程,如果自变量的指数大于1,那么它就是**多项式回归方程**(Polynomial Regression)。在这种回归技术中,最佳拟合线不是直线,而是一个用于拟合数据点的曲线。  重点: - 虽然可以拟合一个高次多项式并得到较低的错误,但这可能会导致过拟合。需要经常画出关系图来查看拟合情况,并且专注于保证拟合合理,既没有过拟合又没有欠拟合。  - 明显地向两端寻找曲线点,看看这些形状和趋势是否有意义。更高次的多项式最后可能产生怪异的推断结果。 ### Stepwise Regression 在处理多个自变量时,我们可以使用**逐步回归**(Stepwise Regression)。在这种技术中,自变量的选择是在一个自动的过程中完成的,其中包括非人为操作。 这一壮举是通过观察统计的值,如 R-square,t-stats 和 AIC 指标,来识别重要的变量。逐步回归通过同时添加 / 删除基于指定标准的协变量来拟合模型。下面列出了一些最常用的逐步回归方法: - 标准逐步回归法做两件事情。即增加和删除每个步骤所需的预测。 - 向前选择法从模型中最显著的预测开始,然后为每一步添加变量。 - 向后剔除法与模型的所有预测同时开始,然后在每一步消除最小显着性的变量。 这种建模技术的目的是使用最少的预测变量数来最大化预测能力。这也是处理高维数据集的方法之一。 ### Ridge Regression **岭回归**(Ridge regression) 是一种专用于共线性数据分析的有偏估计回归方法,实质上是一种改良的最小二乘估计法,通过放弃最小二乘法的无偏性,以损失部分信息、降低精度为代价获得回归系数更为符合实际、更可靠的回归方法,对病态数据的拟合要强于最小二乘法。 岭回归又称脊回归、吉洪诺夫正则化(Tikhonov regularization),是对**不适定问题**(ill-posed problem) 进行回归分析时最经常使用的一种正则化方法。[^well-posed] [^well-posed]: [适定性问题. (2016, April 19). Retrieved from 维基百科, 自由的百科全书: https://zh.wikipedia.org/w/index.php?title=%E9%81%A9%E5%AE%9A%E6%80%A7%E5%95%8F%E9%A1%8C&oldid=39830289](https://zh.wikipedia.org/wiki/%E9%81%A9%E5%AE%9A%E6%80%A7%E5%95%8F%E9%A1%8C) 对于某些矩阵,矩阵中某个元素的一个很小的变动,会引起最后计算结果误差很大,这种矩阵称为**病态矩阵**。有些时候不正确的计算方法也会使一个正常的矩阵在运算中表现出病态。 回归分析中常用的最小二乘法是一种无偏估计。对于一个适定问题,$X$通常是列满秩的。[^rank] 当$X$不是列满秩时,或者某些列之间的线性相关性比较大时,$X^TX$的行列式接近于0,即$X^TX$接近于奇异,上述问题变为一个不适定问题,此时,计算$(X^TX)^{-1}$时误差会很大,传统的最小二乘法缺乏稳定性与可靠性。 为了解决上述问题,我们需要将不适定问题转化为适定问题——为上述损失函数加上一个正则化项: $$ \begin{matrix} arg \ min \\ \theta \end{matrix} ||X \theta - y||^2 + \lambda||\theta||^2$$ 通常岭回归方程的R-square会稍低于普通回归分析,但回归系数的显著性往往明显高于普通回归,在存在共线性问题和病态数据偏多的研究中有较大的实用价值。 [^rank]: [秩 (线性代数). (2017, November 22). Retrieved from 维基百科, 自由的百科全书: https://zh.wikipedia.org/w/index.php?title=%E7%A7%A9_(%E7%BA%BF%E6%80%A7%E4%BB%A3%E6%95%B0)&oldid=47077395](https://zh.wikipedia.org/wiki/%E7%A7%A9_(%E7%BA%BF%E6%80%A7%E4%BB%A3%E6%95%B0)) 要点: - 除常数项以外,这种回归的假设与最小二乘回归类似; - 它收缩了相关系数的值,但没有达到零,这表明它没有特征选择功能 - 这是一个正则化方法,并且使用的是L2正则化。 ### LASSO Regression 类似于岭回归,LASSO(Least Absolute Shrinkage and Selection Operator)回归也会惩罚回归系数的绝对值大小。此外,它能够减少变化程度并提高线性回归模型的精度。 $$ \begin{matrix} arg \ min \\ \theta \end{matrix} ||X \theta - y||^2 + \lambda||\theta||_1$$ 要点: - 除常数项以外,这种回归的假设与最小二乘回归类似; - 它收缩回归系数,使其接近零(等于零),而这有助于特征选择; - 这是一个正则化方法,使用的是L1正则化; - 如果预测的一组变量是高度相关的,LASSO会选出其中一个变量并且将其它的收缩为零。 几种常见向量范数的定义如下: - $ L1 = ||x||_1 = \sum_{i=1}^N|x_i|$,即向量元素绝对值之和。Matlab调用函数 `norm(x, 1)`。 - $ L2 = ||x||_2 = \sqrt{\sum_{i=1}^Nx_i^2} $,Euclid范数(欧几里得范数,常用计算向量长度)。常省略下标2,即$||x|| = ||x||_2$。Matlab调用函数`norm(x, 2)`。 ### ElasticNet Regression ElasticNet是LASSO和Ridge回归技术的混合体。它使用L1来训练并且 L2 优先作为正则化矩阵。当有多个相关的特征时,ElasticNet是很有用的。LASSO会随机挑选他们其中的一个将其它的收缩为零,而ElasticNet则会选择两个。 $$ \begin{matrix} arg \ min \\ \theta \end{matrix} ||X \theta - y||^2 + \lambda_2||\theta||^2 + \lambda_1||\theta||_1$$ 要点: - 在高度相关变量的情况下,它会产生群体效应。 - 选择变量的数目没有限制。 - 它可以承受双重收缩。 ## References - [你应该掌握的七种回归技术](http://www.csdn.net/article/2015-08-19/2825492) - [百度百科——岭回归](https://baike.baidu.com/item/%E5%B2%AD%E5%9B%9E%E5%BD%92/554917) - [0 范数、1 范数、2 范数有什么区别? - 知乎](https://www.zhihu.com/question/20473040) - [机器学习中的范数规则化之(一)L0、L1 与 L2 范数 ](http://blog.csdn.net/zouxy09/article/details/24971995) 赏 Wechat Pay Alipay Linux 为 Nvidia 显卡安装闭源驱动 Supervised Learning: Linear Regression