情节
局部可解释模型不可知论解释(LIME)的绘图结果
语法
描述
将LIME的结果可视化f
=情节(结果
)石灰
对象结果
.函数返回数字
对象f
.使用f
查询或修改图的属性创建后的图形。
该图包含一个水平柱状图,显示线性简单模型的系数值或决策树简单模型的预测器重要性值,取决于中的简单模型
结果
(SimpleModel
的属性结果
).该图显示了分别使用机器学习模型和简单模型计算的查询点的两个预测。这些值对应于
BlackboxFitted
财产和SimpleModelFitted
的属性结果
.
例子
用决策树简单模型解释预测
训练一个分类模型并创建一个石灰
对象,该对象使用决策树简单模型。当您创建石灰
对象,指定一个查询点和重要预测器的数量,以便软件生成合成数据集的样本,并为查询点拟合一个具有重要预测器的简单模型。然后利用目标函数在简单模型中显示估计的预测因子重要性情节
.
加载CreditRating_Historical
数据集。数据集包含客户id及其财务比率、行业标签和信用评级。
台= readtable (“CreditRating_Historical.dat”);
显示表的前三行。
头(资源描述,3)
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”,“评级”]);
训练一个信用评级的黑盒模型fitcecoc
函数。
黑箱= fitcecoc (tblX,资源描述。评级,“CategoricalPredictors”,“行业”);
创建一个石灰
对象,该对象使用决策树简单模型解释对最后一次观察结果的预测。指定“NumImportantPredictors”
找出最多6个重要的预测因子。如果指定“QueryPoint”
而且“NumImportantPredictors”
类时的值石灰
对象,然后软件生成合成数据集的样本,并为合成数据集拟合一个简单的可解释模型。
queryPoint = tblX(最终,:)
queryPoint =1×6表WC_TA RE_TA EBIT_TA MVE_BVTD S_TA行业 _____ _____ _______ ________ ____ ________ 0.239 0.463 0.065 2.924 0.34 - 2
rng (“默认”)%的再现性结果=石灰(黑盒,“QueryPoint”queryPoint,“NumImportantPredictors”6...“SimpleModelType”,“树”)
results = lime with properties: BlackboxModel: [1x1 ClassificationECOC] DataLocality: 'global' CategoricalPredictors: 6 Type: 'classification' X: [3932x6 table] QueryPoint: [1x6 table] NumImportantPredictors: 6 NumSyntheticData: 5000 SyntheticData: [5000x1 cell} SimpleModel: [1x1 ClassificationTree] ImportantPredictors: [2x1 double] blackboxsuits: {'AA'} simplemodelsuits: {'AA'}
画出石灰
对象结果
通过使用object函数情节
.若要在任何预测器名称中显示现有下划线,请更改TickLabelInterpreter
坐标轴的值“没有”
.
f =情节(结果);f.CurrentAxes.TickLabelInterpreter =“没有”;
图中显示了查询点的两个预测,它们对应于BlackboxFitted财产和SimpleModelFitted的属性结果
.
水平柱状图显示了排序后的预测器重要性值。石灰
查找财务比率变量MVE_BVTD
而且RE_TA
作为查询点的重要预测器。
您可以通过使用数据提示或栏属性.例如,你可以找到酒吧
对象。findobj
函数,并将标签添加到条的末端文本
函数。
b = findobj (f,“类型”,“酒吧”);文本(b.YEndPoints + 0.001, b.XEndPoints字符串(b.YData))
或者,您可以在带有预测器变量名的表中显示系数值。
小鬼= b.YData;flipud (array2table(小鬼”,...“RowNames”f.CurrentAxes.YTickLabel,“VariableNames”, {“预测的重要性”}))
ans =2×1表预测的重要性 ____________________ MVE_BVTD 0.088412 RE_TA 0.0018061
用线性简单模型解释预测
训练一个回归模型并创建一个石灰
对象,该对象使用线性简单模型。当您创建石灰
对象,如果不指定查询点和重要预测器的数量,则软件生成合成数据集的样本,但不适合简单的模型。使用object函数适合
为查询点拟合一个简单模型。然后利用目标函数显示拟合线性简单模型的系数情节
.
加载carbig
数据集,包含70年代和80年代早期生产的汽车的测量数据。
负载carbig
创建一个包含预测变量的表加速度
,气缸
,等等,以及响应变量英里/加仑
.
台=表(加速度、汽缸、排量、马力、Model_Year重量,MPG);
删除训练集中的缺失值可以帮助减少内存消耗并加速训练fitrkernel
函数。中删除缺失的值资源描述
.
台= rmmissing(台);
通过删除响应变量,创建一个预测变量表资源描述
.
tblX = removevars(资源描述,“英里”);
训练一个黑箱模型英里/加仑
通过使用fitrkernel
函数。
rng (“默认”)%的再现性mdl = fitrkernel (tblX,资源描述。英里/加仑,“CategoricalPredictors”[2 - 5]);
创建一个石灰
对象。指定一个预测数据集,因为mdl
不包含预测器数据。
结果=石灰(mdl tblX)
results = lime with properties: BlackboxModel: [1x1 RegressionKernel] DataLocality: 'global' CategoricalPredictors: [2 5] Type: 'regression' X: [392x6 table] QueryPoint: [] NumImportantPredictors: [] NumSyntheticData: 5000 synticdata: [5000x6 table] suitable: [5000x1 double] SimpleModel: [] ImportantPredictors: [] blackboxsuitable: [] simplemodelpredictors: []
结果
包含生成的合成数据集。的SimpleModel
物业为空([]
).
中第一次观测拟合线性简单模型tblX
.指定要查找的重要预测器的数量为3。
: queryPoint = tblX (1)
queryPoint =1×6表加速气缸位移马力Model_Year重量 ____________ _________ ____________ __________ __________ ______ 12 8 307 130 70 3504
结果=适合(结果,queryPoint, 3);
画出石灰
对象结果
通过使用object函数情节
.若要在任何预测器名称中显示现有下划线,请更改TickLabelInterpreter
坐标轴的值“没有”
.
f =情节(结果);f.CurrentAxes.TickLabelInterpreter =“没有”;
图中显示了查询点的两个预测,它们对应于BlackboxFitted财产和SimpleModelFitted的属性结果
.
水平柱状图显示了简单模型的系数值,按它们的绝对值排序。石灰发现马力
,Model_Year
,气缸
作为查询点的重要预测器。
Model_Year
而且气缸
是具有多个类别的类别预测器。对于线性简单模型,软件为每个类别预测器创建的虚拟变量比类别数量少一个。柱状图只显示最重要的虚拟变量。方法可以检查其他虚拟变量的系数SimpleModel
的属性结果
.显示已排序的系数值,包括所有类别虚拟变量。
[~,我]=排序(abs (results.SimpleModel.Beta),“下”);表(results.SimpleModel.ExpandedPredictorNames (I)”,results.SimpleModel.Beta(我),...“VariableNames”, {“Exteded预测的名字”,“系数”})
ans =17×2表Exteded预测名字系数 __________________________ ___________ {' -3.4485马力的}e-05 {Model_Year(74和70)的}-6.1279 e-07{“Model_Year(80和70)的}-4.015 e-07{“Model_Year(81和70)的}3.4176 e-07{“Model_Year(82和70)的}-2.2483 e-07{的圆柱体(6和8)}-1.9024 e-07{“Model_Year(76和70)的}1.8136 e-07{的圆柱体(5和8)}1.7461 e-07{“Model_Year(71和70)的}1.558 e-07{“Model_Year(75和70)的}1.5456 e-07{“Model_Year(77和70)的}1.521 e-07 {Model_Year (78 vs。70)'} 1.4272e-07 {'Model_Year (72 vs. 70)'} 6.7001e-08 {'Model_Year (73 vs. 70)'} 4.7214e-08{'气缸(4 vs. 8)'} 4.5118e-08 {'Model_Year (79 vs. 70)'} -2.2598e-08
输入参数
结果
- - - - - -石灰的结果
石灰
对象
LIME结果,指定为a石灰
对象。的SimpleModel
的属性结果
必须包含一个合适的简单模型。
参考文献
Ribeiro, Marco Tulio, S. Singh, C. Guestrin。“‘我为什么要相信你?“解释任何分类器的预测。”第22届ACM SIGKDD知识发现与数据挖掘国际会议论文集, 1135 - 44。旧金山,加利福尼亚州:ACM, 2016。
版本历史
介绍了R2020b
MATLAB命令
你点击了一个对应于这个MATLAB命令的链接:
在MATLAB命令窗口中输入命令来运行该命令。Web浏览器不支持MATLAB命令。
您也可以从以下列表中选择网站:
如何获得最佳的网站性能
选择中国网站(中文或英文)以获得最佳的网站表现。其他MathWorks国家网站没有针对从您的位置访问进行优化。