当前位置: 首页 > news >正文

风控模型黑箱可解释,试下这个方法来演示

模型的开发,目前在互金领域场景中因为变量多,开发周期短,目前用得最多的就是XGB、LGB这类的机器学习模型。
比如我们之前跟大家输出的关于个人信贷反欺诈评分卡的开发内容里,我们用的就是lightgbm来建模的,相关的操作细节如下:
在这里插入图片描述

在这里插入图片描述

关于这一类机器学习模型,虽然说有黑箱的内容在里面,但常规上我们还是可以用特征重要性,也就是feature_importance来查看特征对模型重要度的贡献:
在这里插入图片描述

                                                   【图:绘制lgb模型的特征重要性的排序图】

关于模型特征可解释性的的内容,除了如以上提供的模型都有importance这一接口外,目前常用的还有SHAP这一个模型可解释性的内容,今天我们跟大家讲讲这个内容,而且还会实操一个只能用SHAP来演绎模型特征重要性的算法。
一.SHAP介绍
可解释机器学习在这几年慢慢成为了机器学习的重要研究方向。作为数据科学家需要防止模型存在偏见,且帮助决策者理解如何正确地使用我们的模型。越是严苛的场景,越需要模型提供证明它们是如何运作且避免错误的证据
关于模型解释性,除了线性模型和决策树这种天生就有很好解释性的模型意外,sklean中有很多模型都有importance这一接口,可以查看特征的重要性。如这里提到的特征重要性的内容:
在这里插入图片描述

关于特征的重要性,比如上面我们用xgboost这种集成模型时是用feature_importance方法的。那对于某些算法,比如异常检测中的孤立森林算法,只能用shap value来表达。

二.如何实现SHAP
实现SHAP,可以直接调用SHAP模块就能实现。本次在实操过程中,我们用之前跟大家介绍过的孤立森林这个算法,来特别实现,因为孤立森林接口直接调不出feature_importance的。

如上所述,shap是Python开发的一个"模型解释"包,可以解释任何机器学习模型的输出。其名称来源于SHapley Additive exPlanation,在合作博弈论的启发下shap构建一个加性的解释模型,所有的特征都视为“贡献者”。对于每个预测样本,模型都产生一个预测值,shap value就是该样本中每个特征所分配到的数值。
在这里插入图片描述

Python中shap值的计算由shap这个package实现,下面我们对训练出的base_iforest模型,计算其shap值。先引用package并且获得解释器explainer,再获取各个样本的shap值,然后调用summary_plot绘制重要性排序图,可以看到绘制出的图表类似xgboost的feature_importance图,shap value可理解为一个特征对目标变量影响程度的绝对值的均值作为这个特征的重要性。
在这里插入图片描述

在这里插入图片描述

关于本文所提及的机器学习模型相关的数据集跟代码实操内容,可以同步至知识星球后台,查看完整版本内容,欢迎星球同学移步到知识星球查收完整内容:
在这里插入图片描述

~原创文章

相关文章:

  • Shader Graph的用法初探
  • unity core-prefab
  • rollup常用插件详解
  • 基于Solidworks的三维光路结构示意图绘制实例演示-技术细节
  • Day726.Java平台模块系统 -Java8后最重要新特性
  • 虚机的部分磁盘空间被谁吃了?
  • leetcode88. 合并两个有序数组
  • 【python 】pygame制作简单的游戏移动操作
  • 软件流程和管理(五):Stakeholder Management Communication
  • JavaScript 案例一 --bind,call,apply
  • 计算机毕业设计django基于python金太阳家居电商平台(源码+系统+mysql数据库+Lw文档)
  • Crypto Pragmatist:5个值得关注的加密叙事
  • SpringBoot配置文件
  • 幸福心理与抗逆力培养的工控系统安全实验课程研究
  • springcloud搭建实战<十>【zuul网关】
  • [NodeJS] 关于Buffer
  • 【跃迁之路】【669天】程序员高效学习方法论探索系列(实验阶段426-2018.12.13)...
  • angular2开源库收集
  • C++11: atomic 头文件
  • ES6, React, Redux, Webpack写的一个爬 GitHub 的网页
  • JavaScript 基础知识 - 入门篇(一)
  • JavaScript对象详解
  • javascript面向对象之创建对象
  • JavaScript学习总结——原型
  • java架构面试锦集:开源框架+并发+数据结构+大企必备面试题
  • js写一个简单的选项卡
  • npx命令介绍
  • python 装饰器(一)
  • React 快速上手 - 06 容器组件、展示组件、操作组件
  • TypeScript实现数据结构(一)栈,队列,链表
  • 人脸识别最新开发经验demo
  • 使用docker-compose进行多节点部署
  • 手写一个CommonJS打包工具(一)
  • 我与Jetbrains的这些年
  • 小李飞刀:SQL题目刷起来!
  • 自制字幕遮挡器
  • ​【已解决】npm install​卡主不动的情况
  • ​卜东波研究员:高观点下的少儿计算思维
  • #pragma 指令
  • #stm32整理(一)flash读写
  • (读书笔记)Javascript高级程序设计---ECMAScript基础
  • (附源码)springboot猪场管理系统 毕业设计 160901
  • (转)用.Net的File控件上传文件的解决方案
  • (转载)在C#用WM_COPYDATA消息来实现两个进程之间传递数据
  • *p++,*(p++),*++p,(*p)++区别?
  • .NET Core6.0 MVC+layui+SqlSugar 简单增删改查
  • .NET 的静态构造函数是否线程安全?答案是肯定的!
  • .NET 事件模型教程(二)
  • .net通用权限框架B/S (三)--MODEL层(2)
  • :“Failed to access IIS metabase”解决方法
  • @selector(..)警告提示
  • [04] Android逐帧动画(一)
  • [20150904]exp slow.txt
  • [20161214]如何确定dbid.txt
  • [20171113]修改表结构删除列相关问题4.txt