【问题标题】:Handling category, float and int type features while using LIME for model interpretation在使用 LIME 进行模型解释时处理类别、浮点和整数类型特征
【发布时间】:2020-09-30 19:06:16
【问题描述】:

我正在使用具有混合特征类型的 Lime(本地可解释模型无关解释)来评估我对分类任务的模型预测。有谁知道如何在lime.lime_tabular.LimeTabularExplainer() 方法中指定二进制特征。 LIME 实际上是如何处理这些类型的特征(更多只有 1 和 0 的特征)?

【问题讨论】:

    标签: python binary classification interpretation lime


    【解决方案1】:

    我认为您应该将您的二进制特征声明为分类特征,以便让您的 Lime 解释器在对所研究的样本执行局部扰动时有效地使用其采样机制。

    您可以使用 LimeTabularExplainer 构造函数中的 categorical_features 关键字参数来实现。

    my_binary_feature_column_index = 0 # put your column index here    
    
    explainer = LimeTabularExplainer(my_data, categorical_features=[my_binary_feature_column_index], categorical_name={my_binary_feature_column_index: ["foo", "bar", "baz"]})
    
    • categorical_features 是分类列索引的列表,并且
    • categorical_name 是一个包含列索引映射和类别名称列表的字典。

    正如 LIME 代码中提到的那样:

    解释对表格(即矩阵)数据的预测。 对于数值特征,通过从 Normal(0,1) 和 进行均值居中和缩放的逆运算,根据 训练数据中的均值和标准差。对于分类特征,扰动 根据训练分布进行采样,并制作二进制 当值与实例相同时为 1 的特征 解释。

    因此,分类特征是一种热编码,根据训练数据集中的特征分布使用值 0 或 1(除非您选择使用 LabelEncoder,这将导致 LIME 将特征作为连续变量)。

    LIME 项目中有一个很好的教程:https://github.com/marcotcr/lime/blob/master/doc/notebooks/Tutorial%20-%20continuous%20and%20categorical%20features.ipynb

    【讨论】:

    猜你喜欢
    • 2017-09-19
    • 2018-01-15
    • 1970-01-01
    • 2021-07-15
    • 1970-01-01
    • 2017-11-09
    • 2017-03-15
    • 1970-01-01
    • 2019-08-15
    相关资源
    最近更新 更多