当前位置: 首页 > 科技观察

如何解释决策树和随机森林的内部运作?

时间:2023-03-17 13:19:27 科技观察

随机森林在过去几年蓬勃发展。它是一种非线性的基于树的模型,往往会给出准确的结果。然而,随机森林的工作过程大多处于黑盒状态,往往难以解读和充分理解。最近,PivotalEngineeringJournal网站发表了一篇文章,对随机森林的基础知识进行了深入解读。本文从随机森林的积木——决策树入手,通过生动的图表介绍了随机森林的工作流程,可以帮助读者更透彻地了解随机森林的工作方式。本文基于AndoSaabas的GitHub项目。或者,您可以在GitHub上的本文中找到用于创建各种图表的代码。AndoSaabas的项目:https://github.com/andosa/treeinterpreter创建图表的代码:https://github.com/gregtam/interpreting-decision-trees-and-random-forests决策树如何工作决策树可以可以看成是if-then规则的集合,即为决策树的根节点到叶节点的每条路径构造一条规则。路径上内部节点的特征对应规则的条件,叶节点的类对应规则的结论。.因此,决策树可以看作是由条件if(内部节点)和条件满足时对应的规则then(边)组成的。决策树通过以贪婪的方式迭代地将数据划分为不同的子集来工作。其中,回归树的目的是最小化所有子集中的MSE(均方误差)或MAE(平均绝对误差);而分类树(classificationtree)则是对数据进行划分,使得得到的子组集合的熵或基尼不纯度最小。生成的分类器可以将特征空间分成不同的子集。观察的预测将取决于观察所属的子集。图1:决策树的迭代过程决策树的贡献以鲍鱼数据集(https://archive.ics.uci.edu/ml/datasets/abalone)为例。我们将根据壳重、长度、直径等变量预测鲍鱼壳上的环数。为了演示,我们构建了一个非常浅的决策树。我们可以通过将树的最大层数限制为3来得到这棵树。图2:预测不同环数的决策树路径为了预测鲍鱼的环数,决策树将沿着树向下移动,直到到达叶节点。每一步将当前子集一分为二。对于特定的拆分,我们根据平均环数的变化定义了导致该拆分的变量。例如,如果给我们一只鲍鱼,壳重为0.02,长度为0.220,那么它会落在最左边的叶节点上,预测环数为4.4731。壳重对预测环数的贡献为:(7.587-9.958)+(5.701-7.587)=-4.257长度的贡献为:(4.473-5.701)=-1.228这些贡献都是负的,说明对于这种特殊的鲍鱼,壳重和长度值会下降预测的环数。我们可以通过运行以下代码来获得这些贡献。fromtreeinterpreterimporttreeinterpreterastidt_reg_pred,dt_reg_bias,dt_reg_contrib=ti.predict(dt_reg,X_test)其中变量dt_reg是sklearn分类器目标,X_test是包含我们希望预测和贡献的特征的PandasDataFrame或numpy数组。它的贡献变量dt_reg_contrib是一个二维的numpy数组(n_obs,n_features),其中n_obs是观察的个数,n_features是特征的个数。我们可以绘制给定鲍鱼的这些贡献,以查看哪些特征影响预测值***。我们可以在下图中看到这种特定鲍鱼的重量和长度值对预测环数的负面影响。图3:贡献图(决策树)示例我们可以使用小提琴图来比较这只特定鲍鱼对所有鲍鱼情况的贡献。这会在此图上叠加核密度估计。在下图中,我们可以看到与其他鲍鱼相比,这种特殊鲍鱼的壳重异常低。事实上,许多鲍鱼对壳重有积极贡献。图4:使用小提琴图为观察样本绘制的贡献图(决策树)。文末会附上小提琴图的基本概念和用法。上图虽然提供了信息,但仍无法让我们完全理解某个特定变量对鲍鱼环数的影响。因此,我们可以绘制给定特征对其值的贡献。如果我们将壳重量的值与其贡献作图,我们可以知道壳重量的增加会导致贡献的增加。图5:贡献与壳重量(决策树)另一方面,壳重量与贡献之间的关系是非线性和非单调的。较低的果壳重量没有贡献,较高的果壳重量有负贡献,而在两者之间,贡献是正的。图6:贡献与脱壳权重(决策树)扩展到随机森林到随机森林。图7:使用小提琴图(随机森林)进行观察的贡献图。由于随机森林固有的随机性,给定壳权重值的贡献会有所不同。但如下图中平滑的黑色趋势线所示,这种上升趋势仍然存在。就像在决策树上一样,我们可以看到随着壳重量的增加,贡献也越来越大。图8:贡献与壳权重(随机森林)一样,我们还可以看到复杂的非单调趋势。直径贡献似乎在大约0.45处出现下降,在大约0.3和0.6处出现峰值。除此之外,直径与环数之间的关系基本上是递增的。图9:贡献与直径(随机森林)分类我们已经看到,回归树的特征分布是从环的平均值及其在后续分裂中的变化情况得出的。我们可以通过检查每个子集中特定类的观察比例,将其扩展到二项式或多项式分类。特征的贡献是由该特征引起的总比例变化。结合案例解释更容易理解。假设现在我们的目标是预测性别,即鲍鱼是雌性、雄性还是幼体。图10:多分类的决策树路径每个节点有3个值——子集中女性、男性和少年各自的比例。内脏重量为0.1、壳重为0.1的鲍鱼属于最左边的叶节点(概率分别为0.082、0.171和0.747)。适用于回归树的相同贡献逻辑也适用于此。如果这个特定的鲍鱼是幼体,那么内脏重量的贡献是:(0.59-0.315)=0.275壳重的贡献是:(0.747-0.59)=0.157我们可以为每个类别绘制一个贡献图。下面我们展示了幼虫类别的贡献图。图11:使用小提琴图(多类决策树)为幼虫观察绘制的贡献。和以前一样,我们还可以绘制每个类别的贡献与特征。壳重对鲍鱼雌性的贡献随着壳重的增加而增大,而对鲍鱼为幼体的贡献随着壳重的增加而减小。对于雄性,壳重的贡献在壳重超过0.5后先增大后减小。图12:每个类的贡献与shell权重(随机森林)结论在这篇文章中,我们展示了通过查看路径可以更深入地了解决策树和随机森林。这对于随机森林特别有用,随机森林是一种非常并行且通常是高性能的机器学习模型。为了满足Pivotal客户的业务需求,我们不仅需要提供具有高预测能力的模型,还需要提供可解释的模型。也就是说,无论效果如何,我们都不想给他们一个黑匣子。在与政府和金融领域的客户开展业务时,这是一项重要要求,因为我们的模型需要通过合规性检查。附加的小提琴图基础小提琴图是一种绘制数字数据的方法,它与箱线图非常相似,但还显示了分布的概率密度。我们先来理解箱线图:上图中的这组数据表明:最小值等于5,***值等于10,平均值为8,下四分位数为7,即是***四分位数(Q1)。等于样本中所有值从小到大排列后的第25个百分位值。中位数为8.5,即第二个四分位数(Q2),等于样本中所有值按升序排列的第50个百分位数。上四分位数为9,即第三个四分位数(Q3),等于样本中所有值按升序排列的第75个百分位数。四分位距为2(即ΔQ=Q3-Q1)。以上是箱线图的基本参数,箱线图仅显示均值/中位数和四分位距等汇总统计量,小提琴图显示数据的完整分布。小提琴图总结了箱线图所表达的统计数据:上图中的白点代表中位数灰色矩形代表Q3和Q1之间的四分位数范围灰色线代表95%置信区间两侧的灰色曲线代表内核密度估计,显示数据分布的形状。其中,两侧距离较宽的曲线段表示样本总体取给定值的概率较高,曲线段较窄表示取给定值的概率较小。原文:http://engineering.pivotal.io/post/interpreting-decision-trees-and-random-forests/:almosthuman2014)”]点此阅读作者更多好文