如何使用PCA去除数据集中的多重共线性?
多重共线性是指自变量彼此相关的一种情况。当你拟合模型并解释结果时,多重共线性可能会导致问题。数据集的变量应该是相互独立的,以避免出现多重共线性问题。
在本文中,您可以阅读为什么多重共线性是一个问题,以及如何使用主成分分析(PCA)消除数据集中的多重共线性。
为什么多重共线性是一个潜在的问题?
多重共线性高度影响与问题相关的方差,也会影响模型的解释,因为它削弱了自变量的统计显著性。
对于一个数据集,如果一些自变量彼此高度独立,就会导致多重共线性。任何一个特征的微小变化都可能在很大程度上影响模型的性能。换句话说,模型的系数对自变量的微小变化非常敏感。
如何处理数据中的多重共线性?
要处理或去除数据集中的多重共线性,首先需要确认数据集中是否具有多重共线性。有各种各样的技术来发现数据中存在多重共线性,其中一些是:
· 得到非常高的回归系数的标准误差
· 整体模型显著,但系数均不显著
· 在添加预测因子时,系数有很大变化
· 高方差膨胀因子(VIF)和低容错
以上是一些在数据中发现多重共线性的技术或技巧。
在这篇文章中,我们将看到如何使用相关矩阵和主成分分析来发现数据中的多重共线性,并使用主成分分析来去除它。基本思想是对所有的预测器运行一个主成分分析。如果存在多重共线性,它们的比率(条件指数)将会很高。
数据
为了进一步分析,使用的数据集是从Kaggle下载的Diamonds数据集。这个经典数据集包含近54000颗钻石的价格(目标变量)和其他9个自变量。
数据集预处理
数据集有9个独立的特征和' price '是目标类标签。在进行统计相关性分析之前,我们需要对分类变量进行编码,如'cut'、'color'和'clarity'。
相关性分析
要找到数据集中所有变量之间的person相关系数:
data.corr(method='pearson')Method of correlation: * pearson (default) * kendall * spearman
从上面的相关热图,我们可以观察到自变量:' x ', ' y ', ' z ', '克拉'之间高度相关(人系数> 0.9),从而得出数据中存在多重共线性的结论。
我们也可以删除一些高度相关的特征,去除数据中的多重共线性,但这可能会导致信息的丢失,对于高维数据也是不可行的技术。但是可以使用PCA算法来降低数据的维数,从而去除低方差的变量。
使用PCA处理多重共线性
主成分分析(PCA)是数据科学中常用的特征提取技术,它利用矩阵分解将数据降维到更低的空间。
为了使用主成分分析技术从数据集中提取特征,首先我们需要找到当维数下降时解释的方差百分比。
符号, λ:特征值 d:原始数据集的维数 k:新特征空间的维数
从上图,np.cumsum(PCA .explainedvarianceratio_),第一主成分分析获得的数据总方差为0.46,对于前两主成分分析为0.62,前6主成分分析为0.986。
对于捕获的个体方差,第1个PCA捕获的数据方差为4.21,第2个PCA捕获的数据方差为1.41,第3个PCA捕获的数据方差为1.22,最后一个PCA捕获的数据方差为0.0156。
由于总方差的98.6%是由前6个主成分分析本身捕获的,我们只取6个主成分分析的组成部分,并计算一个相关热图来克服多重共线性。
从上面的相关热图可以看出,现在没有一个自变量是不相关的。
我们可以观察到自变量'x','y','z','克拉'之间高度相关(person系数> 0.9),从而得出数据中存在多重共线性的结论。
因此,利用主成分分析对数据进行降维,可以使数据的方差保持98.6%,并消除数据的多重共线性。
本文的所有代码你可以在这里找到 https://colab.research.google.com/drive/1_QnP8Xu-HukCjB3q5UyxPpXRkjmfzNYf?usp=sharing
结论
有许多方法可以从数据集中去除多重共线性。在本文中,我们讨论了PCA降维技术,从数据集中去除多重共线性并保持最大方差。这种技术有一个缺点,即失去了特征的可解释性。