有没有办法解释来自随机森林模型的预测?


11

假设我有一个基于随机森林的预测分类模型(使用R中的randomForest包)。我想对其进行设置,以便最终用户可以指定要为其生成预测的项目,并且它将输出分类可能性。到目前为止,没有问题。

但是能够输出诸如可变重要性图之类的东西,但对于要预测的特定项目而不是训练集,将是有用/很酷的。就像是:

预计X项是狗(可能性为73%),
因为:
腿= 4
呼吸=不良
毛皮=短
食=讨厌

你明白了。是否存在从受过训练的随机森林中提取此信息的标准或至少合理的方法?如果是这样,是否有人有代码可以对randomForest软件包执行此操作?


有些复杂性...您可以想象计算出Legs变量是决策路径一部分的次数。但是,您只是对预测多数答案的树木还是所有树木都这样做吗?还是不同?
哈兰

m逐一更改所有预测变量,然后看看森林如何进行不同的预测似乎有些昂贵。有更好的方法。
哈兰

我的第一个想法是想知道您要做什么与培训数据的可变重要性有何不同?您是否要说在给定其他值的情况下,对腿= 4相对于腿= 2或腿= 0的预测的敏感性是多少?您是否看过randomforest软件包中的部分绘图功能?
B_Miner 2011年

可变重要性通常是根据整个训练集(或假设的总体或其他)来定义的。但是我想要的是单个预测项目的可变重要性。假设有一个森林由非常偏斜的决策树组成。测试实例1可以用1个或很少的决策节点来解释,而测试实例2可以用更大的决策节点集来解释。我想要一个非常容易理解的版本,例如一系列排名最高的决策,我可以提供前五个决策。对于单个决策树,我只是将其阅读。
哈兰

Answers:


3

第一个想法只是从可变的重要性模仿淘汰策略,并测试混合每个属性如何降低森林在对象分类中的置信度(在OOB上以及明显地重复)。这需要一些编码,但是肯定是可以实现的。

但是,我觉得这是个坏主意-结果可能会像地狱(对对象进行平均而不会产生稳定的影响),嘈杂(对于不太自信的对象,胡说八道的属性可能会产生重大影响)这样的变量解释(两个或多个属性合作规则可能会导致每个贡献属性的随机影响)。

不要给您一个否定的答案,我宁愿尝试看看邻近矩阵及其可能显示的原型-这似乎更加稳定和直接。


合作规则/相关预测变量的观点是一个很好的批评。为了使这项工作有效,可能有必要对RF进行某种预先减少的变量集训练,或者并入某种惩罚策略以使RF专注于预测变量的子集。
哈兰2013年

0

我会尝试使用石灰框架。

它适用于许多模型(包括随机森林)。它可用于局部解释(即解释单个预测)或全局解释(即解释整个模型)。

从抽象报价

在这项工作中,我们提出了LIME,这是一种新颖的解释技术,通过学习围绕预测的局部可解释模型,以一种可解释且忠实的方式解释任何分类器的预测。我们还提出了一种方法来解释模型,方法是通过以非冗余方式呈现代表性的单个预测及其解释,将任务框架化为次模块化优化问题。

它具有用于Rpython的软件包,如果您用google搜索,也有很多示例。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.