模型的可解释性

一、PI:Permutaion Importance — 排列重要性

作用:衡量特征重要性方法

原理

代码示例:基于模型用球队的统计数据预测一个足球队会不会出现“全场最佳球员”

import numpy as np
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.ensemble import RandomForestClassifier

data = pd.read_csv('../input/fifa-2018-match-statistics/FIFA 2018 Statistics.csv')
y = (data['Man of the Match'] == "Yes")  # Convert from string "Yes"/"No" to binary
feature_names = [i for i in data.columns if data[i].dtype in [np.int64]]
X = data[feature_names]
train_X, val_X, train_y, val_y = train_test_split(X, y, random_state=1)
my_model = RandomForestClassifier(random_state=0).fit(train_X, train_y)

eli5库计算和展示排列重要性 

import eli5
from eli5.sklearn import PermutationImportance

perm = PermutationImportance(my_model, random_state=1).fit(val_X, val_y)
eli5.show_weights(perm, feature_names = val_X.columns.tolist())

输出结果

 排列重要性结果解读:

排在最上面的是最重要的特征,排在最下面是重要性最低的特征。

每一行的第一个数字表示模型性能衰减了多少。

在对某一打乱的特征提取重要性的时候,是存在随机性的,所以我们在计算排列重要性的时候,会通过多次打乱顺序的方式重复这一过程。在±后面的数字表示标准差。

偶尔你会看到负值的排列重要性。在这些情况中,在打乱的数据上得到预测结果比真实数据的准确率更高。这在所选特征与目标基本无关(重要性应该为0)的情况下会出现,但是随机的因素导致预测结果在打乱的数据上表现得更准确。就像这个例子一样,因为没有容忍随机性的空间,这种情况在小的数据集上很常见。

特征重要性展示的是哪些变量对预测的影响最大——方式是随机打乱某一列的特征,而部分依赖图展示的是特征如何影响模型预测的——方式是控制变量,不断变化某一列的值后,预测结果求平均。

二、PDP:Partial Dependence Plots —— 部分依赖图

 

 

 其他方法ALE(Accumulated Local Effects)可以缓解这个问题 

 三、LIME:Local Interpretable Model-agnostic Explanations 

 

 

 

 

 

 

参考文献:
http://t.csdnimg.cn/TNZGQ

https://www.bilibili.com/video/BV1d5411h7K2/?

https://www.bilibili.com/video/BV12V4y1G7KF/?

  • 8
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值