【问题标题】:How to see the feature importance of a prediction in machine learning如何在机器学习中查看预测的特征重要性
【发布时间】:2021-01-06 23:54:45
【问题描述】:

我有一个使用样本数据集训练的简单 RF ​​分类器模型,它运行良好。

所以,我使用一些测试数据来预测目标类,假设它找到目标类为10(为简单起见,将其视为二进制分类)

假设我们需要查看测试功能对预测值(01)的影响。看下面的例子:

input features - [a,b,c]
predicted value - 1

input features - [a,d,c]
predicted value - 10

让我们以第一个场景为例,其中输入(测试功能)特征是 abc,这将产生 1

所以现在我想检查一下这些功能(abc),哪些功能对预测值的影响最大1

我该怎么做?

PS:我知道如何检查训练数据集的特征重要性,但在这种情况下,它不是训练数据集,而是测试数据集,目标类仅在预测后获得。

【问题讨论】:

    标签: python machine-learning random-forest


    【解决方案1】:

    我用来解释 RF 分类器预测的一个包是 Treeinterpreter。它计算单个特征对单个预测的贡献:“用于解释 scikit-learn 的决策树和随机森林预测的包。允许将每个预测分解为偏差和特征贡献分量......”https://pypi.org/project/treeinterpreter/

    这个博客here解释了它是如何工作的,这个here展示了如何使用它的例子。但基本上一旦你有了你的射频模型:

    from treeinterpreter import treeinterpreter as ti
    prediction, bias, contributions = ti.predict(model, data) 
    

    Model 是 RF 模型,data 是测试数据(您为其生成预测的数据集)

    【讨论】:

    • 嗨,谢谢你,你能提供一些例子吗?如何做到这一点?
    • 谢谢,我猜model 是我的射频型号,data 参数是什么?
    • 这个博客 [这里] (blog.datadive.net/interpreting-random-forests) 解释了它是如何工作的,这个 [这里] (blog.datadive.net/…) 展示了如何使用它的示例。但基本上一旦你有了你的模型:from treeinterpreter import treeinterpreter as ti ..prediction, bias, contributions = ti.predict(model, data) 模型是你的射频模型,数据是你的测试数据(你生成预测的数据集)
    • 谢谢。您可以使用上面评论中的内容更新您的答案吗?因为它可能会在将来帮助某人。 (可能他/她会错过 cmets)
    • 嗨@Mel,我遇到了问题。当我尝试获取特征重要性时,只有一个特征(17 个特征中)的值所有其他特征都是 0.0000。你知道为什么会这样吗?
    猜你喜欢
    • 2020-10-07
    • 1970-01-01
    • 2019-11-07
    • 2014-03-11
    • 1970-01-01
    • 2021-02-06
    • 1970-01-01
    • 2019-07-14
    • 2019-01-28
    相关资源
    最近更新 更多