随机森林特征重要性与相关矩阵

时间:2020-04-05 01:58:35

标签: python machine-learning scikit-learn

我想看看变量之间的相关性。所以首先,我使用了相关矩阵。它向我显示了所有变量之间的相关性。然后,我创建我的random forest regressor模型。在一篇文章中,我发现它具有feature_importances_的功能。它告诉自变量和因变量之间的相关性。所以我尝试了一下,然后发现它显示了与Correlation Matrix值相同的相关值。我的问题是,那么相关矩阵和随机森林特征重要性之间有什么区别?

2 个答案:

答案 0 :(得分:1)

查看下面的代码。

from sklearn.datasets import load_boston
from sklearn.ensemble import RandomForestRegressor
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt

#Load boston housing dataset as an example
boston = load_boston()


X = boston["data"]
Y = boston["target"]
names = boston["feature_names"]
reg = RandomForestRegressor()
reg.fit(X, Y)
print("Features sorted by their score:")
print(sorted(zip(map(lambda x: round(x, 4), reg.feature_importances_), names), 
             reverse=True))


boston_pd = pd.DataFrame(boston.data)
print(boston_pd.head())

boston_pd.columns = boston.feature_names
print(boston_pd.head())

# correlations
boston_pd.corr()
import seaborn as sn
import matplotlib.pyplot as plt
corrMatrix = boston_pd.corr()
sn.heatmap(corrMatrix, annot=True)
plt.show()

enter image description here

features = boston.feature_names
importances = reg.feature_importances_
indices = np.argsort(importances)

plt.title('Feature Importances')
plt.barh(range(len(indices)), importances[indices], color='#8f63f4', align='center')
plt.yticks(range(len(indices)), features[indices])
plt.xlabel('Relative Importance')
plt.show()

enter image description here

因此,特征选择依赖于相关分析人员来确定我们应使用的最佳特征;哪些功能(自变量)对帮助确定目标变量(因变量)的统计影响最大。相关性是一个统计术语,指的是两个变量之间的线性关系,彼此之间的接近程度。执行任何机器学习任务时,功能选择是第一步,也是最重要的步骤之一。数据集中的要素是一列数据。使用任何数据集时,我们必须了解哪个列(功能)将对输出变量产生统计上显着的影响。如果我们在模型中添加许多不相关的功能,则只会使模型变得最糟(垃圾填满,垃圾填满)。这就是我们进行特征选择的原因。皮尔逊相关性(特征选择)在确定所有自变量相对于目标变量(因变量)的相关性方面非常受欢迎。

答案 1 :(得分:0)

我假设您使用的是scikit-learn随机森林模型,因为它具有feature_importances_属性。尽管通过检查要素与目标变量之间的相关性可能会看到类似的结果,但是feature_importances_使用了更为复杂的方法。来自user guide

用作决策节点的要素的相对等级(即深度) 一棵树可用于评估该功能的相对重要性 关于目标变量的可预测性。特征 在树的顶部使用有助于最终预测 决定更大比例的输入样本。预期的 因此,它们贡献的样本的一部分可以用作 估计功能的相对重要性。在scikit学习中, 特征贡献的样本比例与 通过将其拆分以创建归一化来减少杂质 对该功能的预测能力进行估算。

通过平均几种方法的预测能力估计值 随机树可以减少这种估计的方差, 使用它进行功能选择。这就是所谓的 杂质或MDI。有关MDI的更多信息,请参见[L2014]。 随机森林进行特征重要性评估。

那里提到的是 Understanding Random Forests: From Theory to Practice 。您将特别感兴趣的是第6章(p。135),“理解变量的重要性”。