首页 > > > R语言黑箱洗白方法大全
作者:黄天元,复旦大学博士在读,热爱数据科学与R,热衷推广R在工业界与学术界的应用。知乎专栏:R语言数据挖掘邮箱:huang.tian-yuan@qq.com.欢迎合作交流。
众所周知,黑箱模型准确度高,因为复杂的模型中能够发现一些不为人知的特殊组合。但是不能解释的模型,是无法提炼为实用规则的,那么也就无法对决策做指导。为了解决这个问题,R语言活跃的机器学习社区想出了一些方法,并形成了不少R包。对这个问题进行综合概述的书已经出炉,在其他帖子已有介绍(云渡:精选|2019年1月R新包推荐)。

但是这本书就算翻译成中文也不是那么容易就能够理解的,更何况这专业英语复杂的。因此我们用更为由表及里、深入浅出的方法,直接去学R包。下面总结一下最近“不求甚解”的学习所得:
factorMerger:
The Merging Path Plot • factorMerger可以根据响应变量,对解释变量进行分组。个人认为它可以作为基于方差分析的后验聚类方法,它能够对解释变量进行聚类(对列聚类而不是行,也就是对属性而不是观测进行聚类)。

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

pdp:
pdp: An R Package for Constructing Partial Dependence Plots
再复杂的模型,请告诉我们:随着关键解释变量的变化,响应变量会有什么变化?


randomforestExplainer:
Understanding random forests with randomForestExplainer

针对随机森林模型,基于解释变量所在决策树的深度寻找关键影响因子的方法。评价标准包括节点不纯度、预测精度、是否为根节点判断标准等等,而且能够结合这些指标的相关性进行筛选。同时,对变量的交互项也有相应的解决方案。最后,还提供了懒人模式,一键出所有结果:explain_forest()。
xspliner:
Assisted Model Building, using Surrogate Black-Box Models to Train Interpretable Spline Based Additive Models • xspliner
非线性模型转线性模型大法。先构建黑箱模型,然后找到关键影响因子,对这些因子进行线性化洗白,利用样条的方法抽提其趋势性。任何模型,在这个框架下都能够转化为GLM模型,从而提高模型的解释性。无论结果精度是否高,毕竟它更好解释了。我认为这是进行再特征工程的优秀办法(重新分箱)。

没时间搬运代码了,但是令人庆幸,这些包的设计者的代码基本复制粘贴就能用,难点还是在于对模型适用场景的辨别和结果的合理解释。要用时代最前沿的算法,不付出一点代价是不行的,上面很多包都有相关的论文对其方法进行介绍。不说百分百能够自己推导,但是60%能理解设计哲学还是需要做到的。此外就是知道每个参数怎么调,会有什么效果。这些包还在积极的开发中,相信以后会越来越好用!
最后安利http://mi2.mini.pw.edu.pl/实验室,上面很多包都是这个实验室设计的,还有封装的黑箱洗白R包:
Descriptive mAchine Learning EXplanations • DALEX
这个包提供了黑箱模型洗白的通用框架(相关教程见DALEX: Descriptive mAchine Learning EXplanations):

最后,欢迎各位大佬补充黑箱模型洗白方法,甚至在这里推广自己的算法与实现方法。同时,欢迎各位大佬补充黑箱模型洗白方法,甚至在这里推广自己的算法与实现方法。
原文作者:;如有侵权,请联系管理员删除。