本主题介绍模型解释的统计和机器学习工具箱功能,并显示如何解释机器学习模型(分类和回归)。
机器学习模型通常被称为“黑匣子”模型,因为它可能很难了解模型如何使预测。解释性工具可以帮助您克服机器学习算法的这个方面,并揭示预测器如何为预测贡献(或不贡献)。此外,您可以验证模型是否使用正确的证据来实现其预测,并找到不立即显现的模型偏差。
用酸橙
那福芙
, 和plotPartialDependence
解释个人预测因子对训练分类或回归模型的预测的贡献。
酸橙
- 地方解释的模型无关的解释(LIME[1])通过拟合一个简单的解释点来解释对查询点的预测。简单模型作为训练模型的近似值,并解释了查询点周围的模型预测。简单模型可以是线性模型或决策树模型。您可以使用线性模型的估计系数或决策树模型的估计预测测量值,以解释个体预测器对查询点预测的贡献。有关更多详细信息,请参阅酸橙。
福芙
- 福利价值[2][3]对于查询点的预测器,由于预测器,查询点的预测(对分类的回归或类别的响应或分数的响应)偏差。对于查询点,所有特征的福音值的总和对应于从平均值的预测的总偏差。有关更多详细信息,请参阅机器学习模型的福价。
plotPartialDependence
和部分竞争
-部分依赖图(PDP)[4])示出了预测器(或一对预测的)和预测(响应用于训练的模型回归或类分数分类用)之间的关系。所选择的预测器的部分依赖性由通过边缘化出其他变量的影响得到的平均预测限定。因此,部分依赖是所选择的预测器的一个函数,它示出了对数据集所选择的预测器的平均效果。您还可以创建一组单独的条件期望(ICE[5]每个观察的图表,显示所选预测器对单个观察的影响。有关更多详细信息,请参阅更多关于在这一点plotPartialDependence
参考页面。
有些机器学习模型支持嵌入型特征选择,其中模型预测获悉重要性金宝app模型学习过程的一部分。您可以使用估计预测的重要性解释模型预测。例如:
训练一个合奏(ClassificationBaggedEnsemble
或者回归释迦缩短
)袋装决策树(例如,随机森林的),并使用预测的重要性
和OobpermutedPredictorimportance.
职能。
用套索正常化训练一个线性模型,从而缩小最不重要的预测器的系数。然后使用估计的系数作为预测值重要性的措施。例如,使用fitclinear
或者Fitrinear.
并指定'正规化'
名称 - 值参数为'套索'
。
对于机器学习模型的列表,支持嵌入式特征选择,请参阅金宝app嵌入式功能选择。
使用统计和机器学习工具箱特征,适用于三级模型解释:本地,队列和全局。
等级 | 客观的 | 用例 | 统计和机器学习工具箱功能 |
---|---|---|---|
当地解释 | 解释单个查询点的预测。 |
|
用酸橙 和福芙 对于指定的查询点。 |
队列的解释 | 解释培训的模型如何对整个数据集的子集进行预测。 | 验证特定样本组的预测。 |
|
环球解释 | 说明训练模型如何为整个数据集的预测。 |
|
|
此示例培训使用随机林算法的袋装决策树的集合,并使用解释性功能来解释训练的模型。使用对象功能(OobpermutedPredictorimportance.
和预测的重要性
)训练有素的模型在模型中找到重要的预测因子。此外,使用酸橙
和福芙
解释指定查询点的预测。然后使用plotPartialDependence
创建一个绘图,显示重要预测器和预测分类评分之间的关系。
火车分类集合模型
加载CreditRating_Historical
数据集。数据集包含客户ID及其财务比率,行业标签和信用评级。
tbl =可读取的(“CreditRating_Historical.dat”);
显示表的前三行。
头(TBL,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和评级列创建预测变量的表TBL.
。
tblx = removevars(tbl,[“ID”那“评级”]);
通过火车袋装决策树的合奏fitcensemble
函数,并指定集合聚合方法为随机森林('包'
).为保证随机森林算法的重现性,请指定“复制”
名称 - 值参数为真的
对于树学习者。此外,指定类名以在培训的模型中设置类的顺序。
RNG('默认')%用于重现t = templatetree(“复制”,真正的);黑箱= fitcensemble (tblX,资源描述。评级,...“方法”那'包'那'学习者',T,...'pationoricalpricictors'那'行业'那...'classnames',{“AAA”“AA”“一个”'BBB'“BB”“B”'CCC'});
黑盒子
是A.ClassificationBaggedEnsemble
模型。
使用特定于模型的可解释性特性
ClassificationBaggedEnsemble
金宝app支持两个对象功能,OobpermutedPredictorimportance.
和预测的重要性
,在培训的模型中找到了重要的预测因子。
通过使用估算出的袋预测的重要性OobpermutedPredictorimportance.
功能。该函数一次随机置换一个预测器横跨袋子数据,并估计由于该排列而导致的袋出误差的增加。增加越大,特征越重要。
Imp1 = OobperMutedPredictorimportance(BlackBox);
估计通过使用的预测标志重要性预测的重要性
功能。该功能通过在每个预测器上的拆分和分支节点的数量分割总和来估计预测测量器的重要性。
Imp2 = predictorImportance(黑箱);
创建一个包含预测器重要性估计的表,并使用该表创建水平条形图。要在任何预测器名称中显示现有的下划线,请更改ticklabelinterpreter.
轴的值'没有任何'
。
table_Imp =表(Imp1’,Imp2’,...“VariableNames”,{“走出球袋轮排的预测变量重要性”那'预测重要性'},...“RowNames”,blackbox.PredictorNames);tiledlayout(1,2)AX1 = nexttile;table_Imp1 =调用sortRows(table_Imp,“走出球袋轮排的预测变量重要性”);barh(分类(table_imp1.row,table_imp1.row),table_imp1。(“走出球袋轮排的预测变量重要性”))xlabel(“走出球袋轮排的预测变量重要性”)ylabel('预测器') ax2 = nexttile;table_Imp2 = sortrows (table_Imp,'预测重要性');barh(分类(table_imp2.row,table_imp2.row),table_imp2。('预测重要性'))xlabel('预测重要性')ax1.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工业_____ _____ _______ ________ _____ ________ 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”
,而不是整个数据集。
exploxer_lime = inee(blackbox,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)AX1 = NELTTILE;绘图(expresser_lime1);AX2 = NELTTILE;绘图(Exploxer_lime2);Ax3 = NextTile;绘图(expresser_lime3);AX4 = NELTTILE;绘图(expresser_lime4);ax1.ticklabelinterpreter =.'没有任何';ax2.ticklabelinterpreter =.'没有任何';ax3.ticklabelinterpreter =.'没有任何';大举裁员。TickLabelInterpreter ='没有任何';
所有的简单模型都确定EBIT_TA.
那RE_TA
, 和MVE_BVTD
作为三个最重要的预测因子。预测器的正系数表明,增加预测值值导致简单模型中预测得分的增加。
对于一个绝对预测器来说阴谋
功能仅显示分类预测器的最重要的虚拟变量。因此,每个条形图显示不同的虚拟变量。
计算福利价值
对于查询点的预测器的福音值解释了从平均分数的预测得分的偏差,由于预测器。创建一个福芙
物体使用tblx_aaa.
这福芙
根据样本计算预期的贡献“AAA”
。
解释器_Shapley=福芙尼(Blackbox,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:));
使用对象函数绘制Shapley值阴谋
。
TileDlayout(2,2)AX1 = NELTTILE;绘图(expresser_shapley1)Ax2 = NextTile;绘图(expresser_shapley2)Ax3 = NextTile;绘图(expresser_shapley3)Ax4 = NextTile;绘图(expresser_shapley4)ax1.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”
。
图绘图(Blackbox,'re_ta'那“AAA”tblX_AAA)
plotPartialDependence(BlackBox,'mve_bvtd'那“AAA”tblX_AAA)
小蜱虫X
-axis表示预测器的唯一值tbl_aaa.
。情节为MVE_BVTD
示出的是,预测分数是大的时MVE_BVTD
值较小。分数值随着所述MVE_BVTD
值增加,直到它达到5个,然后得分值保持不变MVE_BVTD
值增加。依赖MVE_BVTD
在子集中tbl_aaa.
鉴定plotPartialDependence
不符合当地的贡献相一致MVE_BVTD
在识别的四个查询点酸橙
和福芙
。
对于回归问题的模型解释的工作流程是类似的工作流程分类问题,如在实施例证明解释分类模型。
此示例列举了高斯进程回归(GPR)模型,并使用解释性功能解释训练的模型。使用GPR模型的内核参数来估计预测器权重。此外,使用酸橙
和福芙
解释指定查询点的预测。然后使用plotPartialDependence
创建一个图表,显示一个重要的预测器和预测的反应之间的关系。
火车GPR模型
加载carbig
数据集,其中包含在上世纪70年代和80年代初制造的汽车的测量。
加载carbig
创建一个包含预测变量表加速
那气瓶
, 等等
TBL =桌子(加速,气瓶,位移,马力,型号,重量);
培训响应变量的GPR模型MPG.
通过使用fitrgp
功能。指定'骨箱'
作为'ardsquaredexponential'
使用平方指数内核,每个预测器具有单独的长度尺度。
黑箱= fitrgp(TBL,MPG,'responsebame'那'mpg'那'pationoricalpricictors',[2 5],...'骨箱'那'ardsquaredexponential');
黑盒子
是A.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 ='没有任何';xlabel(“预测体重”)ylabel('预测器')
预测值权重表明分类预测器的多个虚拟变量model_year.
和气瓶
是很重要的。
指定查询点
找出那些MPG.
值小于的0.25分位数MPG.
。从子集中,选择不包含缺失值的四个查询点。
RNG('默认')%用于重现idx_子集= find(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 14 8 360 215 70 4615 13.7 8 318 145 77 4140
使用石灰树简单模型
解释使用的查询点的预测酸橙
与决策树简单模型。酸橙
生成合成数据集并适合合成数据集的简单模型。
创建一个酸橙
物体使用tbl_subset
这酸橙
使用子集而不是整个数据集生成合成数据集。指定'simplemodeltype'
作为'树'
使用决策树简单模型。
exploxer_lime =石灰(blackbox,tbl_subset,'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)AX1 = NELTTILE;绘图(expresser_lime1);AX2 = NELTTILE;绘图(Exploxer_lime2);Ax3 = NextTile;绘图(expresser_lime3);AX4 = NELTTILE;绘图(expresser_lime4);ax1.ticklabelinterpreter =.'没有任何';ax2.ticklabelinterpreter =.'没有任何';ax3.ticklabelinterpreter =.'没有任何';大举裁员。TickLabelInterpreter ='没有任何';
所有的简单模型都确定移位
那model_year.
, 和重量
作为重要的预测。
计算福利价值
查询点的预测器的Shapley值解释了由于预测器导致的查询点的预测响应与平均响应之间的偏差。创建一个福芙
模型的对象黑盒子
使用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:));
使用对象函数绘制Shapley值阴谋
。
TileDlayout(2,2)AX1 = NELTTILE;绘图(expresser_shapley1)Ax2 = NextTile;绘图(expresser_shapley2)Ax3 = NextTile;绘图(expresser_shapley3)Ax4 = NextTile;绘图(expresser_shapley4)ax1.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
。
图绘图(Blackbox,'model_year',tbl_subset)
该图显示了四个查询点由沙普利标识相同的趋势值。预测响应(MPG.
)的价值增加model_year.
值增加。