matlab消除多重共线性,如何使用PCA去除数据集中的多重共线性

多重共线性是指自变量彼此相关的一种情况。当你拟合模型并解释结果时,多重共线性可能会导致问题。数据集的变量应该是相互独立的,以避免出现多重共线性问题。

在本文中,您可以阅读为什么多重共线性是一个问题,以及如何使用主成分分析(PCA)消除数据集中的多重共线性。

为什么多重共线性是一个潜在的问题?

多重共线性高度影响与问题相关的方差,也会影响模型的解释,因为它削弱了自变量的统计显著性。

对于一个数据集,如果一些自变量彼此高度独立,就会导致多重共线性。任何一个特征的微小变化都可能在很大程度上影响模型的性能。换句话说,模型的系数对自变量的微小变化非常敏感。

如何处理数据中的多重共线性?

要处理或去除数据集中的多重共线性,首先需要确认数据集中是否具有多重共线性。有各种各样的技术来发现数据中存在多重共线性,其中一些是:

得到非常高的回归系数的标准误差

整体模型显著,但系数均不显著

在添加预测因子时,系数有很大变化

高方差膨胀因子(VIF)和低容错

以上是一些在数据中发现多重共线性的技术或技巧。

在这篇文章中,我们将看到如何使用相关矩阵和主成分分析来发现数据中的多重共线性,并使用主成分分析来去除它。基本思想是对所有的预测器运行一个主成分分析。如果存在多重共线性,它们的比率(条件指数)将会很高。

数据

为了进一步分析,使用的数据集是从Kaggle下载的Diamonds数据集。这个经典数据集包含近54000颗钻石的价格(目标变量)和其他9个自变量。

数据集预处理

数据集有9个独立的特征和' price '是目标类标签。在进行统计相关性分析之前,我们需要对分类变量进行编码,如“cut”、“color”和“clarity”。

12d0e52c2b84478dadf4c5610db7e4e5.png

相关性分析

要找到数据集中所有变量之间的person相关系数:

data.corr(method='pearson')Method of correlation:

* pearson (default)

* kendall

* spearman

6cd16558dce9d43eff02213311a5715f.png

从上面的相关热图,我们可以观察到自变量:' x ', ' y ', ' z ', '克拉'之间高度相关(人系数> 0.9),从而得出数据中存在多重共线性的结论。

我们也可以删除一些高度相关的特征,去除数据中的多重共线性,但这可能会导致信息的丢失,对于高维数据也是不可行的技术。但是可以使用PCA算法来降低数据的维数,从而去除低方差的变量。

使用PCA处理多重共线性

主成分分析(PCA)是数据科学中常用的特征提取技术,它利用矩阵分解将数据降维到更低的空间。

为了使用主成分分析技术从数据集中提取特征,首先我们需要找到当维数下降时解释的方差百分比。

c25524a52c4e49529c02935f5361bf51.png

符号,λ:特征值d:原始数据集的维数k:新特征空间的维数

b442d1c9d6a90e9f3c7f50748f110673.png

f8704d608f3e0651c297486803125b54.png

从上图,np.cumsum(PCA .explained_variance_ratio_),第一主成分分析获得的数据总方差为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降维技术,从数据集中去除多重共线性并保持最大方差。这种技术有一个缺点,即失去了特征的可解释性。

作者:Satyam Kumar

消除多重共线性,可以采取以下几种方法: 1. 特征选择:通过选择对目标变量具有最大影响的变量,并排除与其他自变量高度相关的变量,从而减少共线性。可以使用相关系数矩阵或VIF值来评估变量之间的相关性,然后根据阈值进行选择。 2. 主成分分析(PCA):将原始自变量转换为一组互不相关的主成分,这些主成分是原始自变量的线性组合。通过保留解释大部分方差的主成分,可以减少共线性的影响。 3. 岭回归(Ridge Regression):通过在回归模型添加一个正则化项,限制回归系数的大小,以减少共线性对回归系数估计的影响。 4. Lasso回归:类似于岭回归,但Lasso回归可以使某些回归系数变为零,从而实现特征选择和共线性消除的效果。 5. 变量转换:通过对自变量进行数学变换,如对数转换、平方根转换、多项式扩展等,可以减少共线性的影响。 需要注意的是,选择适当的方法应根据具体问题和数据情况来决定。不同的方法可能适用于不同的情况。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [MATLAB实现多重共线性诊断及处理](https://blog.csdn.net/qq_44246618/article/details/129346947)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* [多重共线性检验的小程序MATLAB](https://download.csdn.net/download/weixin_42132177/85506453)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值