python生态系统中的线性回归

2019-10-06 20:24:27 浏览数 (1)

作者 | Rihad Variawa

来源 | Medium

编辑 | 代码医生团队

需求最大的受监督机器学习算法之一是线性回归。线性回归扎根于统计领域,因此必须检查模型的拟合优度。

线性回归是预测定量响应的简单实用工具。回归的总体思路是检查两件事。首先,它检查一组独立变量(X)是否能很好地预测结果变量(Y)。其次,它决定哪些变量尤其是结果变量的重要预测因子,以及它们通过beta的大小和符号表示的方式估计结果变量的影响。这些线性回归估计用于解释一个因变量之间的关系。在数学上,线性回归估计线性回归函数,定义为:

y = c b * x b

其中y =估计因变量得分,c =常数,b =回归系数,x =自变量得分。

回归技术有多种形式-线性,非线性,有毒,基于树,但是其核心思想在整个频谱上仍然几乎相似,并且可以应用于各种数据驱动的分析问题,例如金融,医疗保健,服务,线性回归是最基础的技术,它根植于经过时间考验的统计学习和推理理论,并为现代数据科学管道中使用的所有基于回归的算法提供了支持。

但是,线性回归模型的成功还取决于一些基本假设:它试图建模的基础数据的性质。

通过验证是否合理地满足了这些假设,检查线性回归模型的质量至关重要(通常使用可视化分析方法,这些方法需要进行解释才能用于检查这些假设)。

问题在于,检查模型的质量通常是数据科学流程中优先级较低的方面,在该流程中,其他优先级占主导地位-预测,扩展,部署和模型调整。

经常使用statsmodels库通过运行拟合优度测试来检查模型。像这样在基于Python的数据科学学习中很常见:

通常,关于正则化,偏差/方差折衷或可伸缩性(学习和复杂度曲线)图有很多讨论。但是,围绕以下图解和列表是否有足够的讨论?

  • 残差与预测变量图
  • 拟合与残差图
  • 归一化残差的直方图
  • QQ归一化残差图
  • 残差的Shapiro-Wilk正态检验
  • 库克残差距离图
  • 预测特征的方差膨胀因子(VIF)

Scikit-learn的问题

它可以安全地假定,大多数统计人员出身的数据科学家运行拟合优度拟合检验它们的回归模型规律。

但是,许多新手数据科学家在很大程度上依赖于以ML为中心的软件包(例如Scikit-learn)来进行数据驱动的建模,尽管Scikit-learn是一个了不起的库,并且实际上是机器学习和预测任务的灵丹妙药,但它不支持简单快速的评估基于标准统计测试的模型质量

因此,至关重要的是,一个好的数据科学管道,除了使用像Scikit-learn这样的以ML为重点的库之外,还必须包括一些标准化的代码集,以使用统计测试来评估模型的质量。

这篇文章试图显示一组多元线性回归问题的标准评估。将使用statsmodels库进行回归建模和统计测试。

线性回归假设的简要概述

对于多元线性回归,从统计推断角度来看,判断多重共线性(相关变量)也很关键。该假设假设预测变量之间的线性相关性很小或没有。

由于对估计的模型参数有不成比例的影响,离群值也可能是影响模型质量的问题。

这是视觉回顾:

可以检查哪些地块?因此,错误术语非常重要。

但是有一个坏消息。无论我们拥有多少数据,都永远无法知道真正的错误。只能估计和推断关于从中生成数据的分布。

因此,真实误差的代表是残差,它们只是观测值与拟合值之间的差。

底线-需要绘制残差,检查其随机性质,方差和分布,以评估模型质量。这是线性模型的拟合优度估计所需的视觉分析。

除此之外,可以从相关矩阵和热图检查多重共线性,并且可以通过所谓的库克距离图检查数据中的异常值(残差)。

回归模型质量评估

正在使用UCI ML门户网站的具体抗压强度预测问题。混凝土的抗压强度是年龄和成分的高度复杂的功能。可以根据这些参数的测量值预测强度吗?可以在Github上查看此文章的代码库。

https://archive.ics.uci.edu/ml/datasets/Concrete Compressive Strength

https://github.com/2series/Machine-Learning-With-Python/blob/master/Regression/Regression-Goodness of fit.ipynb

用于检查线性的自变量

散点图可以通过直观检查线性假设来简单地检查散点图。

成对散点图和用于检查多重共线性的相关热图

可以使用seaborn库中的pairplot函数绘制所有组合的成对散点图。

使用Pandas,可以轻松地计算相关矩阵并将其传递到statsmodels的特殊绘图函数中,从而将相关关系可视化为热图。

使用statsmodel.ols()函数进行

模型拟合主要模型拟合使用statsmodels.OLS方法完成。这是一个线性模型拟合实用程序,感觉非常类似于R中强大的“ lm”函数。最重要的是,它接受R样式的公式来构造完整或部分模型(即,包含所有或一些自变量)。

在大数据时代,为什么要费心创建局部模型而不将所有数据都放入其中?那是因为混杂或隐蔽的偏见可能存在于数据中,只有通过控制某些因素才能解决。

简而言之,通过该模型拟合的模型已经提供了有关该模型的丰富统计信息,例如与所有自变量,R平方和调整后的R平方,AIC和BIC等相对应的t统计量和p值。

残差与自变量的关系图

接下来,可以对残差与每个自变量的关系作图,以寻找独立性假设。如果残差在零个x轴周围均匀地随机分布并且没有形成特定的簇,则该假设成立。在这个特定问题中,观察到一些簇。

拟合与残差作图以检查均方差

当绘制拟合响应值(根据模型)与残差作图时,清楚地观察到,残差的方差随响应变量的大小而增加。因此,该问题不考虑均方差,可能需要某种变量转换来提高模型质量。

标准化残差的直方图和QQ图

要检查数据生成过程的正态性假设,可以简单地绘制标准化残差的直方图和QQ图。

此外,可以对残差进行Shapiro-Wilk检验,以检查正态性。

使用库克距离图进行离群值检测库克

距离实质上是测量删除给定观测值的效果。需要仔细检查库克距离较远的点是否可能成为异常值。可以使用来自statsmodels的特殊离群值影响类来绘制库克距离。

方差影响因子— VIF

此数据集的OLS模型摘要显示了多重共线性警告。但是,如何检查是什么原因引起的呢?

可以计算每个独立变量的方差影响因子。它是具有多个项的模型的方差除以仅具有一个项的模型的方差的比率。同样,利用statsmodels 中的特殊异常值影响类。

其他残差诊断

Statsmodels具有各种各样的其他诊断测试,用于检查模型质量。随时查看以下资源:

  • 残留诊断测试

https://www.statsmodels.org/stable/stats.html#module-statsmodels.stats.stattools

  • 拟合优度测试

https://www.statsmodels.org/stable/stats.html#goodness-of-fit-tests-and-measures

结论

在本文中,介绍了如何为线性回归中的模型质量评估添加必要的视觉分析 -各种残差图,正态性检验和多重共线性检查。

目前,scikit-learn还没有用于模型质量评估的详细统计测试或绘图功能,Yellowbrick是一个很有前途的Python库,可以在scikit-learn对象上添加直观的可视化功能。希望在不久的将来,可以将统计检验直接添加到scikit-learn ML估计量中。

0 人点赞