【问题标题】:Random Forest Feature Importances vs Correlation Matrix随机森林特征重要性与相关矩阵
【发布时间】:2020-04-06 00:43:38
【问题描述】:

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

【问题讨论】:

    标签: python machine-learning scikit-learn


    【解决方案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()
    

    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()
    

    因此,特征选择依赖于相关分析来确定我们应该使用的最佳特征;哪些特征(自变量)对帮助确定目标变量(因变量)具有最大的统计影响。相关性是一个统计术语,指的是两个变量在彼此之间具有线性关系方面的接近程度。在执行任何机器学习任务时,特征选择是第一步,也可以说是最重要的步骤之一。数据集中的特征是一列数据。在处理任何数据集时,我们必须了解哪一列(特征)将对输出变量产生统计上的显着影响。如果我们在模型中添加许多不相关的特征,只会使模型变得最差(Garbage In Garbage Out)。这就是我们进行特征选择的原因。 Pearson 相关性(特征选择)在确定所有自变量相对于目标变量(因变量)的相关性时非常流行。

    【讨论】:

      【解决方案2】:

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

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

      通过平均多个预测能力的估计值 随机树可以减少这种估计的方差,并且 将其用于特征选择。这被称为平均下降 杂质或 MDI。有关 MDI 和 使用随机森林进行特征重要性评估。

      那里的引用是 Understanding Random Forests: From Theory to Practice。您特别感兴趣的是第 6 章(第 135 页),“了解变量重要性”。

      【讨论】:

        猜你喜欢
        • 2021-05-09
        • 2021-08-29
        • 2017-07-19
        • 2015-05-12
        • 1970-01-01
        • 2020-05-26
        • 2018-12-01
        • 2017-10-21
        • 2019-01-28
        相关资源
        最近更新 更多