主要内容

解释机器学习模型

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

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

特点为模特演绎

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

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

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

  • plotPartialDependencepartialDependence-部分相关图(PDP)[4])示出了预测器(或一对预测的)和预测(响应用于训练的模型回归或类分数分类用)之间的关系。所选择的预测器的部分依赖性由通过边缘化出其他变量的影响得到的平均预测限定。因此,部分依赖是所选择的预测器的一个函数,它示出了对数据集所选择的预测器的平均效果。您还可以创建一组单独的条件期望(ICE[5])图,显示所选预测因子对单个观测结果的影响。有关详细信息,请参见更多关于plotPartialDependence参考页面。

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

  • 训练全体人员(ClassificationBaggedensemble.RegressionBaggedEnsemble)袋装决策树(例如,随机森林的),并使用predictorImportanceoobPermutedPredictorImportance功能。

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

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

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

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

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

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

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

环球解释 说明训练模型如何为整个数据集的预测。
  • 演示训练模型是如何工作的。

  • 比较不同的模型。

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

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

解释分类模型

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

列车分类集成模型

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

台= readtable (“信用评级历史数据”);

显示表的前三行。

头(资源描述,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”“评级”]);

通过火车袋装决策树的合奏菲特森布尔函数,并将集合聚合方法指定为随机林('包').对于随机森林算法的再现性,请指定“可复制”名称-值参数为真正的树的学习者。另外,指定类名以设置训练模型中类的顺序。

rng (“默认”重复性的%t = templateTree (“可复制”,真);黑盒=fitcensemble(tblX,tbl.额定值,...“方法”'包'“学习者”,T,...“CategoricalPredictors”“行业”...“类名”, {“AAA”“AA”“A”'BBB'“BB”“B”'CCC'});

黑箱是A.ClassificationBaggedensemble.模型

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

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

通过使用估算出的袋预测的重要性oobPermutedPredictorImportance函数。该函数每次在一个预测器上随机地对包外数据进行置换,并估计由于这种置换而导致的包外误差的增加。增加的越多,功能就越重要。

Imp1 = oobPermutedPredictorImportance(黑箱);

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

Imp2=预测重要性(黑盒);

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

表_Imp=表(Imp1',Imp2',...“变化无常”, {“走出球袋轮排的预测变量重要性”“预测的重要性”},...“RowNames”,blackbox.PredictorNames);tiledlayout(1,2)AX1 = nexttile;table_Imp1 =调用sortRows(table_Imp,“走出球袋轮排的预测变量重要性”);barh(分类(table_Imp1.Row table_Imp1.Row) table_Imp1。(“走出球袋轮排的预测变量重要性”)包含(“走出球袋轮排的预测变量重要性”) ylabel (“预测”)ax2=nexttile;表2=sortrows(表2),“预测的重要性”);barh(分类(table_Imp2.Row table_Imp2.Row) table_Imp2。(“预测的重要性”)包含(“预测的重要性”ax₁。TickLabelInterpreter =“没有”;ax2。TickLabelInterpreter =“没有”

两个对象函数都确定MVE_BVTDRE_TA作为两个最重要的预测指标。

指定查询点

找出观察结果评级“AAA”并从中选择四个查询点。

tblX_AAA = tblX (strcmp(资源描述。评级,“AAA”):);queryPoint = datasample (tblX_AAA 4“替换”假)
queryPoint =4×6表WC_TA RE_TA EBIT_TA MVE_BVTD S_TA工业_____ _____ _______ ________ _____ ________ 0.331 0.531 0.077 7.116 0.522 12 0.26 0.515 0.065 3.394 0.515 0.121 1 0.413 0.057 3.647 0.466 0.617 12 0.766 0.126 4.442 0.483 9

使用LIME与线性简单模型

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

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

explainer_lime =石灰(黑箱,tblX_AAA);

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

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

解释者lime1=fit(解释者lime,查询点(1,:),6);解释者lime2=fit(解释者lime,查询点(2,:),6);解释者lime3=fit(解释者lime,查询点(3,:),6);解释者lime4=fit(解释者lime,查询点(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。TickLabelInterpreter =“没有”; ax4.1滴答滴答滴答滴答滴答滴答滴答滴答滴答滴答滴答滴答滴答滴答滴答滴答滴答滴答滴答滴答滴答滴答滴答滴答滴答滴答滴答=“没有”

所有简单的模型都可以识别EBIT_TARE_TA,MVE_BVTD作为三个最重要的预测因素。预测因子的正系数表明,增加预测因子值会导致简单模型中预测得分的增加。

对于分类预测因子情节函数只显示分类预测器中最重要的虚拟变量。因此,每个柱状图都显示了一个不同的哑变量。

计算夏普利值

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

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

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

explainer_shapley1=fit(explainer_shapley,queryPoint(1,:);explainer_-shapley2=fit(explainer_-shapley,queryPoint(2,:);explainer_shapley 3=拟合(explainer_shapley,查询点(3,:);explainer_shapley4=fit(explainer_shapley,queryPoint(4,:);

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

nexttile plot(explainer_shapley1) nexttile plot(explainer_shapley2) nexttile plot(explainer_shapley3) nexttile plot(explainer_shapley4)

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

的沙普利值MVE_BVTD第一个和第四个查询点为正,第二个和第三个查询点为负MVE_BVTD值在约分别用于第一和第四查询分,7和4,以及用于在第二和第三查询点两者的值是约3.5。根据四个查询点的沙普利值,大MVE_BVTD值会导致预测分数的增加,且较小MVE_BVTD值导致相比,平均在预测分数的降低。结果是从结果一致石灰

创建部分依赖图(PDP)

PDP图显示预测值和训练模型中预测分数之间的平均关系。为RE_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数据集,其中包含在上世纪70年代和80年代初制造的汽车的测量。

负载carbig

创建一个包含预测变量表加速度气瓶, 等等

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

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

黑箱= fitrgp(TBL,MPG,“ResponseName”“英里”“CategoricalPredictors”(2 - 5),...“KernelFunction”'ardsquaredexponential');

黑箱是A.RegressionGP模型

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

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

sigmaL=blackbox.KernelInformation.KernelParameters(1:end-1);%据悉长度尺度权重=exp(-sigmaL);%预测的权重重量=重量/笔(重量);%归一化预测权重

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

tbl_weight =表(重量,“变化无常”, {“预测体重”},...“RowNames”,blackbox.expandedPredictor名称);tbl_重量=sortrows(tbl_重量,“预测体重”);b = barh(分类(tbl_weight.Row tbl_weight.Row) tbl_weight。(“预测体重”));b.Parent.TickLabelInterpreter =“没有”;xlabel(“预测体重”) ylabel (“预测”

预测器权值表明分类预测器存在多个虚拟变量Model_Year气瓶这些都很重要。

指定查询点

找出观察结果MPG.值小于0.25分位数MPG..从子集中选择四个不包含缺失值的查询点。

rng (“默认”重复性的%idx_子集=查找(MPG<分位数(MPG,0.25));tbl_子集=tbl(idx_子集,:);查询点=数据样本(rmmissing(tbl_子集),4,“替换”假)
queryPoint =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

使用石灰树简单模型

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

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

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

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

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

解释者lime1=fit(解释者lime,查询点(1,:),6);解释者lime2=fit(解释者lime,查询点(2,:),6);解释者lime3=fit(解释者lime,查询点(3,:),6);解释者lime4=fit(解释者lime,查询点(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。TickLabelInterpreter =“没有”; ax4.1滴答滴答滴答滴答滴答滴答滴答滴答滴答滴答滴答滴答滴答滴答滴答滴答滴答滴答滴答滴答滴答滴答滴答滴答滴答滴答滴答=“没有”

所有简单的模型都可以识别移位Model_Year,重量作为重要的预测。

计算夏普利值

查询点预测器的Shapley值解释了由于该预测器,查询点的预测响应与平均响应的偏差。创建沙普利模型的对象黑箱使用tbl_subset因此沙普利根据中的观察值计算预期贡献tbl_subset

解释者_shapley=shapley(黑盒,tbl_子集);

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

explainer_shapley1=fit(explainer_shapley,queryPoint(1,:);explainer_-shapley2=fit(explainer_-shapley,queryPoint(2,:);explainer_shapley 3=拟合(explainer_shapley,查询点(3,:);explainer_shapley4=fit(explainer_shapley,queryPoint(4,:);

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

nexttile plot(explainer_shapley1) nexttile plot(explainer_shapley2) nexttile plot(explainer_shapley3) nexttile plot(explainer_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)

该图显示了四个查询点由沙普利标识相同的趋势值。预测响应(MPG.)值随着时间的推移而增加Model_Year价值增加。

参考文献

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

[2] 解释模型预测的统一方法在神经信息处理系统的进步30 (2017): 4765–774.

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

[4] 贪婪函数近似:梯度提升机统计年鉴29,不。5(2001):1189至1232年。

[5] 戈尔茨坦、亚历克斯、亚当·卡佩尔纳、贾斯汀·布莱奇和埃米尔·皮特金,《窥视黑匣子:用个人条件期望图可视化统计学习》计算和图形统计杂志24日,没有。1(2015年1月2日):44-65。

另请参阅

||

相关话题