哪些变量对预测另一个变量最重要?

数据挖掘 Python 预测建模 主成分分析
2021-09-26 04:36:05

我有一个数据集,需要从 9 个变量中进行预测,哪些变量对预测 10 号最重要。

我第一次尝试使用selectKBestfrom 的方法,sklearn.feature_selection看起来 4、5、6 和 8 是最好的。

然后我尝试使用pearsonr从 1 到 9 和数字 10 的每个变量之间的线性相关性来查看,我得到 2、4、5、8 是最相关的。

然而,当我用PCAsklearn.decomposition和计算pca.explained_variance_我得到这些值[2.13128046e + 01 3.44315766e-01 3.26052258e-01 2.67148345e-01 1.85871921e-01 1.55241540e-01 1.31994073e-01 9.34982387e-02 1.03297667e-02 ]

第一个变量比其他所有变量高得多,这不是问题吗?这是什么意思?

2个回答

让我们使用以下符号:(x1,...x9)是您尝试预测的前 9 个变量y,你的第十个变量。

我将尝试解决看起来像 PCA 的误解,然后给你一些方法来预测哪些变量xi最重要的是预测y

主成分分析

您从 PCA 获得的返回功能不是原始功能!

PCA 转换(x1,...,x9)进入(x1,...,x9)其中每个xi是一个特定的组合(X1,...,X9)这样对于任何一世,一世',X一世X一世'是线性不相关的(即正交的)。此外,这样做使得每个X一世解释了训练数据集方差的某一部分事实上,大多数实现排序X1',...,X9'这样第一个是解释方差最多的那个,然后是第二个,...

因此,您最终拥有了第一个变量X1'解释了很多你的预测是的. 但是这个X一世'是一个特殊的组合(X1,...,X9).

获取特征重要性

至于断言哪个变量X一世解释是的最好的,一个人可能会使用不同的方法。顺便提一下,特征重要性不是绝对的;它依赖于你用来解决这个问题的技术(或估计器)。这是一个非详尽的可能性列表:

  • 线性相关是一个好的开始
  • RandomForestClassifier(或RandomForestRegressor取决于是的) 的sklearn.ensemble,您可以使用feature_importances_方法来获取在树节点处使用最多的一个。注意:它适用于任何决策树估计器。
  • 使用标准线性或逻辑回归(与 Lasso、Ridge 等相同),您可以检查哪个变量具有更高的系数(不要忘记标准化您的输入变量 (X1,...,X9) )

我不知道它是如何使用神经网络完成的,但如果有人有提示会很高兴。

PCA 的输出不是每个属性的值。这是你得到的特征值。因此,第一个值是方差最大的方向,或者如果您愿意,也可以是第一个分量。该组件是属性的组合。

不需要重复已经写过的内容,检查这个问题