如何根据相关矩阵中的平均相关性选择变量?

数据挖掘 Python 特征选择 相关性
2022-02-18 21:34:38

我有一组自变量,我正在使用 Python 中的 Pearson Correlation Coefficient 计算它们之间的相关矩阵。矩阵的一部分如下所示:

数据集相关矩阵

从这个矩阵中,假设我想找出变量 NoOfDoors 和其余变量之间的强相关分量(符号...压缩比)。我采用的过程是我取了该列的平均值(计算为 0.039604),基于此,我只考虑了那些大于 0.039604 的值。

基于此,以下变量被选择为强相关:

(制造、吸气、轴距、长度、宽度、高度、整备质量、发动机类型、缸径、压缩比)

我想问一下,这个选择对吗?如果是,那么有没有一种有效的方法来做到这一点?如果没有,正确的方法是什么?由于我是该领域的新手,因此将不胜感激。谢谢!

2个回答

“强相关”没有通用定义,因此您的问题没有“正确”答案。一种方法是执行显着性检验以确定是否有强有力的证据表明相关性不为零。测试的数学细节在这里,相关的 Scipy API 文档在这里

但是,当您说“强相关”时,“可能非零”可能不是您要寻找的。如果是这种情况,您可能需要首先考虑为什么您对查找强相关变量感兴趣。您是否有兴趣识别预测问题的强相关特征?如果是这样,您最好跳过此练习并开始直接尝试学习算法。您是否有兴趣确定哪些预测变量会导致某个响应变量发生变化?在这种情况下,您可能需要研究某种统计回归模型(可能从线性回归开始),并且在得出因果结论时要非常小心涉及的所有假设。

@StubbornTurtle 的好答案。

要提供更多详细信息,请参阅此答案这谈到了抑制者、调解者、混杂因素和调解者。抑制器与预测器的相关性较弱,但模型中包含的抑制器使模型更强大,因为它有助于预测另一个预测器较弱的目标,或者正如我所学的解释方差。

所有数据集都没有抑制器。但是,仅包含“高度”相关,您可能会丢失这些变量并使您的模型更弱。

其次,如果预测变量使模型“更好”,我们通常想要一些彼此不相关的预测变量,其中更好是由模型试图解决的问题定义的。不相关的预测变量可能会锁定模型中的不同信号和噪声。如果预测变量都是高度相关的,那么它们可能都在解释相同的信号并包含相同的噪声。