美文网首页机器学习算法
建模后可解释性机器学习

建模后可解释性机器学习

作者: 可能性之兽 | 来源:发表于2022-05-11 14:27 被阅读0次

可解释性机器学习_Feature Importance、Permutation Importance、SHAP_LMY的博客的博客-CSDN博客_feature importance

建模后可解释性机器学习:

  • 特征重要性(模型自带Feature Importance)
  • Permutation Importance
  • SHAP
  • Partial Dependence

1、特征重要性(Feature Importance)

特征重要性的作用 -> 快速的让你知道哪些因素是比较重要的,但是不能得到这个因素对模型结果的正负向影响,同时传统方法对交互效应的考量会有些欠缺。

如果想要知道哪些变量比较重要的话。可以通过模型的feature_importances_方法来获取特征重要性。例如xgboost的feature_importances_可以通过特征的分裂次数或利用该特征分裂后的增益来衡量。

计算方法是:Mean Decrease Impurity。

思想:一个特征的意义在于降低预测目标的不确定性,能够更多的降低这种不确定性的特征就更重要。即特征重要性计算依据某个特征进行决策树分裂时,分裂前后的信息增益(基尼系数)

import pandas as pd
from sklearn.datasets import load_iris
import xgboost as xgb 

iris = load_iris()
df = pd.DataFrame(iris.data,columns=iris.feature_names) #转化成DataFrame格式
target = iris.target

xgb_model = xgb.XGBClassifier()
clf = xgb_model.fit(df.values, target)
a=clf.feature_importances_
features = pd.DataFrame(sorted(zip(a,df.columns),reverse=True))

2、Permutation Importance(排列重要性)

常规思路,很容易想到,在训练模型的时候可以直接输出特征重要性,但这个特征对整体的预测效果有多大影响?可以用Permutation Importance进行计算。

思想:基于“置换检验”的思想对特征重要性进行检测,,一定是在model训练完成后,才可以计算的。简单来说,就是改变数据表格中某一列的数据的排列,保持其余特征不动,看其对预测精度的影响有多大。

使用ELI5库可以进行Permutation Importance的计算。

import eli5
from eli5.sklearn import permutationImportance

perm = PermutationImportance(xgb_model, random_state = 1).fit(df, target) # 实例化
eli5.show_weights(perm)

结果分析:

靠近上方的绿色特征,表示对模型预测较为重要的特征;
为了排除随机性,每一次 shuffle 都会进行多次,然后取结果的均值和标准差;
±后面的数字表示多次随机重排之间的差异值。
这个例子里,最重要的特征是第三个 ‘petal length (cm)’, 和feature_importances_输出结果一致。

3、Partial Dependence
Partial Dependence就是用来解释某个特征和目标值y的关系的,一般是通过画出Partial Dependence Plot(PDP)来体现。
partial dependence是什么意思?-SofaSofa

4、SHAP(SHapley Additive exPlanation)

以上都是全局可解释性方法,那局部可解释性,即单个样本来看,模型给出的预测值和某些特征可能的关系,这就可以用到SHAP。

SHAP 属于模型事后解释的方法,它的核心思想是计算特征对模型输出的边际贡献,再从全局和局部两个层面对“黑盒模型”进行解释。SHAP构建一个加性的解释模型,所有的特征都视为“贡献者”。对于每个预测样本,模型都产生一个预测值,SHAP value就是该样本中每个特征所分配到的数值。

Shapley value起源于合作博弈论。比如说甲乙丙丁四个工人一起打工,甲和乙完成了价值100元的工件,甲、乙、丙完成了价值120元的工件,乙、丙、丁完成了价值150元的工件,甲、丁完成了价值90元的工件,那么该如何公平、合理地分配这四个人的工钱呢?Shapley提出了一个合理的计算方法(有兴趣地可以查看原论文),我们称每个参与者分配到的数额为Shapley value。

SHAP是由Shapley value启发的可加性解释模型。对于每个预测样本,模型都产生一个预测值,SHAP value就是该样本中每个特征所分配到的数值。 假设第i个样本为xi,第i个样本的第j个特征为xi,j,模型对第i个样本的预测值为yi,整个模型的基线(通常是所有样本的目标变量的均值)为ybase,那么SHAP value服从以下等式。

基本思想:计算一个特征加入到模型时的边际贡献,然后考虑到该特征在所有的特征序列的情况下不同的边际贡献,取均值,即某该特征的SHAPbaseline value

SHAP(SHapley Additive exPlanation)是Python开发的一个"模型解释"包,可以解释任何机器学习模型的输出。

import shap  #Python的可解释机器学习库 pip install shap
shap.initjs()  # notebook环境下,加载用于可视化的JS代码

#模型还是用之前训练的
#xgb_model = xgb.XGBClassifier()
#clf = xgb_model.fit(df.values, target)

#在SHAP中进行模型解释需要先创建一个explainer,
#SHAP支持很多类型的explainer(例如deep, gradient, kernel, linear, tree, sampling)
#我们先以tree为例,因为它支持常用的XGB、LGB、CatBoost等树集成算法。
explainer = shap.TreeExplainer(clf)
shap_values = explainer.shap_values(df)  # 传入特征矩阵,计算SHAP值

j = 60
y_base = explainer.expected_value
player_explainer = pd.DataFrame()
player_explainer['feature'] = df.columns
player_explainer['feature_value'] = df.iloc[j].values
player_explainer['shap_value'] = shap_values[j]
player_explainer

利用SHAP解释Xgboost模型-SofaSofa

利用SHAP解释Xgboost模型 - 知乎 (zhihu.com)

机器学习入门教程与实例-SofaSofa

没想到还有一本书MingchaoZhu/InterpretableMLBook: 《可解释的机器学习--黑盒模型可解释性理解指南》,该书为《Interpretable Machine Learning》中文版 (github.com)

相关文章

  • 建模后可解释性机器学习

    可解释性机器学习_Feature Importance、Permutation Importance、SHAP_L...

  • 机器学习技能要求与应用

    机器学习准备: 1;耐心调优; 2;人员组成 项目经理 业务专家 机器学习工程师 数据建模人员 可...

  • ML+DL学习经验知识总结

    机器学习 建模方法 曲面式建模:y=f(x,w),x为输入、w为可训练参数、y为输出 概率式建模:p(y|x,w)...

  • 引入业务先验约束的树模型(Python)

    一、模型解释性的意义 机器学习业务应用以输出决策判断为目标。可解释性是指人类能够理解决策原因的程度。机器学习模型的...

  • 6.10  特征处理

    整理一下建模前的步骤:特征提取,特征转换,特征选择对机器学习(传统机器学习和深度学习)建模都是非常重要的环节。 补...

  • R语言机器学习与临床预测模型69--机器学习模型解释利器:SHA

    R小盐准备介绍R语言机器学习与预测模型的学习笔记, 快来收藏关注【科研私家菜】 01 机器学习的可解释性 对于集成...

  • 机器学习通用流程

    机器学习解决问题的通用流程主要分为4大部分: 问题建模: 解决一个机器学习问题都是从问题建模开始。首先需要收集问题...

  • 机器学习-4:机器学习的建模流程

    机器学习的建模流程 流程为:原始数据 --> 数据预处理 --> 特征工程 --> 建模 --> 验证。 原始数...

  • 无标题文章

    机器学习中分类和预测算法的评估: 准确率速度强壮行可规模性可解释性 什么是决策树/判定树(decision tre...

  • 学习An Abstract Domain for Certify

    近期,将对机器学习的功能性性质,比如:可解释性(透明性),可验证性(可信的),可组合性(可拓展性),鲁棒性等等,在...

网友评论

    本文标题:建模后可解释性机器学习

    本文链接:https://www.haomeiwen.com/subject/xavdurtx.html