主要内容

解释机器学习模型

这个话题介绍了统计和机器学习工具箱™特性模型解释和显示了如何解释一个机器学习模型(分类和回归)。

机器学习模型通常被称为“黑盒”模式,因为它很难理解该模型预测。可解释性工具可以帮助您克服这方面的机器学习算法,揭示如何预测贡献(或不贡献)预测。同样,你可以验证是否预测模型使用正确的证据,并找到模型偏差不会立即显现。

功能模型的解释

使用石灰,沙普利,plotPartialDependence解释个人预测的贡献一个训练有素的预测分类或回归模型。

  • 石灰——当地可判断的model-agnostic解释(石灰[1])解释为查询一个预测点要安装一个简单的解释模型查询点。训练有素的简单的模型作为一个近似模型和解释模型预测在查询点。简单的模型可以是一个线性模型或决策树模型。您可以使用一个线性模型的估计系数估计或预测的重要性,决策树模型来解释个人的贡献预测查询的预测点。更多细节,请参阅石灰

  • 沙普利——夏普利值[2][3]查询点的预测解释预测的偏差(响应回归或类分数分类)查询点的平均预测,由于预测。查询点,沙普利值之和所有功能对应的总偏差预测的平均水平。更多细节,请参阅沙普利值机器学习模型

  • plotPartialDependencepartialDependence——部分依赖图(PDP[4])显示预测之间的关系(或一对预测)和预测(响应回归或类分数分类)的训练模式。部分依赖于所选指标被定义为平均预测获得的边缘化其他变量的影响。因此,部分依赖是一个函数的选择预测显示所选的平均效应预测数据集。您还可以创建一组个人条件期望(冰[5])为每个观察情节,显示选中的效果预测在一个观察。更多细节,请参阅更多关于plotPartialDependence参考页面。

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

  • 火车一个合奏(ClassificationBaggedEnsembleRegressionBaggedEnsemble袋装的)决策树(例如,随机森林)和使用predictorImportanceoobPermutedPredictorImportance功能。

  • 线性模型与套索正规化训练,收缩系数的最重要的预测因子。然后使用估计系数作为预测措施的重要性。例如,使用fitclinearfitrlinear并指定“正规化”名称-值参数为“套索”

的机器学习模型,支持嵌入式特征选择,明白了金宝app嵌入式特征选择

使用统计和机器学习的工具箱功能三个层次的模型解释:本地队列,和全球。

水平 客观的 用例 统计和机器学习工具箱功能
当地的解释 解释为一个查询点预测。
  • 识别个人预测的重要预测因子。

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

使用石灰沙普利指定的查询点。
队列的解释 解释一个训练有素的模型使得预测整个数据集的子集。 验证预测特定的样本。
  • 使用石灰沙普利多个查询点。在创建一个石灰沙普利对象,您可以调用函数对象适合多次解释预测其他查询点。

  • 通过数据时调用的一个子集石灰,沙普利,plotPartialDependence。功能解释训练模型使用指定的子集,而不是整个训练数据集。

全球的解释 解释一个训练有素的模型使得预测对整个数据集。
  • 演示培训模式是如何运作的。

  • 比较不同模型。

  • 使用plotPartialDependence创建pdp和冰情节感兴趣的预测因子。

  • 找到一个训练模型,支持重要的预测因子金宝app嵌入式特征选择

解释分类模型

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

合奏训练分类模型

加载CreditRating_Historical数据集,数据集包含客户id和他们的财务比率,行业标签,信用评级。

台= readtable (“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 = templateTree (“复制”,真正的);黑箱= fitcensemble (tblX tbl.Rating,“方法”,“包”,“学习者”t“CategoricalPredictors”,“行业”,“类名”,{“AAA”“AA”“一个”“BBB”“BB”“B”“CCC”});

黑箱是一个ClassificationBaggedEnsemble模型。

使用模型相关的可解释性特性

ClassificationBaggedEnsemble金宝app支持两种对象的功能,oobPermutedPredictorImportancepredictorImportance,发现训练模型的重要预测因子。

估计out-of-bag预测的重要性oobPermutedPredictorImportance函数。函数随机排列out-of-bag数据在一个可预测,并估计增加out-of-bag错误由于这种排列。增加越大,越重要的特性。

Imp1 = oobPermutedPredictorImportance(黑箱);

估计预测的重要性predictorImportance函数。由加法函数估计预测重要性的变化节点由于分裂每个预测和风险之和除以分支节点的数量。

Imp2 = predictorImportance(黑箱);

创建一个表包含预测估计,重要性和使用表格来创建单杠图。显示现有的强调在任何预测的名字,改变TickLabelInterpreter轴的价值“没有”

table_Imp =表(Imp1’, Imp2’,“VariableNames”,{“Out-of-Bag排列预测的重要性,“预测的重要性”},“RowNames”,blackbox.PredictorNames);ax₁= nexttile tiledlayout (1、2);table_Imp1 = sortrows (table_Imp,“Out-of-Bag排列预测的重要性);barh(分类(table_Imp1.Row table_Imp1.Row) table_Imp1。(“Out-of-Bag排列预测的重要性)包含(“Out-of-Bag排列预测的重要性)ylabel (“预测”)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 (tbl.Rating,“AAA”):);queryPoint = datasample (tblX_AAA 4“替换”假)
queryPoint =4×6表WC_TA RE_TA EBIT_TA MVE_BVTD S_TA行业_____ _____和______ _____ ________ 12 0.331 0.531 0.077 7.116 0.522 0.26 0.515 0.065 3.394 0.515 1 12 0.121 0.413 0.057 3.647 0.466 0.617 0.766 0.126 4.442 0.483 9

使用石灰与简单线性模型

解释查询的预测点使用石灰用线性的简单模型。石灰生成一个合成数据集和适合一个简单的模型合成数据集。

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

explainer_lime =石灰(黑箱,tblX_AAA);

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

适合简单的模型四个查询点通过使用目标函数适合。指定第三个输入(重要预测因子的数量用简单的模型)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) ax₁= nexttile;情节(explainer_lime1);ax2 = nexttile;情节(explainer_lime2);ax3 = nexttile;情节(explainer_lime3);大举裁员= nexttile;情节(explainer_lime4);ax₁。TickLabelInterpreter =“没有”;ax2。TickLabelInterpreter =“没有”;ax3。TickLabelInterpreter =“没有”;大举裁员。TickLabelInterpreter =“没有”;

所有简单的模型识别EBIT_TA,RE_TA,MVE_BVTD三个最重要的预测因子。积极的系数的预测表明,增加了预测的值会导致增加预测分数在简单的模型。

分类预测,情节功能只显示最重要的哑变量的分类预测。因此,每一个条形图显示一个不同的哑变量。

计算夏普利值

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

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

计算查询的夏普利值点通过使用目标函数适合

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

沙普利值通过使用目标函数的阴谋情节

tiledlayout (2, 2) ax₁= nexttile;情节(explainer_shapley1) ax2 = nexttile;情节(explainer_shapley2) ax3 = nexttile;情节(explainer_shapley3)大举裁员= nexttile;情节(explainer_shapley4) ax₁。TickLabelInterpreter =“没有”;ax2。TickLabelInterpreter =“没有”;ax3。TickLabelInterpreter =“没有”;大举裁员。TickLabelInterpreter =“没有”;

MVE_BVTDRE_TA是三个最重要的两个因素为所有四个查询点。

的夏普利值MVE_BVTD是第一和第四查询点,积极和消极的第二个和第三个查询点。的MVE_BVTD值是7和4第一和第四查询点,分别第二个和第三个查询点的值约为3.5。根据四个查询的夏普利值点,一个大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的数据集,其中包含测量汽车在1970年代末和1980年代初。

负载carbig

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

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

火车的探地雷达模型响应变量英里/加仑通过使用fitrgp函数。指定“KernelFunction”作为“ardsquaredexponential”使用方每预测指数内核与一个单独的长度尺度。

黑箱= fitrgp (MPG(资源,“ResponseName”,“英里”,“CategoricalPredictors”(2 - 5),“KernelFunction”,“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 =“没有”;包含(“预测体重”)ylabel (“预测”)

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

指定查询点

找到的观察英里/加仑分位数的值小于0.25英里/加仑。的子集,选择四个查询点,不包括缺失值。

rng (“默认”)%的再现性idx_subset =找到(MPG <分位数(MPG, 0.25));tbl_subset =(资源(idx_subset:);queryPoint = datasample (rmmissing (tbl_subset), 4,“替换”假)
queryPoint =4×6表加速汽缸位移马力Model_Year重量_______ _____ _______ __________ __________ ______ 13.2 8 318 150 76 3940 14.9 8 302 130 77 4295 318 8 360 215 70 4615 13.7 8 145 77 4140

使用石灰树的简单模型

解释查询的预测点使用石灰与决策树的简单模型。石灰生成一个合成数据集和适合一个简单的模型合成数据集。

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

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

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

适合简单的模型四个查询点通过使用目标函数适合。指定第三个输入(重要预测因子的数量用简单的模型)为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) ax₁= nexttile;情节(explainer_lime1);ax2 = nexttile;情节(explainer_lime2);ax3 = nexttile;情节(explainer_lime3);大举裁员= nexttile;情节(explainer_lime4);ax₁。TickLabelInterpreter =“没有”;ax2。TickLabelInterpreter =“没有”;ax3。TickLabelInterpreter =“没有”;大举裁员。TickLabelInterpreter =“没有”;

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

计算夏普利值

的夏普利值预测查询点解释查询的响应预测点的偏差从平均响应,由于预测。创建一个沙普利为模型对象黑箱使用tbl_subset沙普利基于观察计算预期的贡献tbl_subset

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

计算查询的夏普利值点通过使用目标函数适合

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

沙普利值通过使用目标函数的阴谋情节

tiledlayout (2, 2) ax₁= nexttile;情节(explainer_shapley1) ax2 = nexttile;情节(explainer_shapley2) ax3 = nexttile;情节(explainer_shapley3)大举裁员= nexttile;情节(explainer_shapley4) ax₁。TickLabelInterpreter =“没有”;ax2。TickLabelInterpreter =“没有”;ax3。TickLabelInterpreter =“没有”;大举裁员。TickLabelInterpreter =“没有”;

Model_Year是最重要的因素为第一、第二、第四查询点,和的夏普利值吗Model_Year三个查询点的是积极的。的Model_Year值为76或77这三个点,和第三个查询点的值是70。根据四个查询的夏普利值点,一个小Model_Year值会导致减少预测的反应,和一个大Model_Year值会导致增加预测响应相对于平均水平。

创建部分依赖图(PDP)

PDP图显示了平均预测之间的关系和预测反应训练模型。创建PDPModel_Year,其他的可解释性工具识别作为一种重要的预测指标。通过tbl_subsetplotPartialDependence这样的函数计算预测的期望响应只使用样品tbl_subset

图plotPartialDependence(黑盒,“Model_Year”tbl_subset)

情节展示了同样的趋势被四个查询的夏普利值点。预测的响应(英里/加仑)值的增加Model_Year价值增加。

引用

[1]里贝罗,马可杜立欧,辛格(manmohan Singh)和c . Guestrin。“我为什么要相信你?:解释任何分类器的预测。”22日ACM SIGKDD国际研讨会论文集知识发现和数据挖掘,1135 - 44。旧金山,加利福尼亚州:ACM, 2016。

[2]Lundberg,斯科特·M。李,美国。“一个统一的方法来解释模型的预测”。先进的神经信息处理系统30 (2017):4765 - 774。

[3]Aas, Kjersti,马丁。Jullum,安德斯Løland。“解释个人预测当依赖特性:更精确的近似夏普利值。”arXiv: 1903.10464(2019)。

[4]弗里德曼,杰罗姆。h .“贪婪的近似函数:一个梯度增加机器”。统计年报29日,没有。5 (2001):1189 - 1232。

[5]戈尔茨坦,亚历克斯,亚当Kapelner,贾斯汀布莱西,埃米尔皮特金。“偷看里面的黑盒:可视化统计学习与个人条件期望的情节。”计算和图形统计杂志》上24日,没有。1(2015年1月2日):44 - 65。

另请参阅

||

相关的话题