我正在使用具有混合特征类型的Lime(本地可解释模型不可知的解释)来评估分类任务的模型预测。有谁知道如何在lime.lime_tabular.LimeTabularExplainer()方法中指定二进制功能。 LIME如何实际处理这些类型的功能(更多的功能只有1和0)?
答案 0 :(得分:0)
我认为您应该将您的二进制特征声明为分类特征,以使您的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"]})
如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