局部可解释模型不可知解释(LIME)拟合简单模型
为指定的查询点拟合新的简单模型(newresults
=健康(结果
,queryPoint
,numImportantPredictors
)queryPoint
),使用指定数目或预测项(numImportantPredictors
).函数返回一个石灰
对象newresults
其中包含了新的简单模型。
适合
属性时指定的简单模型选项石灰
对象结果
。属性的名称-值对参数可更改选项适合
函数。
使用一个或多个名称-值对参数指定其他选项。例如,您可以指定newresults
=健康(结果
,queryPoint
,numImportantPredictors
,名称,值
)“SimpleModelType”、“树”
拟合决策树模型。
训练一个回归模型并创建一个石灰
对象,该对象使用线性简单模型。当你创建石灰
对象,如果不指定查询点和重要预测因子的数量,则软件生成合成数据集的样本,但不适合简单的模型。使用object函数适合
为查询点拟合一个简单的模型。然后利用目标函数显示拟合后线性简单模型的系数情节
。
加载carbig
数据集,其中包含20世纪70年代和80年代初生产的汽车的测量数据。
负载carbig
创建一个包含预测变量的表加速度
,气缸
,等等,以及响应变量英里/加仑
。
tbl = table(加速度,气缸,排量,马力,车型年,重量,MPG);
删除训练集中的缺失值可以帮助减少内存消耗并加快fitrkernel
函数。中删除缺失的值资源描述
。
TBL = rmmissing(TBL);
通过删除响应变量来创建一个预测变量表资源描述
。
tblX = removevars(tbl,“英里”);
训练一个黑盒模型英里/加仑
通过使用fitrkernel
函数。
rng (“默认”)%用于再现性mdl = fitrkernel(tblX,tbl。英里/加仑,“CategoricalPredictors”[2 - 5]);
创建一个石灰
对象。指定一个预测器数据集,因为mdl
不包含预测器数据。
results = lime(mdl,tblX)
结果= lime with properties: BlackboxModel: [1x1 RegressionKernel] DataLocality: 'global' CategoricalPredictors: [2 5] Type: 'regression' X: [392x6 table] QueryPoint: [] NumImportantPredictors: [] numsynticdata: 5000 synticdata: [5000x6 table] fitting: [5000x1 double] SimpleModel: [] ImportantPredictors: [] blackboxfitting: [] simplemodelfitting: []
结果
包含生成的合成数据集。的SimpleModel
属性为空([]
).
中第一个观测拟合线性简单模型tblX
。指定要查找的重要预测因子的数量为3。
queryPoint = tblX(1,:)
queryPoint =1×6表加速气缸位移马力Model_Year重量 ____________ _________ ____________ __________ __________ ______ 12 8 307 130 70 3504
results = fit(results,queryPoint,3);
画出石灰
对象结果
通过使用对象函数情节
。若要在任何预测器名称中显示现有下划线,请更改TickLabelInterpreter
轴的值“没有”
。
F =图(结果);f.CurrentAxes.TickLabelInterpreter =“没有”;
该图显示了查询点的两个预测,它们对应于BlackboxFitted财产和SimpleModelFitted的属性结果
。
横柱图显示了简单模型的系数值,按它们的绝对值排序。石灰发现马力
,Model_Year
,气缸
作为查询点的重要预测器。
Model_Year
而且气缸
是具有多个类别的分类预测器。对于线性简单模型,软件为每个分类预测器创建的虚拟变量比类别数少一个。条形图只显示最重要的虚变量。,可以检查其他虚变量的系数SimpleModel
的属性结果
。显示排序系数值,包括所有分类虚拟变量。
[~,I] = sort(abs(results.SimpleModel.Beta),“下”);表(results.SimpleModel.ExpandedPredictorNames (I)”,results.SimpleModel.Beta(我),...“VariableNames”, {“扩展预测器名称”,“系数”})
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 \
训练一个分类模型并创建一个石灰
对象,该对象使用决策树简单模型。为多个查询点拟合多个模型。
加载CreditRating_Historical
数据集。数据集包含客户id及其财务比率、行业标签和信用评级。
可读的(“CreditRating_Historical.dat”);
通过删除客户id和评分列,创建一个预测变量表资源描述
。
tblX = removevars(tbl,[“ID”,“评级”]);
训练信用评级的黑盒模型fitcecoc
函数。
blackbox = fitcecoc(tblX,tbl。评级,“CategoricalPredictors”,“行业”)
blackbox = ClassificationECOC PredictorNames: {1x6 cell} ResponseName: 'Y' categoricalpredictortors: 6 ClassNames: {'A' 'AA' 'AAA' 'B' 'BB' 'BBB' 'CCC'} ScoreTransform: 'none' BinaryLearners: {21x1 cell} CodingName: 'onevsone'属性,方法
创建一个石灰
对象的黑箱
模型。
rng (“默认”)%用于再现性结果=石灰(黑箱);
找到两个真实评级值为的查询点AAA
而且B
,分别。
queryPoint(1,:) = tblX(find(strcmp(tbl。评级,“AAA”), 1):);queryPoint(2,:) = tblX(find(strcmp(tbl。评级,“B”), 1),:)
queryPoint =2×6表WC_TA RE_TA EBIT_TA MVE_BVTD S_TA行业 _____ _____ _______ ________ _____ ________ 12 0.121 0.413 0.057 3.647 0.466 0.019 0.009 0.042 0.257 0.119 1
为第一个查询点拟合一个线性简单模型。将重要预测因子的数量设置为4。
newresults1 = fit(results,queryPoint(1,:),4);
绘制LIME结果图newresults1
对于第一个查询点。若要在任何预测器名称中显示现有下划线,请更改TickLabelInterpreter
轴的值“没有”
。
F1 = plot(newresults1);f1.CurrentAxes。TickLabelInterpreter =“没有”;
为第一个查询点拟合线性决策树模型。
newresults2 = fit(results,queryPoint(1,:),6,“SimpleModelType”,“树”);F2 = plot(newresults2);f2.CurrentAxes。TickLabelInterpreter =“没有”;
中的简单模型newresults1
而且newresults2
这两个发现MVE_BVTD
而且RE_TA
作为重要的预测指标。
为第二个查询点拟合线性简单模型,并绘制第二个查询点的LIME结果。
newresults3 = fit(results,queryPoint(2,:),4);F3 = plot(newresults3);f3.CurrentAxes。TickLabelInterpreter =“没有”;
预测来自黑箱
模型是B
,但简单模型的预测并非如此B
。当两个预测值不一致时,可以指定一个较小的“KernelWidth”
价值。该软件使用更关注查询点附近样本的权重来拟合一个简单的模型。如果查询点是一个离群值或位于决策边界附近,那么两个预测值可能是不同的,即使您指定了一个小的“KernelWidth”
价值。在这种情况下,您可以更改其他名称-值对参数。例如,您可以生成一个本地合成数据集(指定“DataLocality”
的石灰
作为“本地”
)为查询点,并增加样本数量(“NumSyntheticData”
的石灰
或适合
)。您也可以使用不同的距离度量(“距离”
的石灰
或适合
).
拟合线性简单模型与小“KernelWidth”
价值。
newresults4 = fit(results,queryPoint(2,:),4,“KernelWidth”, 0.01);F4 = plot(newresults4);f4.CurrentAxes。TickLabelInterpreter =“没有”;
第一个和第二个查询点的信用评级为AAA
而且B
,分别。中的简单模型newresults1
而且newresults4
这两个发现MVE_BVTD
,RE_TA
,WC_TA
作为重要的预测指标。但是,它们的系数值是不同的。图表显示,这些预测因素根据信用评级的不同而有所不同。
结果
- - - - - -石灰的结果石灰
对象LIME结果,指定为a石灰
对象。
queryPoint
- - - - - -查询点的查询点适合
函数适合简单模型,指定为数值的行向量或单行表。的queryPoint
值必须具有与预测器数据相同的数据类型和列数(结果。
或X
结果。
)在SyntheticData
石灰
对象结果
。
queryPoint
不能包含缺失值。
数据类型:单
|双
|表格
numImportantPredictors
- - - - - -在简单模型中使用的重要预测因子的数量在简单模型中使用的重要预测器的数量,指定为正整数标量值。
如果“SimpleModelType”
是“线性”
,然后软件选择指定数量的重要预测因子,并拟合所选预测因子的线性模型。
如果“SimpleModelType”
是“树”
,然后软件指定最大决策分裂数(或分支节点)作为重要预测因子的数量,使拟合的决策树最多使用指定数量的预测因子。
数据类型:单
|双
的可选逗号分隔对名称,值
参数。的名字
参数名称和价值
对应的值。的名字
必须出现在引号内。您可以以任意顺序指定多个名称和值对参数Name1, Value1,…,的家
。
“NumSyntheticData”,2000年,“SimpleModelType”,“树”
将为合成数据集生成的样本数量设置为2000,并将简单模型类型指定为决策树。
距离
- - - - - -距离度量距离度量,指定为逗号分隔的对,由“距离”
和字符向量、字符串标量或函数句柄。
如果预测器数据只包含连续变量,则适合
万博1manbetx支持这些距离度量。
价值 | 描述 |
---|---|
“欧几里得” |
欧氏距离。 |
“seuclidean” |
标准化欧氏距离。观测值之间的每个坐标差都通过除以相应的标准偏差元素来缩放, |
“mahalanobis” |
的样本协方差的马氏距离 |
“cityblock” |
城市街区距离。 |
闵可夫斯基的 |
闵可夫斯基距离。默认指数为2。要指定不同的指数,请使用 |
“chebychev” |
切比雪夫距离(最大坐标差)。 |
的余弦 |
1减去点间夹角的余弦(作为向量)。 |
“相关” |
1减去点之间的样本相关性(作为值序列处理)。 |
“枪兵” |
1减去观测值之间的样本斯皮尔曼秩相关(被视为值序列)。 |
@ |
自定义距离函数句柄。距离函数有这样的形式 函数D2 = distfun(ZI,ZJ)距离计算%...
如果您的数据不是稀疏的,您通常可以通过使用内置的距离度量而不是函数句柄来更快地计算距离。 |
如果预测器数据包括连续变量和分类变量,则适合
万博1manbetx支持这些距离度量。
价值 | 描述 |
---|---|
“goodall3” |
修正古道尔距离 |
海底钻井的 |
发生频率距离 |
有关定义,请参见距离度量。
缺省值为“距离”
属性时指定的石灰
对象结果
。默认的“距离”
的价值石灰
是“欧几里得”
如果预测器数据只包括连续变量,或“goodall3”
如果预测器数据包括连续变量和分类变量。
例子:“距离”、“海底钻井的
数据类型:字符
|字符串
|function_handle
NumNeighbors
- - - - - -查询点的邻居个数查询点的邻居数,指定为逗号分隔的对,由“NumNeighbors”
和一个正整数标量值。时,此参数才有效DataLocality
的属性结果
是“本地”
。
的适合
函数使用查询点的指定的最近邻居数估计预测器数据的分布参数。然后,该函数使用估计的分布生成合成预测数据。
如果指定的值大于预测器数据集中的观察数(结果。
)在X
石灰
对象结果
,然后适合
使用所有的观察结果。
缺省值为“NumNeighbors”
属性时指定的石灰
对象结果
。默认的“NumNeighbors”
的价值石灰
是1500。
例子:“NumNeighbors”,2000年
数据类型:单
|双
NumSyntheticData
- - - - - -为合成数据集生成的样本数量结果。NumSyntheticData
(默认)|正整数标量值为合成数据集生成的样本数目,指定为逗号分隔的对,由“NumSyntheticData”
和一个正整数标量值。
缺省值为NumSyntheticData
物业价值结果
。
例子:“NumSyntheticData”,2500年
数据类型:单
|双
P
- - - - - -闵可夫斯基距离度量的指数闵可夫斯基距离度量的指数,指定为逗号分隔的对,由“P”
一个正标量。
这个论点只有在以下情况下才成立“距离”
是闵可夫斯基的
。
缺省值为“P”
属性时指定的石灰
对象结果
。默认的“P”
的价值石灰
是2。
例子:“P”3
数据类型:单
|双
SimpleModelType
- - - - - -简单模型类型“线性”
|“树”
简单模型的类型,指定为逗号分隔的对,由“SimpleModelType”
而且“线性”
或“树”
。
“线性”
-软件拟合线性模型fitrlinear
回归或fitclinear
的分类。
缺省值为“SimpleModelType”
属性时指定的石灰
对象结果
。默认的“SimpleModelType”
的价值石灰
是“线性”
。
例子:“SimpleModelType”、“树”
数据类型:字符
|字符串
距离度量是定义两个观测值之间距离的函数。适合
万博1manbetx支持连续变量的各种距离度量以及连续变量和分类变量的混合。
连续变量的距离度量
给定一个mx——- - - - - -n数据矩阵X,则视为mx(1 -n)行向量x1,x2、……xmx,以及我的——- - - - - -n数据矩阵Y,则视为我的(1 -n)行向量y1,y2、……y我的,向量之间的不同距离x年代而且yt定义如下:
欧氏距离
欧几里得距离是闵可夫斯基距离的一个特例,其中p= 2。
标准化欧氏距离
在哪里V是n——- - - - - -n对角矩阵j第Th对角线元素为(年代(j))2,在那里年代是每个维度的比例因子的向量。
Mahalanobis距离
在哪里C是协方差矩阵。
城市街区距离
城市街区距离是闵可夫斯基距离的一个特例,其中p= 1。
闵可夫斯基距离
对于特殊情况p= 1,闵可夫斯基距离为街区距离。对于特殊情况p= 2,闵可夫斯基距离为欧几里得距离。对于特殊情况p=∞,闵可夫斯基距离为切比雪夫距离。
Chebychev距离
切比雪夫距离是闵可夫斯基距离的一种特殊情况,其中p=∞。
余弦距离
相关距离
在哪里
而且
斯皮尔曼的距离
在哪里
连续变量和分类变量混合的距离度量
修正古道尔距离
这个距离是Goodall距离的变体,如果匹配值不频繁,无论其他值的频率如何,Goodall距离都会分配一个小的距离。对于不匹配,预测器的距离贡献为1/(变量数)。
发生频率距离
对于匹配,出现频率距离指定为零距离。对于不匹配,发生频率距离在频率较低的值上分配较高的距离,在频率较高的值上分配较低的距离。
用LIME解释一个机器学习模型的预测[1]时,该软件生成合成数据集,并将一个简单的可解释模型拟合到合成数据集石灰
而且适合
,如步骤1-5所述。
如果您指定queryPoint
而且numImportantPredictors
的值石灰
,则石灰
函数执行所有步骤。
如果您没有指定queryPoint
而且numImportantPredictors
并指定“DataLocality”
作为“全球”
(默认),则石灰
函数生成一个合成数据集(步骤1-2),而适合
函数适合简单的模型(步骤3-5)。
如果您没有指定queryPoint
而且numImportantPredictors
并指定“DataLocality”
作为“本地”
,则适合
函数执行所有步骤。
的石灰
而且适合
函数执行以下步骤:
生成一个合成预测数据集X年代对连续变量采用多元正态分布,对每个分类变量采用多项分布。属性指定要生成的样本数量“NumSyntheticData”
名称-值参数。
如果“DataLocality”
是“全球”
(默认值),然后软件从整个预测器数据集(X
或者预测数据黑箱
).
如果“DataLocality”
是“本地”
的分布参数进行估计k-查询点的最近邻居,其中k是“NumNeighbors”
价值。属性指定距离度量来查找最近的邻居“距离”
名称-值参数。
该软件在估计分布参数时忽略了预测器数据集中的缺失值。
方法提供预先生成的自定义合成预测器数据集customSyntheticData
的输入参数石灰
。
计算预测Y年代对于合成数据集X年代。预测是回归的预测反应或分类的分类标签。该软件使用预测
的功能黑箱
模型来计算预测。如果你指定黑箱
作为函数句柄,然后软件使用函数句柄计算预测。
计算距离d在查询点和合成预测器数据集中的样本之间使用指定的距离度量“距离”
。
计算权重值w问合成预测器数据集中相对于查询点的样本的问使用平方指数(或高斯)核函数
x年代样本是否在合成预测数据集中X年代。
d(x年代,问)样品之间的距离是多少x年代和查询点问。
p预测因子的数量在吗X年代。
σ是内核宽度,您可以使用“KernelWidth”
名称-值参数。默认的“KernelWidth”
值为0.75。
查询点的权重值为1,然后随着距离值的增加收敛到0。的“KernelWidth”
Value控制权重值收敛到零的速度。越低“KernelWidth”
值时,权重值收敛到零的速度越快。因此,算法对查询点附近的样本赋予了更大的权重。由于该算法使用了这些权重值,因此选取的重要预测因子和拟合的简单模型能够有效地在查询点附近局部解释合成数据的预测。
拟合一个简单模型。
如果“SimpleModelType”
是“线性”
(默认值),然后软件选择重要的预测因子,并拟合所选重要预测因子的线性模型。
选择n重要预测指标(
),采用群正交匹配追踪(OMP)算法[2][3],在那里n是numImportantPredictors
价值。该算法使用合成预测器数据集(X年代)、预测(Y年代)和权重值(w问).
拟合所选重要预测因素的线性模型(
)与预测(Y年代)使用权重值(w问).软件使用fitrlinear
回归或fitclinear
的分类。对于多类模型,该软件使用“一对所有”方案来构造二元分类问题。类中的正类是查询点的预测类黑箱
模型,而负类则指其他类。
如果“SimpleModelType”
是“树”
,然后软件拟合决策树模型fitrtree
回归或fitctree
的分类。该软件指定决策分割(或分支节点)的最大数量作为重要预测因子的数量,以便拟合的决策树最多使用指定数量的预测因子。
[1]里贝罗,马可·图里奥,s·辛格和c·格斯特林。“‘我为什么要相信你?《解释任何分类器的预测》第22届ACM SIGKDD知识发现和数据挖掘国际会议论文集, 1135 - 44。旧金山,加利福尼亚州:ACM, 2016年。
[2] Świrszcz, Grzegorz, Abe直树和Aurélie C. Lozano。变量选择与预测的分组正交匹配追踪神经信息处理系统研究进展(2009): 1150 - 58。
[3]洛萨诺,Aurélie C., Grzegorz Świrszcz,和阿部直树。Logistic回归的群正交匹配追踪"第十四届人工智能与统计国际会议论文集(2011): 452 - 60。
你点击了一个对应于这个MATLAB命令的链接:
在MATLAB命令窗口中输入该命令来运行该命令。Web浏览器不支持MATLAB命令。万博1manbetx
您也可以从以下列表中选择一个网站:
选择中国站点(中文或英文)以获得最佳站点性能。其他MathWorks国家站点没有针对您所在位置的访问进行优化。