新闻  |   论坛  |   博客  |   在线研讨会
【机器学习】树模型决策的可解释性与微调(Python)(1)
数据派THU | 2022-10-20 20:13:37    阅读:487   发布文章

本文示例项目沿用之前文章的数据:一文梳理金融风控建模全流程(Python))。


一、树模型的解释性


集成学习树模型因为其强大的非线性能力及解释性,在表格类数据挖掘等任务中应用频繁且表现优异。


模型解释性对于某些领域(如金融风控)是极为看重的,对于树模型的解释性,我们常常可以通过输出树模型的结构或使用shap等解释性框架的方法:


graphviz 输出树结构


# 需要先安装https://graphviz.org/download/import osos.environ["PATH"] += os.pathsep + 'D:/Program Files/Graphviz/bin/'   # 安装路径
for k in range(n_estimators):  #遍历n_estimators棵树的结构    ax = lightgbm.plot_tree(lgb, tree_index=k, figsize=(30,20), show_info=['split_gain','internal_value','internal_count','internal_weight','leaf_count','leaf_weight','data_percentage'])
plt.show()


图片

输出树的决策路径是很直接的方法,但对于大规模(树的数目>3基本就比较绕了)的集成树模型来说,决策就太过于复杂了,最终决策要每棵树累加起来,很难理解。。(相关树的可解释工作,可参考如下论文:https://www.cs.sjtu.edu.cn/~kzhu/papers/kzhu-infocode.pdf)


接下介绍下常用的几种框架的方法辅助去解释模型:


shap框架解释性


SHAP基于Shapley值,Shapley值是经济学家Lloyd Shapley提出的博弈论概念。它的核心思想是计算特征对模型输出的边际贡献,再从全局和局部两个层面对“黑盒模型”进行解释。如下几行代码就可以展示该模型的变量对于决策的影响,以Insterest历史利率为例,利率特征值越高(蓝色为低,红色为高),对应shap值越高,说明决策结果越趋近1(在本例金融风控项目里面也就是数值越大,越容易违约)


## 本文代码请见 https://github.com/aialgorithm/Blog/tree/master/projects/%E6%B5%B7%E5%A4%96%E9%87%91%E8%9E%8D%E9%A3%8E%E6%8E%A7%E5%AE%9E%E8%B7%B5
### 需要先pip install shapimport shap
explainer = shap.TreeExplainer(lgb)shap_values = explainer.shap_values(pd.concat([train_x,test_x]))shap.summary_plot(shap_values[1], pd.concat([train_x,test_x]),max_display=5,plot_size=(5,5)) #特征重要性可视化


图片


其他模型可解释性框架


  • LIME


在可解释性领域,最早出名的方法之一是LIME。它可以帮助解释机器学习模型正在学习什么以及为什么他们以某种方式预测。Lime目前支持对表格的数据,文本分类器和图像分类器的解释。


知道为什么模型会以这种方式进行预测对于调整算法是至关重要的。借助LIME的解释,能够理解为什么模型以这种方式运行。如果模型没有按照计划运行,那么很可能在数据准备阶段就犯了错误。


图片


  • Shapash


“ Shapash是一个使机器学习对每个人都可以进行解释和理解Python库。Shapash提供了几种类型的可视化,显示了每个人都能理解的明确标签。数据科学家可以更轻松地理解他们的模型并分享结果。最终用户可以使用最标准的摘要来理解模型是如何做出判断的。”


Shapash库可以生成交互式仪表盘,并收集了许多可视化图表。与外形/石灰解释性有关。它可以使用SHAP/Lime作为后端,也就是说它只提供了更好看的图表。


使用Shapash构建特征贡献图


图片


  • InterpretML


InterpretML是一个开源的Python包,它向研究人员提供机器学习可解释性算法。InterpretML支持训练可解释模型(glassbox),以及解释现有的ML管道(blackbox)。


图片


  • ELI5


ELI5是一个可以帮助调试机器学习分类器并解释它们的预测的Python库。目前支持以下机器学习框架:scikit-learn、XGBoost、LightGBM CatBoost、Keras。


ELI5有两种主要的方法来解释分类或回归模型:检查模型参数并说明模型是如何全局工作的;检查模型的单个预测并说明什么模型会做出这样的决定。


图片


  • OmniXAI


OmniXAI (Omni explained AI的简称),是Salesforce最近开发并开源的Python库。它提供全方位可解释的人工智能和可解释的机器学习能力来解决实践中机器学习模型在产生中需要判断的几个问题。对于需要在ML过程的各个阶段解释各种类型的数据、模型和解释技术的数据科学家、ML研究人员,OmniXAI希望提供一个一站式的综合库,使可解释的AI变得简单。


图片



*博客内容为网友个人发布,仅代表博主个人观点,如有侵权请联系工作人员删除。

参与讨论
登录后参与讨论
推荐文章
最近访客