主要内容

适合

拟合局部可解释模型不可知论解释(LIME)的简单模型

    描述

    实例

    newresults=健康(结果,queryPoint,numImportantPredictors)为指定的查询点拟合新的简单模型(queryPoint),使用指定的数目或预测数(numImportantPredictors).函数返回石灰对象newresults其中包含新的简单模型。

    适合使用在创建时指定的简单模型选项石灰对象结果。您可以使用的名称-值对参数更改选项适合函数。

    实例

    newresults=健康(结果,queryPoint,numImportantPredictors,名称,值)使用一个或多个名称-值对参数指定其他选项。例如,可以指定“SimpleModelType”,“树”拟合决策树模型。

    例子

    全部折叠

    训练回归模型并创建石灰对象,该对象使用线性简单模型。当你创建石灰对象,如果不指定查询点和重要预测器的数量,则软件生成合成数据集的样本,但不适合简单模型。使用对象函数适合以适应查询点的简单模型。然后用目标函数显示拟合的线性简单模型的系数情节

    加载carbig数据集,其中包含20世纪70年代和80年代初生产的汽车的测量数据。

    负载carbig

    创建一个包含预测变量的表加速度,气缸,等等,以及响应变量英里/加仑

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

    删除训练集中缺失的值可以帮助减少内存消耗并加速训练fitrkernel函数。删除资源描述

    台= rmmissing(台);

    通过删除响应变量来创建预测变量表资源描述

    tblX = removevars(资源描述,“MPG”);

    训练一个黑匣子模型英里/加仑通过使用fitrkernel函数。

    rng (“默认”)%的再现性mdl = fitrkernel (tblX,资源描述。英里/加仑,“CategoricalPredictors”,[2 5]);

    创建一个石灰对象。指定一个预测器数据集,因为mdl不包含预测数据。

    结果=石灰(mdl tblX)
    结果=带属性的lime:Blackbox模型:[1x1 RegressionKernel]数据位置:'global'分类预测因子:[2 5]类型:'regression'X:[392x6表格]查询点:[]NumImportantPredictors:[]NumSyntheticData:5000合成数据:[5000x6表格]拟合:[5000x1双精度]SimpleModel:[]重要预测因子:[]Blackbox拟合:[]SimpleModelFitted:[]

    结果包含生成的合成数据集。这个SimpleModel属性为空([]).

    为第一次观测拟合一个线性简单模型tblX.指定要查找的重要预测器的数量为3。

    : queryPoint = tblX (1)
    queryPoint =1×6表加速气缸位移马力Model_Year重量  ____________ _________ ____________ __________ __________ ______ 12 8 307 130 70 3504
    结果=适合(结果,queryPoint, 3);

    画出石灰对象结果通过使用目标函数情节.要在任何预测器名称中显示现有的下划线,请更改TickLabelInterpreter坐标轴的值“没有”

    f =情节(结果);f.CurrentAxes.TickLabelInterpreter =“没有”;

    图中包含一个轴对象。标题为LIME with Linear Model的轴对象包含一个bar类型的对象。

    图显示了查询点的两个预测,它们对应于BlackboxFitted财产和SimpleModelFitted的属性结果

    横条形图显示了简单模型的系数值,按其绝对值排序。石灰发现马力,Model_Year,气缸作为查询点的重要预测器。

    Model_Year气缸是具有多个类别的分类预测器。对于线性简单模型,该软件创建的虚拟变量比每个类别预测器的类别数量少一个。条形图只显示最重要的哑变量。你可以检查其他虚拟变量的系数使用SimpleModel的属性结果.显示排序的系数值,包括所有分类虚拟变量。

    [~,我]=排序(abs (results.SimpleModel.Beta),“下”);表(results.SimpleModel.ExpandedPredictorNames (I)”,results.SimpleModel.Beta(我),...“VariableNames”, {“Exteded预测的名字”,“系数”})
    ans =17×2表预测者姓名系数,预测者姓名系数,预测者姓名系数,预测者姓名系数,预测者姓名系数,预测者姓名系数,预测者姓名系数,预测者姓名系数,预测者姓名系数,预测者姓名系数,预测者姓名系数,预测者姓名系数,预测者姓名系数,预测者姓名系数,预测者姓名系数,预测者姓名系数,预测者年(74对70)和70年(74对70年)之间)的-6.1279e-7-2007年(2007年(模型年(80对70年(80对70年)的)的)到7年(80年(80对70年)的)的-4.018-4.018-7年(80-7年(80-7年(80年(80年(80年对70年)的)的)到7年)的-4.018-4.018-7年(80-7年(80-7年(80-7年(80-7年)的)到7年)到7年(80-7年)"{"气缸(6对8)}-1.9024e-07{"车型年(76对70)}1.8136e-07{}(5对8)5对8(5对8)7)7)7)7)1.558e-7(5对5对8)7)5)5 5对5对8)7(5对8)7)7)7)1.5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5(5对8(5对8)7)7)7)7(7)1.7 7 7 7 7)5 5)5 5 5 5 5 5 5(5)5 5 5 5)6 6 6 6 6(5(5)5)5)5 5 5(5(5(5)5)5)5)5(5(5(5)5(5(5)5)5(5(5)5)7(5)7(5(5)5)7(7(5)7(7(5)7(5)7)7)7(7)7)7(7(7(7(7)7(7)7)7)7)7(7 2.2598e-08⋮

    培训分类模型并创建石灰对象,该对象使用决策树简单模型。为多个查询点拟合多个模型。

    加载CreditRating_Historical数据集。该数据集包含客户id及其财务比率、行业标签和信用评级。

    台= readtable (“CreditRating_Historical.dat”);

    通过删除客户id和评级列来创建一个预测器变量表资源描述

    tblX=移除变量(tbl[“ID”,“评级”]);

    使用的方法训练信用评级的黑箱模型fitcecoc函数。

    黑箱= fitcecoc (tblX,资源描述。评级,“CategoricalPredictors”,“工业”)
    blackbox = ClassificationECOC PredictorNames: {1x6 cell} ResponseName: 'Y' CategoricalPredictors: 6 ClassNames: {'A' 'AA' 'AAA' 'B' 'BB' 'BBB' 'CCC'} ScoreTransform: 'none' BinaryLearners: {21x1 cell} CodingName: 'onevsone'属性,方法

    创建一个石灰对象的黑箱模型。

    rng (“默认”)%的再现性结果=石灰(黑箱);

    查找其真实评级值为的两个查询点AAAB,分别。

    queryPoint (1) = tblX(找到(strcmp(资源描述。评级,“AAA”), 1):);queryPoint (2) = tblX(找到(strcmp(资源描述。评级,“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 =适合(结果,queryPoint (1:), 4);

    绘制LIME结果图newresults1用于第一个查询点。要在任何预测器名称中显示现有的下划线,请更改TickLabelInterpreter坐标轴的值“没有”

    f1 =情节(newresults1);f1.CurrentAxes。TickLabelInterpreter =“没有”;

    图中包含一个轴对象。标题为LIME with Linear Model的轴对象包含一个bar类型的对象。

    为第一个查询点拟合一个线性决策树模型。

    newresults2 =适合(结果,queryPoint(1:), 6日“SimpleModelType”,“树”);f2 =情节(newresults2);f2.CurrentAxes。TickLabelInterpreter =“没有”;

    图中包含一个轴对象。带有决策树模型的标题为LIME的轴对象包含一个类型为bar的对象。

    里面的简单模型newresults1newresults2这两个发现MVE_BVTDRE_TA作为重要的预测因子。

    为第二个查询点拟合线性简单模型,并绘制第二个查询点的石灰结果。

    newresults3 =适合(结果,queryPoint (2:), 4);f3 =情节(newresults3);f3.CurrentAxes。TickLabelInterpreter =“没有”;

    图中包含一个轴对象。标题为LIME with Linear Model的轴对象包含一个bar类型的对象。

    来自黑箱模型是B,但简单模型的预测则不然B.当两个预测不相同时,可以指定一个较小的“KernelWidth”值。该软件使用更关注查询点附近样本的权重来拟合简单模型。如果查询点是异常值或位于决策边界附近,则两个预测值可能不同,即使您指定了一个较小的值“KernelWidth”价值。在这种情况下,您可以更改其他名称-值对参数。例如,您可以生成本地合成数据集(指定“DataLocality”石灰“本地”)用于查询点,并增加样本数(“NumSyntheticData”石灰适合)在合成数据集中。您也可以使用不同的距离度量(“距离”石灰适合).

    用一个小的“KernelWidth”价值。

    newresults4 =适合(结果,queryPoint (2:), 4,“KernelWidth”, 0.01);f4 =情节(newresults4);f4.CurrentAxes。TickLabelInterpreter =“没有”;

    图中包含一个轴对象。标题为LIME with Linear Model的轴对象包含一个bar类型的对象。

    第一个和第二个查询点的信用评级是AAAB,分别。里面的简单模型newresults1newresults4这两个发现MVE_BVTD,RE_TA,沃库塔作为重要的预测因子。但是,它们的系数值是不同的。图表显示,这些预测者的行为因信用评级的不同而不同。

    输入参数

    全部折叠

    LIME结果,指定为a石灰对象。

    查询的点适合函数适合简单模型,指定为数值或单行表的行向量。这个queryPoint值必须具有与预测器数据相同的数据类型和相同的列数(结果。X结果。SyntheticData)石灰对象结果

    queryPoint不能包含缺失的值。

    数据类型:||表格

    在简单模型中使用的重要预测数,指定为正整数标量值。

    • 如果“SimpleModelType”“线性”,然后软件选择指定数量的重要预测因子,并拟合所选预测因子的线性模型。

    • 如果“SimpleModelType”“树”,则该软件指定决策分裂(或分支节点)的最大数量作为重要预测器的数量,以便拟合决策树最多使用指定数量的预测器。

    数据类型:|

    名称值参数

    指定可选的逗号分隔的对名称,值参数。的名字参数名和价值为对应值。的名字必须出现在引号内。可以以任意顺序指定多个名称和值对参数Name1, Value1,…,的家

    例子:“NumSyntheticData”,2000年,“SimpleModelType”,“树”将为合成数据集生成的样本数量设置为2000,并将简单模型类型指定为决策树。

    马氏距离度量的协方差矩阵,指定为逗号分隔对,由“浸”和一个K——- - - - - -K正定矩阵,其中K是预测器的数量。

    此参数仅当“距离”“mahalanobis”

    默认值为“浸”创建时指定的值石灰对象结果.默认的“浸”的价值石灰浸(PD omitrows),在那里PD是预测数据或合成预测数据。如果不指定“浸”值,然后软件在计算预测数据和合成预测数据的距离时使用不同的协方差矩阵。

    例子:“浸”,眼睛(3)

    数据类型:|

    距离度量,指定为逗号分隔对,由“距离”以及字符向量、字符串标量或函数句柄。

    • 如果预测数据只包含连续变量,那么适合金宝app支持这些距离度量。

      价值 描述
      “欧几里得”

      欧氏距离。

      “seuclidean”

      标准化的欧氏距离。观测值之间的每个坐标差除以相应的标准差,S =性病(PD omitnan),在那里PD是预测数据或合成预测数据。要指定不同的缩放,请使用“规模”名称-值参数。

      “mahalanobis”

      利用样本协方差的马氏距离PD,C = x (PD omitrows).要改变协方差矩阵的值,请使用“浸”名称-值参数。

      “cityblock”

      城市街区的距离。

      闵可夫斯基的

      闵可夫斯基距离。默认指数是2。要指定不同的指数,请使用“P”名称-值参数。

      “chebychev”

      切比雪夫距离(最大坐标差)。

      “余弦”

      1减去点之间夹角的余弦值(作为向量)。

      “相关”

      一减去点之间的样本相关性(作为值的序列处理)。

      “枪兵”

      1减去样本斯皮尔曼观察值之间的等级相关性(视为值序列)。

      @distfun

      自定义距离功能手柄。距离函数有这样的形式

      函数ZJ D2 = distfun(子)距离计算%...
      在哪里

      • 是一个1.——- - - - - -T包含单个观测值的向量。

      • ZJ是一个s——- - - - - -T包含多个观测值的矩阵。distfun必须接受矩阵ZJ具有任意数量的观察结果。

      • D2是一个s——- - - - - -1.距离向量,以及D2 (k)观察距离是多少ZJ (k,:)

      如果数据不是稀疏的,通常可以使用内置的距离度量而不是函数句柄来更快地计算距离。

    • 如果预测数据同时包含连续变量和分类变量,那么适合金宝app支持这些距离度量。

      价值 描述
      “goodall3”

      修改古德距离

      海底钻井的

      发生频率的距离

    定义,请参阅距离度量

    默认值为“距离”创建时指定的值石灰对象结果.默认的“距离”的价值石灰“欧几里得”如果预测数据只包含连续变量,或“goodall3”如果预测数据包括连续变量和分类变量。

    例子:“距离”、“海底钻井的

    数据类型:字符|字符串|功能手柄

    平方指数(或高斯)核函数的核宽度,指定为逗号分隔对组成“KernelWidth”和一个数值标量值。

    这个适合函数计算查询点与合成预测数据集中样本之间的距离,然后使用平方指数核函数将距离转换为权值。如果你降低“KernelWidth”值,然后适合使用更侧重于查询点附近的示例的权重。有关详细信息,请参见石灰

    默认值为“KernelWidth”创建时指定的值石灰对象结果.默认的“KernelWidth”的价值石灰是0.75。

    例子:“KernelWidth”,0.5

    数据类型:|

    查询点的邻居数,指定为逗号分隔对,由“NumNeighbors”和一个正整数标量值。该参数仅在DataLocality的属性结果“本地”

    这个适合函数使用查询点的指定数目的最近邻估计预测器数据的分布参数。然后,该函数利用估计的分布生成合成预测数据。

    如果指定的值大于预测器数据集中的观察数(结果。X)石灰对象结果,然后适合使用所有的观察。

    默认值为“NumNeighbors”创建时指定的值石灰对象结果.默认的“NumNeighbors”的价值石灰是1500。

    例子:“NumNeighbors”,2000年

    数据类型:|

    要为合成数据集生成的样本数量,指定为由逗号分隔的对组成“NumSyntheticData”和一个正整数标量值。

    默认值为数字合成数据属性值的结果

    例子:“NumSyntheticData”,2500年

    数据类型:|

    闵可夫斯基距离度量的指数,指定为逗号分隔对,由“P”一个正标量。

    此参数仅当“距离”闵可夫斯基的

    默认值为“P”创建时指定的值石灰对象结果.默认的“P”的价值石灰是2。

    例子:“P”,3

    数据类型:|

    尺度参数值为标准化的欧几里得距离度量,指定为逗号分隔对组成“规模”和一个长度为非负的数值向量K,在那里K是预测器的数量。

    此参数仅当“距离”“seuclidean”

    默认值为“规模”创建时指定的值石灰对象结果.默认的“规模”的价值石灰性病(PD omitnan),在那里PD是预测数据或合成预测数据。如果不指定“规模”值,则软件在计算预测器数据和合成预测器数据的距离时使用不同的比例参数。

    例子:“刻度”,分位数(X,0.75)-分位数(X,0.25)

    数据类型:|

    简单模型的类型,指定为逗号分隔对,由“SimpleModelType”“线性”“树”

    默认值为“SimpleModelType”创建时指定的值石灰对象结果.默认的“SimpleModelType”的价值石灰“线性”

    例子:“SimpleModelType”,“树”

    数据类型:字符|字符串

    输出参数

    全部折叠

    LIME结果,作为返回石灰对象。newresults包含新的简单模型。

    重写输入参数结果,指定的输出适合结果:

    结果=适合(结果、queryPoint numImportantPredictors);

    更多关于

    全部折叠

    距离度量

    距离度量是定义两个观测值之间距离的函数。适合金宝app支持连续变量和连续和分类变量的混合的各种距离度量。

    • 连续变量的距离度量

      给定一个mx——- - - - - -N数据矩阵X,被视为mx(1 -N)行向量x1.,x2.、……xmx和一个我的——- - - - - -N数据矩阵Y,被视为我的(1 -N)行向量Y1.,Y2.、……Y我的,表示向量之间的不同距离xsYT定义如下:

      • 欧氏距离

        D s T 2. = ( x s Y T ) ( x s Y T )

        欧几里得距离是闵可夫斯基距离的一种特例P= 2

      • 标准化的欧几里得距离

        D s T 2. = ( x s Y T ) v 1. ( x s Y T ) ,

        在哪里vN——- - - - - -N对角矩阵J第Th对角元素为(s(J))2.,在那里s是每个维度的比例因子向量。

      • 马氏距离

        D s T 2. = ( x s Y T ) C 1. ( x s Y T ) ,

        在哪里C是协方差矩阵。

      • 城市街区的距离

        D s T = J = 1. N | x s J Y T J |

        城市街区距离是Minkowski距离的特例,其中P= 1

      • 闵可夫斯基距离

        D s T = J = 1. N | x s J Y T J | P P

        的特殊情况P= 1,闵可夫斯基距离表示城市街区距离。的特殊情况P= 2,闵可夫斯基距离给出了欧几里得距离。的特殊情况P=∞,闵可夫斯基距离给出了切比切夫距离。

      • Chebychev距离

        D s T = 马克斯 J { | x s J Y T J |

        切比切夫距离是闵可夫斯基距离的一种特殊情况P=∞

      • 余弦距离

        D s T = ( 1. x s Y T ( x s x s ) ( Y T Y T ) )

      • 相关距离

        D s T = 1. ( x s x ¯ s ) ( Y T Y ¯ T ) ( x s x ¯ s ) ( x s x ¯ s ) ( Y T Y ¯ T ) ( Y T Y ¯ T ) ,

        在哪里

        x ¯ s = 1. N J x s J

        Y ¯ T = 1. N J Y T J

      • 斯皮尔曼的距离

        D s T = 1. ( R s R ¯ s ) ( R T R ¯ T ) ( R s R ¯ s ) ( R s R ¯ s ) ( R T R ¯ T ) ( R T R ¯ T ) ,

        在哪里

        • Rsjxsj接管x1.J,x2.J, ...xmx j,由tiedrank

        • RtjYtj接管Y1.J,Y2.J, ...Y我的,j,由tiedrank

        • RsRT是的坐标秩向量xsYT,也就是说,Rs= (Rs1.,Rs2., ...Rsn),RT= (RT1.,RT2., ...Rtn).

        • R ¯ s = 1. N J R s J = ( N + 1. ) 2.

        • R ¯ T = 1. N J R T J = ( N + 1. ) 2.

    • 连续变量和分类变量混合的距离度量

      • 修改古德距离

        这个距离是Goodall距离的一种变体,如果匹配的值不频繁,不管其他值的频率如何,都会分配一个小的距离。对于不匹配,预测器的距离贡献是1/(变量的数量)。

      • 发生频率的距离

        对于匹配,出现频率距离指定为零距离。对于不匹配,出现频率距离在频率较低的值上分配较高的距离,在频率较高的值上分配较低的距离。

    算法

    全部折叠

    石灰

    使用LIME解释机器学习模型的预测[1],该软件生成一个合成数据集,并通过使用该合成数据集拟合一个简单的可解释模型石灰适合,如步骤1-5所述。

    • 如果指定queryPointnumImportantPredictors的值石灰,那么石灰函数执行所有步骤。

    • 如果没有指定queryPointnumImportantPredictors并指定“DataLocality”“全球”(默认),那么石灰函数生成一个合成数据集(步骤1-2)适合函数适合一个简单的模型(步骤3-5)。

    • 如果没有指定queryPointnumImportantPredictors并指定“DataLocality”“本地”,那么适合函数执行所有步骤。

    这个石灰适合函数执行以下步骤:

    1. 生成一个综合预测数据集Xs对连续变量使用多元正态分布,对每个类别变量使用多项分布。属性可以指定要生成的样本数量“NumSyntheticData”名称-值参数。

      • 如果“DataLocality”“全球”(默认),然后软件从整个预测器数据集(X或预测数据黑箱).

      • 如果“DataLocality”“本地”,则该软件使用K查询点的最近邻,其中K“NumNeighbors”值。您可以使用指定距离度量来查找最近的邻居“距离”名称-值参数。

      当估计分布参数时,该软件忽略预测器数据集中的缺失值。

      或者,您可以通过使用customSyntheticData输入参数的石灰

    2. 计算预测Ys用于合成数据集Xs.预测是对回归的预测反应或分类标签。该软件使用预测委员会的职能黑箱模型来计算预测。如果您指定黑箱作为函数句柄,软件使用函数句柄计算预测。

    3. 计算距离D在查询点和合成预测数据集中的样本之间,使用指定的距离度量“距离”

    4. 计算权重值WQ与查询点相关的合成预测数据集中的样本Q使用平方指数(或高斯)核函数

      W Q ( x s ) = 经验值 ( 1. 2. ( D ( x s , Q ) P σ ) 2. )

      • xs是否在合成预测数据集中有一个样本Xs

      • D(xs,Q)样品之间的距离是多少xs以及查询点Q

      • P预测器的数量在吗Xs

      • σ是内核宽度,您可以使用“KernelWidth”名称-值参数。默认的“KernelWidth”值是0.75。

      查询点的权值为1,然后随着距离值的增加,权值收敛为0。这个“KernelWidth”值控制权重值收敛到零的速度。值越低“KernelWidth”值越大,权值收敛到零的速度越快。因此,该算法赋予了查询点附近的样本更大的权重。由于该算法使用了这样的权重值,所选择的重要预测因子和拟合的简单模型有效地解释了查询点附近的局部合成数据的预测。

    5. 适合一个简单的模型。

      • 如果“SimpleModelType”“线性”(默认),则软件选择重要预测因子,并拟合所选重要预测因子的线性模型。

        • 选择N重要预测因子( X ˜ s ),采用群正交匹配追踪(OMP)算法[2][3],在那里NnumImportantPredictors价值。该算法使用合成预测数据集(Xs)、预测(Ys)和权重值(WQ).

        • 拟合所选重要预测因子的线性模型( X ˜ s )的预测(Ys),使用权重值(WQ).软件使用fitrlinear回归或fitclinear对于分类。对于多类模型,软件使用一对所有方案来构造二元分类问题。正类是从黑箱模型,负类指的是其他类。

      • 如果“SimpleModelType”“树”,然后利用该软件拟合出决策树模型fitrtree回归或fitctree的分类。该软件指定决策分裂(或分支节点)的最大数量作为重要预测器的数量,以便拟合的决策树最多使用指定数量的预测器。

    参考文献

    [1] 里贝罗、马尔科·图里奥、S·辛格和C·盖斯特林:《我为什么要相信你?》:解释任何分类器的预测第22届ACM SIGKDD国际知识发现与数据挖掘会议论文集, 1135 - 44。旧金山,加利福尼亚:ACM, 2016。

    [2] 《变量选择和预测的分组正交匹配追踪》神经信息处理系统研究进展(2009): 1150 - 58。

    [3] Lozano Aurélie C., Grzegorz Świrszcz,和Naoki Abe。逻辑回归的组正交匹配追踪。第十四届国际人工智能和统计会议论文集(2011): 452–60.

    另请参阅

    |

    介绍了R2020b