这个话题介绍了统计和机器学习工具箱™特性模型解释和显示了如何解释一个机器学习模型(分类和回归)。
机器学习模型通常被称为“黑盒”模式,因为它很难理解该模型预测。可解释性工具可以帮助您克服这方面的机器学习算法,揭示如何预测贡献(或不贡献)预测。同样,你可以验证是否预测模型使用正确的证据,并找到模型偏差不会立即显现。
使用石灰
,沙普利
,plotPartialDependence
解释个人预测的贡献一个训练有素的预测分类或回归模型。
石灰
——当地可判断的model-agnostic解释(石灰[1])解释为查询一个预测点要安装一个简单的解释模型查询点。训练有素的简单的模型作为一个近似模型和解释模型预测在查询点。简单的模型可以是一个线性模型或决策树模型。您可以使用一个线性模型的估计系数估计或预测的重要性,决策树模型来解释个人的贡献预测查询的预测点。更多细节,请参阅石灰。
沙普利
——夏普利值[2][3]查询点的预测解释预测的偏差(响应回归或类分数分类)查询点的平均预测,由于预测。查询点,沙普利值之和所有功能对应的总偏差预测的平均水平。更多细节,请参阅沙普利值机器学习模型。
plotPartialDependence
和partialDependence
——部分依赖图(PDP[4])显示预测之间的关系(或一对预测)和预测(响应回归或类分数分类)的训练模式。部分依赖于所选指标被定义为平均预测获得的边缘化其他变量的影响。因此,部分依赖是一个函数的选择预测显示所选的平均效应预测数据集。您还可以创建一组个人条件期望(冰[5])为每个观察情节,显示选中的效果预测在一个观察。更多细节,请参阅更多关于在plotPartialDependence
参考页面。
一些机器学习模型支持嵌入式特征选择,模型预测学习的重要性作金宝app为模型的学习过程的一部分。您可以使用解释重要性估计预测模型预测。例如:
火车一个合奏(ClassificationBaggedEnsemble
或RegressionBaggedEnsemble
袋装的)决策树(例如,随机森林)和使用predictorImportance
和oobPermutedPredictorImportance
功能。
线性模型与套索正规化训练,收缩系数的最重要的预测因子。然后使用估计系数作为预测措施的重要性。例如,使用fitclinear
或fitrlinear
并指定“正规化”
名称-值参数为“套索”
。
的机器学习模型,支持嵌入式特征选择,明白了金宝app嵌入式特征选择。
使用统计和机器学习的工具箱功能三个层次的模型解释:本地队列,和全球。
水平 | 客观的 | 用例 | 统计和机器学习工具箱功能 |
---|---|---|---|
当地的解释 | 解释为一个查询点预测。 |
|
使用石灰 和沙普利 指定的查询点。 |
队列的解释 | 解释一个训练有素的模型使得预测整个数据集的子集。 | 验证预测特定的样本。 |
|
全球的解释 | 解释一个训练有素的模型使得预测对整个数据集。 |
|
|
这个例子中列车的合奏袋装使用随机森林算法、决策树和解释训练模型使用可解释性特性。使用对象的函数(oobPermutedPredictorImportance
和predictorImportance
)的训练模型找到重要的预测模型。此外,使用石灰
和沙普利
解释预测查询指定点。然后使用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支持两种对象的功能,oobPermutedPredictorImportance
和predictorImportance
,发现训练模型的重要预测因子。
估计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_BVTD
和RE_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_BVTD
和RE_TA
是三个最重要的两个因素为所有四个查询点。
的夏普利值MVE_BVTD
是第一和第四查询点,积极和消极的第二个和第三个查询点。的MVE_BVTD
值是7和4第一和第四查询点,分别第二个和第三个查询点的值约为3.5。根据四个查询的夏普利值点,一个大MVE_BVTD
值会导致增加预测分数,和一个小MVE_BVTD
值会导致减少预测分数比平均水平。结果的结果是一致的石灰
。
创建部分依赖图(PDP)
PDP图显示了平均预测之间的关系和训练的预测评分模型。创建pdpRE_TA
和MVE_BVTD
,其他的可解释性工具识别重要的预测因子。通过tblx_AAA
来plotPartialDependence
这样的函数计算预测分数只使用样本的期望“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_subset
来plotPartialDependence
这样的函数计算预测的期望响应只使用样品tbl_subset
。
图plotPartialDependence(黑盒,“Model_Year”tbl_subset)
情节展示了同样的趋势被四个查询的夏普利值点。预测的响应(英里/加仑
)值的增加Model_Year
价值增加。