ITPub博客

首页 > > > R语言黑箱洗白方法大全

R语言黑箱洗白方法大全

作者:浪花小雨滴 时间:2019-03-10 15:23:42 0 删除 编辑

作者:黄天元,复旦大学博士在读,热爱数据科学与R,热衷推广R在工业界与学术界的应用。知乎专栏:R语言数据挖掘邮箱:huang.tian-yuan@qq.com.欢迎合作交流。


众所周知,黑箱模型准确度高,因为复杂的模型中能够发现一些不为人知的特殊组合。但是不能解释的模型,是无法提炼为实用规则的,那么也就无法对决策做指导。为了解决这个问题,R语言活跃的机器学习社区想出了一些方法,并形成了不少R包。对这个问题进行综合概述的书已经出炉,在其他帖子已有介绍(云渡:精选|2019年1月R新包推荐)。


但是这本书就算翻译成中文也不是那么容易就能够理解的,更何况这专业英语复杂的。因此我们用更为由表及里、深入浅出的方法,直接去学R包。下面总结一下最近“不求甚解”的学习所得:


factorMerger:

The Merging Path Plot • factorMerger​mi2datalab.github.io

可以根据响应变量,对解释变量进行分组。个人认为它可以作为基于方差分析的后验聚类方法,它能够对解释变量进行聚类(对列聚类而不是行,也就是对属性而不是观测进行聚类)。


breakDown:

Model Agnostic Explainers for Individual Predictions • breakDown​pbiecek.github.io
对任意一个新的观测,请告诉我们,模型中每一个变量对得到这个结果的贡献程度。这种方法能够用来估计变量的相对重要性,特别是对新观测进行预测时不同变量的贡献程度。神奇之处在于,不仅仅能够用于线性的模型,也能用于解释性相对较差的非线性模型,如SVM/随机森林/xgboost。


pdp:

pdp: An R Package for Constructing Partial Dependence Plots​bgreenwell.github.io图标

再复杂的模型,请告诉我们:随着关键解释变量的变化,响应变量会有什么变化?


randomforestExplainer:

Understanding random forests with randomForestExplainer​cran.r-project.org图标

针对随机森林模型,基于解释变量所在决策树的深度寻找关键影响因子的方法。评价标准包括节点不纯度、预测精度、是否为根节点判断标准等等,而且能够结合这些指标的相关性进行筛选。同时,对变量的交互项也有相应的解决方案。最后,还提供了懒人模式,一键出所有结果:explain_forest()。


xspliner:

Assisted Model Building, using Surrogate Black-Box Models to Train Interpretable Spline Based Additive Models • xspliner​modeloriented.github.io图标

非线性模型转线性模型大法。先构建黑箱模型,然后找到关键影响因子,对这些因子进行线性化洗白,利用样条的方法抽提其趋势性。任何模型,在这个框架下都能够转化为GLM模型,从而提高模型的解释性。无论结果精度是否高,毕竟它更好解释了。我认为这是进行再特征工程的优秀办法(重新分箱)。



没时间搬运代码了,但是令人庆幸,这些包的设计者的代码基本复制粘贴就能用,难点还是在于对模型适用场景的辨别和结果的合理解释。要用时代最前沿的算法,不付出一点代价是不行的,上面很多包都有相关的论文对其方法进行介绍。不说百分百能够自己推导,但是60%能理解设计哲学还是需要做到的。此外就是知道每个参数怎么调,会有什么效果。这些包还在积极的开发中,相信以后会越来越好用!

最后安利mi2.mini.pw.edu.pl/实验室,上面很多包都是这个实验室设计的,还有封装的黑箱洗白R包:

Descriptive mAchine Learning EXplanations • DALEX​pbiecek.github.io图标

这个包提供了黑箱模型洗白的通用框架(相关教程见DALEX: Descriptive mAchine Learning EXplanations):


最后,欢迎各位大佬补充黑箱模型洗白方法,甚至在这里推广自己的算法与实现方法。同时,欢迎各位大佬补充黑箱模型洗白方法,甚至在这里推广自己的算法与实现方法。

原文作者:;如有侵权,请联系管理员删除。

请登录后发表评论 登录
全部评论

注册时间:2018-05-16

  • 博文量
    4259
  • 访问量
    39870