主要内容

解释机器学习模型

本主题介绍统计学和机器学习工具箱™ 模型解释功能,并展示如何解释机器学习模型(分类和回归)。

机器学习模型通常被称为“黑箱”模型,因为很难理解模型是如何进行预测的。可解释性工具可帮助您克服机器学习算法的这一方面,并揭示预测因子是如何起作用(或不起作用)的此外,您还可以验证模型是否使用了正确的预测证据,并找到不立即明显的模型偏差。

模型解释的特点

使用石灰沙普利plotPartialDependence解释个体预测因子对经过训练的分类或回归模型的预测的贡献。

  • 石灰-局部可解释的模型不可知解释(LIME)[1])通过拟合查询点的简单可解释模型来解释查询点的预测。简单模型充当训练模型的近似值,并解释查询点周围的模型预测。简单模型可以是线性模型或决策树模型。您可以使用线性模式的估计系数l或决策树模型的估计预测器重要性,以解释单个预测器对查询点预测的贡献。有关更多详细信息,请参阅石灰

  • 沙普利- Shapley值[2][3]查询点的预测值解释了查询点的预测值(回归响应或分类分数)与平均预测值的偏差,这是由于预测值造成的。对于查询点,所有特征的Shapley值之和对应于预测与平均值的总偏差。有关详细信息,请参阅机器学习模型的Shapley值

  • plotPartialDependence部分依赖-部分依赖图(PDP)[4])显示了训练模型中一个预测器(或一对预测器)和预测(回归反应或分类得分)之间的关系。对所选预测器的偏依赖定义为通过剔除其他变量的影响而得到的平均预测。因此,部分依赖是选定预测器的函数,显示选定预测器对数据集的平均效果。您还可以创建一组单独的条件期望(ICE[5])每个观察的曲线图,显示所选预测值对单个观察的影响。有关更多详细信息,请参阅更多关于plotPartialDependence参考页面。

一些机器学习模型支持嵌入式类型特征选择,其中模型学习预测器金宝app的重要性作为模型学习过程的一部分。您可以使用估计的预测器重要性来解释模型预测。例如:

  • 训练全体人员(ClassificationBaggedEnsemble回归分析)的集合决策树(例如,随机森林),并使用predictorImportanceoobPermutedPredictorImportance功能。

  • 用拉索正则化训练线性模型,它缩小了最不重要的预测因子的系数。然后使用估计系数作为预测重要性的度量。例如,使用fitclinearfitrlinear并指定“正规化”将值参数命名为“套索”

有关支持嵌入式类型特征选择的机器学习模型列表,请参见金宝app嵌入式类型特征选择

使用统计学和机器学习工具箱功能进行三个层次的模型解释:局部、队列和全局。

水平 客观的 用例 统计和机器学习工具箱功能
当地的解释 解释单个查询点的预测。
  • 为单个预测确定重要的预测因素。

  • 检验一个违反直觉的预测。

使用石灰沙普利查询指定的查询点。
队列的解释 解释一个训练过的模型是如何对整个数据集的一个子集进行预测的。 验证特定样本组的预测。
  • 使用石灰沙普利用于多个查询点。在创建一个石灰沙普利对象时,可以调用对象函数适合多次来解释其他查询点的预测。

  • 调用时传递数据子集石灰沙普利plotPartialDependence.特征使用指定的子集而不是整个训练数据集解释训练模型。

全球的解释 解释一个训练过的模型是如何对整个数据集进行预测的。
  • 演示一个训练过的模型如何工作。

  • 比较不同模型。

  • 使用plotPartialDependence为感兴趣的预测器创建pdp和ICE图。

  • 从一个训练有素的模型中找到重要的预测器金宝app嵌入式类型特征选择

解释分类模型

本例使用随机森林算法训练袋装决策树集合,并使用可解释性特征解释训练后的模型。使用对象函数(oobPermutedPredictorImportancepredictorImportance),以便在模型中找到重要的预测因子。此外,使用石灰沙普利解释指定查询点的预测。然后使用plotPartialDependence创建一个图表,显示一个重要的预测器和预测的分类分数之间的关系。

列车分类集成模型

加载CreditRating_Historical数据集。该数据集包含客户id及其财务比率、行业标签和信用评级。

tbl=可读(“CreditRating_Historical.dat”);

显示表的前三行。

头(资源描述,3)
ans =3×8表ID WC_TA RE_TA EBIT_TA MVE_BVTD S_TA行业评级  _____ _____ _____ _______ ________ _____ ________ ______ 62394 0.013 0.104 0.036 0.447 0.142 3{“BB”}48608 0.232 0.335 0.062 1.969 0.281 8 {A} 42444 0.311 0.367 0.074 1.935 0.366 1 {A}

通过删除包含客户id和评级的列来创建一个预测器变量表资源描述

tblX = removevars(资源描述,“ID”“评级”]);

使用的方法训练袋装决策树集合fitcensemble函数,并指定集合聚合方法为随机森林(“包”).为保证随机森林算法的重现性,请指定“复制”将值参数命名为符合事实的对于树学习器。另外,指定类名以设置训练模型中类的顺序。

rng (“默认”)%的再现性t=模板树(“复制”,真正的);黑箱= fitcensemble (tblX,资源描述。评级,...“方法”“包”“学习者”t...“CategoricalPredictors”“行业”...“类名”,{“AAA”“AA”“一个”“BBB”“BB”“B”“CCC”});

黑匣子是一个ClassificationBaggedEnsemble模型。

使用特定于模型的可解释性特性

ClassificationBaggedEnsemble金宝app支持两个对象函数,oobPermutedPredictorImportancepredictorImportance,在训练模型中找到重要的预测因子。

估计包外预测的重要性使用oobPermutedPredictorImportance函数。该函数一次在一个预测器上随机排列行李外数据,并估计由于这种排列而导致的行李外误差的增加。增加的幅度越大,特征越重要。

Imp1=oobPermited重要性(黑盒);

通过使用predictorImportance函数。该函数通过对每个预测器的分裂导致的节点风险变化进行求和,并除以分支节点的数量来估计预测器的重要性。

Imp2 = predictorImportance(黑箱);

创建一个包含预测器重要性估计的表,并使用该表创建水平条形图。要在任何预测器名称中显示现有的下划线,请更改TickLabelInterpreter轴到的值“没有”

table_Imp =表(Imp1’,Imp2’,...“VariableNames”,{“out - bag perised Predictor Importance”“预测的重要性”},...“RowNames”, blackbox.PredictorNames);Tiledlayout (1,2) ax1 = nexttile;table_Imp1 = sortrows (table_Imp,“out - bag perised Predictor Importance”);barh(分类(table_Imp1.Row table_Imp1.Row) table_Imp1。(“out - bag perised Predictor Importance”)包含(“out - bag perised Predictor Importance”)伊拉贝尔(“预测”) ax2 = nexttile;table_Imp2 = sortrows (table_Imp,“预测的重要性”);barh(分类(table_Imp2.Row table_Imp2.Row) table_Imp2。(“预测的重要性”)包含(“预测的重要性”ax₁。TickLabelInterpreter =“没有”;ax2。TickLabelInterpreter =“没有”

两个目标函数都可以识别MVE_BVTDRE_TA作为两个最重要的预测因素。

指定查询点

找出那些评级“AAA”并从中选择四个疑点。

tblX_AAA=tblX(strcmp)(待定等级,“AAA”),:); 查询点=数据样本(tblX_AAA,4,“替换”,错)
查询点=4×6表WC_TA RE_TA EBIT_TA MVE_BVTD S_TA Industry _____ _____ _______ ________ _____ ________ 0.331 0.531 0.077 7.116 0.522 12 0.26 0.515 0.065 3.394 0.515 1 0.121 0.413 0.057 3.647 0.466 12 0.617 0.766 0.126 4.442 0.483 9

使用LIME与线性简单模型

使用。解释查询点的预测石灰线性简单模型。石灰生成合成数据集并将简单模型拟合到合成数据集。

创建一个石灰对象使用tblX_AAA石灰生成一个合成数据集,仅使用其评级“AAA”,而不是整个数据集。

解释者_石灰=石灰(黑盒,tblX_AAA);

的默认值数据位置石灰“全球”,这意味着默认情况下,石灰生成全局合成数据集,并将其用于任何查询点。石灰使用不同的观察权重,以便权重值更关注查询点附近的观察。因此,您可以将每个简单模型解释为特定查询点的训练模型的近似。

使用对象函数拟合四个查询点的简单模型适合.将第三个输入(简单模型中使用的重要预测值的数量)指定为6,以使用所有六个预测值。

explainer_lime1 =适合(explainer_lime queryPoint (1:), 6);explainer_lime2 =适合(explainer_lime queryPoint (2:), 6);explainer_lime3 =适合(explainer_lime queryPoint (3:), 6);explainer_lime4 =适合(explainer_lime queryPoint (4:), 6);

使用目标函数绘制简单模型的系数情节

Tiledlayout (2,2) ax1 = nexttile;情节(explainer_lime1);ax2 = nexttile;情节(explainer_lime2);ax3 = nexttile;情节(explainer_lime3);大举裁员= nexttile;情节(explainer_lime4);ax₁。TickLabelInterpreter =“没有”;ax2。TickLabelInterpreter =“没有”; ax3.1滴答滴答滴答滴答滴答滴答滴答滴答滴答滴答滴答滴答滴答滴答滴答滴答滴答滴答滴答滴答滴答滴答滴答滴答滴答滴答滴答滴答滴答滴答滴答滴答=“没有”;大举裁员。TickLabelInterpreter =“没有”

所有的简单模型都确定息税前利润RE_TAMVE_BVTD作为三个最重要的预测因素。预测因子的正系数表明,增加预测因子值会导致简单模型中预测得分的增加。

对于一个绝对预测器来说情节函数只显示分类预测器中最重要的虚拟变量。因此,每个条形图显示不同的虚拟变量。

计算夏普利值

查询点的预测器的Shapley值解释了由于预测器导致的查询点的预测分数与平均分数的偏差。创建一个沙普利对象使用tblX_AAA沙普利计算的基于样本的预期贡献“AAA”

explainer_shapley =沙普利(黑箱,tblX_AAA);

使用对象函数计算查询点的Shapley值适合

explainer_shapley1 =适合(explainer_shapley queryPoint (1:));explainer_shapley2 =适合(explainer_shapley queryPoint (2:));explainer_shapley3 =适合(explainer_shapley queryPoint (3:));explainer_shapley4 =适合(explainer_shapley queryPoint (4:));

使用对象函数绘制Shapley值情节

平铺布局(2,2)下一个小图(解释者\u shapley1)下一个小图(解释者\u shapley2)下一个小图(解释者\u shapley3)下一个小图(解释者\u shapley4)

MVE_BVTDRE_TA是所有四个查询点的三个最重要的预测器中的两个。

Shapley值MVE_BVTD第一个和第四个查询点为正,第二个和第三个查询点为负。的MVE_BVTD第一个和第四个查询点的值分别约为7和4,第二个和第三个查询点的值均约为3.5。根据Shapley值为四个查询点,一个大MVE_BVTD该值会导致预测分数增加,并且MVE_BVTD值会导致预测分数低于平均值。结果与来自石灰

创建部分依赖图(PDP)

PDP图显示了在训练模型中预测器和预测分数之间的平均关系。创建pdpRE_TAMVE_BVTD,其他可解释性工具将其视为重要的预测因素。通过tblx_AAAplotPartialDependence所以这个函数计算预测分数的期望只使用样本“AAA”

图plotPartialDependence(黑盒,“RE_TA”“AAA”tblX_AAA)

plotPartialDependence(黑盒,“MVE_BVTD”“AAA”tblX_AAA)

小的滴答声x-轴表示中预测器的唯一值tbl_AAA.的情节MVE_BVTD表明预测得分较大时MVE_BVTD价值很小。分数值随着MVE_BVTD值增加到5左右,然后得分值保持不变MVE_BVTD价值增加。依赖于MVE_BVTD在子集中tbl_AAA确认的plotPartialDependence与本地的贡献不一致吗MVE_BVTD在四个查询点石灰沙普利

解释回归模型

回归问题的模型解释工作流类似于分类问题的工作流,如示例所示解释分类模型

本例训练高斯过程回归(GPR)模型,并使用可解释性特征解释训练后的模型。使用探地雷达模型的核参数来估计预测权重。此外,使用石灰沙普利解释指定查询点的预测。然后使用plotPartialDependence创建一个图表,显示一个重要的预测器和预测的反应之间的关系。

训练探地雷达模型

加载carbig数据集,其中包含20世纪70年代和80年代初生产的汽车的测量数据。

负载carbig

创建一个包含预测变量的表加快气缸,等等

台=表(加速度、汽缸、排量、马力、Model_Year重量);

训练响应变量的GPR模型英里/加仑通过使用fitrgp函数。指定“内核函数”作为“ardsquaredexponential”使用平方指数核与一个独立的长度尺度每个预测器。

黑箱= fitrgp (MPG(资源,“ResponseName”“英里”“CategoricalPredictors”(2 - 5),...“内核函数”“ardsquaredexponential”);

黑匣子是一个RegressionGP模型。

使用特定于模型的可解释性特性

您可以从模型中使用的核函数的长度尺度中计算预测器权重(预测器重要性)。长度尺度定义了预测器之间的距离,可以使响应值变得不相关。通过取负学习长度尺度的指数来找到归一化的预测权重。

sigmaL = blackbox.KernelInformation.KernelParameters (1: end-1);学会长度标度重量= exp (-sigmaL);%预测权重权重=权重/总和(权重);归一化预测权重

创建一个包含标准化预测器权重的表,并使用该表创建水平条形图。要在任何预测器名称中显示现有的下划线,请更改TickLabelInterpreter轴到的值“没有”

tbl_weight =表(重量、“VariableNames”,{“预测体重”},...“RowNames”, blackbox.ExpandedPredictorNames);tbl_weight = sortrows (tbl_weight,“预测体重”);b = barh(分类(tbl_weight.Row tbl_weight.Row) tbl_weight。(“预测体重”));b.Parent.TickLabelInterpreter =“没有”;包含(“预测体重”)伊拉贝尔(“预测”)

预测器权重表示分类预测器的多个虚拟变量Model_Year气缸是很重要的。

指定查询点

找出那些英里/加仑值小于的0.25分位数英里/加仑.从子集中选择四个不包含缺失值的查询点。

rng (“默认”)%的再现性idx_子集= find(MPG <分位数(MPG,0.25));tbl_subset =(资源(idx_subset:);queryPoint = datasample (rmmissing (tbl_subset), 4,“替换”,错)
查询点=4×6表加速气瓶排量马力Model_Year重量____________ _________ ____________ __________ __________ ______ 13.2 8 318 150 76 3940 14.9 8 302 130 77 4295 14 8 360 215 70 4615 13.7 8 318 145 77 4140

使用LIME与树简单模型

使用。解释查询点的预测石灰用决策树的简单模型。石灰生成合成数据集并将简单模型拟合到合成数据集。

创建一个石灰对象使用tbl_subset石灰使用子集而不是整个数据集生成合成数据集。指定“SimpleModelType”作为“树”使用决策树的简单模型。

tbl_subset explainer_lime =石灰(黑盒,“SimpleModelType”“树”);

的默认值数据位置石灰“全球”,这意味着默认情况下,石灰生成全局合成数据集,并将其用于任何查询点。石灰使用不同的观察权重,以便权重值更关注查询点附近的观察。因此,您可以将每个简单模型解释为特定查询点的训练模型的近似。

使用对象函数拟合四个查询点的简单模型适合.将第三个输入(在简单模型中使用的重要预测器的数量)指定为6。在此设置下,软件将决策分割(或分支节点)的最大数量指定为6,以便拟合的决策树最多使用所有预测器。

explainer_lime1 =适合(explainer_lime queryPoint (1:), 6);explainer_lime2 =适合(explainer_lime queryPoint (2:), 6);explainer_lime3 =适合(explainer_lime queryPoint (3:), 6);explainer_lime4 =适合(explainer_lime queryPoint (4:), 6);

利用目标函数绘制预测器的重要性情节

Tiledlayout (2,2) ax1 = nexttile;情节(explainer_lime1);ax2 = nexttile;情节(explainer_lime2);ax3 = nexttile;情节(explainer_lime3);大举裁员= nexttile;情节(explainer_lime4);ax₁。TickLabelInterpreter =“没有”;ax2。TickLabelInterpreter =“没有”; ax3.1滴答滴答滴答滴答滴答滴答滴答滴答滴答滴答滴答滴答滴答滴答滴答滴答滴答滴答滴答滴答滴答滴答滴答滴答滴答滴答滴答滴答滴答滴答滴答滴答=“没有”;大举裁员。TickLabelInterpreter =“没有”

所有的简单模型都确定位移Model_Year重量作为重要的预测因子。

计算夏普利值

查询点的预测器的Shapley值解释了由于预测器导致的查询点的预测响应与平均响应之间的偏差。创建一个沙普利模型的对象黑匣子使用tbl_subset沙普利计算的预期贡献基于观测tbl_subset

explainer_shapley =沙普利(黑箱,tbl_subset);

使用对象函数计算查询点的Shapley值适合

explainer_shapley1 =适合(explainer_shapley queryPoint (1:));explainer_shapley2 =适合(explainer_shapley queryPoint (2:));explainer_shapley3 =适合(explainer_shapley queryPoint (3:));explainer_shapley4 =适合(explainer_shapley queryPoint (4:));

使用对象函数绘制Shapley值情节

平铺布局(2,2)下一个小图(解释者\u shapley1)下一个小图(解释者\u shapley2)下一个小图(解释者\u shapley3)下一个小图(解释者\u shapley4)

Model_Year是第一个、第二个和第四个查询点最重要的预测器,而Model_Year对三个查询点都是正面的。的Model_Year这三个点的值为76或77,第三个查询点的值为70。根据Shapley值为四个查询点,一个小Model_Year值会导致预测响应的降低,并且很大Model_Year值导致预测响应比平均值增加。

创建部分依赖图(PDP)

PDP图显示了在训练模型中预测者和预测反应之间的平均关系。创建PDPModel_Year,其他可解释性工具认为这是一个重要的预测因素。通过tbl_subsetplotPartialDependence所以这个函数只用样本来计算预测响应的期望tbl_subset

图plotPartialDependence(黑盒,“Model_Year”tbl_subset)

该图显示了由Shapley值为四个查询点确定的相同趋势。预测的反应(英里/加仑)的价值增加Model_Year价值增加。

参考文献

[1] Ribeiro, Marco Tulio, S. Singh, C. Guestrin。“‘我为什么要相信你?’:解释任何分类器的预测。”第22届ACM SIGKDD国际知识发现与数据挖掘会议论文集, 1135 - 44。旧金山,加利福尼亚:ACM, 2016。

Lundberg, Scott M和S. Lee。“解释模型预测的统一方法”神经信息处理系统研究进展30(2017): 4765 - 774。

Aas, Kjersti, Martin。朱勒姆和安德斯·洛兰德。解释特征依赖时的个人预测:对Shapley值的更精确的近似arXiv:1903.10464(2019).

[4]弗里德曼,杰罗姆。贪婪函数近似:梯度增压机统计年鉴29日,没有。5(2001): 1189 - 1232。

Goldstein, Alex, Adam Kapelner, Justin Bleich, Emil Pitkin。《黑盒子里的窥视:用个体条件期望图可视化统计学习》计算和图形统计杂志第1期第24期(2015年1月2日):44-65。

另请参阅

||

相关的话题