主要内容

沙普利

福利价值观

    描述

    福芙查询点的特征的值介绍了由于该特征的平均预测从平均预测对查询点的预测的偏差。对于每个查询点,所有功能的福音值的总和对应于从平均值的预测的总偏差。

    您可以创建沙普利具有指定查询点的机器学习模型的对象(queryPoint).该软件创建一个对象,并计算查询点的所有特征的Shapley值。

    使用Shapley值解释各个特征对指定查询点预测的贡献。使用情节函数创建Shapley值的条形图。属性可以计算另一个查询点的Shapley值适合函数。

    创建

    描述

    解释者=沙普利(黑匣子创建一个沙普利对象使用机器学习模型对象黑匣子它包含预测数据。要计算Shapley值,请使用适合函数与解释者

    例子

    解释者=沙普利(黑匣子X创建一个沙普利对象中使用预测器数据X

    例子

    解释者=沙普利(___,'querypoint',queryPoint还计算查询点的福音值queryPoint并存储计算的福利值ShapleyValues性质解释者. 您可以指定queryPoint除了前面语法中的任何输入参数组合之外。

    例子

    解释者=沙普利(___名称、值使用一个或多个名称值参数指定其他选项。例如,指定'使用反应',真实并行计算福利值。

    输入参数

    全部展开

    要解释的机器学习模型,指定为完整或紧凑的回归或分类模型对象或函数句柄。

    预测器数据,指定为数字矩阵或表格。每行X对应于一个观察,并且每列对应于一个变量。

    • 对于数值矩阵:

      • 组成列的变量X必须与训练的预测变量具有相同的顺序黑匣子,存储在黑箱。X

      • 如果你受过训练黑匣子那就用表格吧X如果表包含所有数字预测变量,则可以是数字矩阵。

    • 一个表:

      • 如果你受过训练黑匣子使用表(例如,TBL.),然后所有预测器变量都在X必须具有与中相同的变量名和数据类型TBL..但是,列顺序X不需要对应的列顺序TBL.

      • 如果你受过训练黑匣子使用一个数字矩阵,然后预测器命名黑盒,黑盒名称和相应的预测变量名X必须是一样的。要在培训期间指定预测器名称,请使用“预测器名称”名称值参数。所有预测因子变量X必须是数字向量。

      • X可以包含额外的变量(响应变量、观察权重等),但是沙普利忽略了它们。

      • 沙普利不支持字符向量的单万博1manbetx元格阵列以外的多列变量或单元格阵列。

    如果黑匣子是否必须提供不包含预测数据或函数句柄的模型对象X.如果黑匣子是一个完整的机器学习模型对象,请指定此参数,然后沙普利不使用预测数据在黑匣子;它仅使用指定的预测值数据。

    数据类型:|双倍的

    查询点沙普利解释一种预测,指定为数字值的行向量或单行表。

    • 对于数值的行向量:

      • 组成列的变量queryPoint一定要和X或培训的预测变量黑匣子,存储在黑箱。X

      • 如果你受过训练黑匣子那就用表格吧queryPoint如果表包含所有数字变量,则可以是数字向量。

    • 对于单行表:

      • 如果你受过训练黑匣子使用表(例如,TBL.),然后所有预测器变量都在queryPoint必须具有与中相同的变量名和数据类型TBL..但是,列顺序queryPoint不需要对应的列顺序TBL.

      • 如果你受过训练黑匣子使用一个数字矩阵,然后预测器命名黑盒,黑盒名称和相应的预测变量名queryPoint必须是一样的。要在培训期间指定预测器名称,请使用“预测器名称”名称值参数。所有预测因子变量queryPoint必须是数字向量。

      • queryPoint可以包含额外的变量(响应变量、观察权重等),但是沙普利忽略了它们。

      • 沙普利不支持字符向量的单万博1manbetx元格阵列以外的多列变量或单元格阵列。

    如果queryPoint包含S表示连续预测器和“方法”'条件 - 内核',则Shapley值(ShapleyValues)在返回的对象中是年代。否则,沙普利把手in.queryPoint以同样的方式黑匣子(这预测对象功能黑匣子或指定的函数句柄黑匣子).

    例子:blackbox.x(1,:)指定查询点作为完整机器学习模型中的预测器数据的第一次观察黑匣子

    数据类型:|双倍的|桌子

    名称-值对参数

    指定可选的逗号分隔的对名称、值论点。的名字参数名和价值是相应的价值。的名字必须出现在引号内。您可以按任意顺序指定多个名称和值对参数,如下所示:name1,value1,...,namen,valuen

    例子:福芙(Blackbox,'querypoint',q,'方法','conditional-kernel')创建一个沙普利对象并计算查询点的Shapley值使用扩展到kernelshap算法。

    分类预测器列表,指定为该表中的值之一。

    价值 描述
    正整数向量

    向量中的每个条目是与包含分类变量的预测数据列对应的索引值。索引值在1之间p,在那里p是用于训练模型的预测数。

    如果黑匣子使用输入变量的子集作为预测器,然后软件仅使用子集对预测器进行索引。这个“CategoricalPredictors”值不计算响应变量,观察权重变量和功能不使用的任何其他变量。

    逻辑向量

    一个真的Entry表示预测数据对应的列是一个分类变量。向量的长度是p

    字符矩阵 矩阵的每一行都是一个预测变量的名称。这些名称必须以表的形式与预测器数据的变量名称相匹配。用额外的空格填充名字,这样字符矩阵的每一行都有相同的长度。
    字符向量的字符串数组或单元格数组 数组中的每个元素是预测器变量的名称。这些名称必须以表的形式与预测器数据的变量名称相匹配。
    “全部” 所有的预测都是绝对的。

    • 如果您指定黑匣子作为函数句柄沙普利从预测数据中确定分类预测X.如果预测器数据在表中,沙普利如果一个变量是逻辑向量、无序分类向量、字符数组、字符串数组或字符向量的单元格数组,则假设它是类别变量。如果预测数据是一个矩阵,沙普利假设所有预测值都是连续的。要将任何其他预测值识别为分类预测值,请使用“CategoricalPredictors”名称值参数。

    • 如果您指定黑匣子作为回归或分类模型对象,然后沙普利属性标识分类预测器分类预测器模型对象的属性。

    沙普利万博1manbetx支持一个有序的分类预测器黑匣子万博1manbetx支持有序分类预测和“方法”“interventional-kernel”

    例子:'patericalpricictors','全部'

    数据类型:|双倍的|逻辑|char|字符串|细胞

    用于Shapley值计算的最大预测器子集数,指定为正整数。

    有关如何沙普利选择要使用的子集,请参阅计算福利价值的复杂性

    例子:“MaxNumSubsets”,100年

    数据类型:|双倍的

    Shapley值计算算法,规定为“interventional-kernel”或者'条件 - 内核'

    • “interventional-kernel”(默认) -沙普利使用KernelShap算法[1]具有介入价值函数。

    • '条件 - 内核'- - - - - -沙普利使用对kernelSHAP算法的扩展[2]具有条件值函数。

    有关这些算法的详细信息,请参阅福利价值计算算法

    例子:“方法”,“条件内核”

    数据类型:char|字符串

    标志以并行运行,指定为真的或者假的.如果您指定'使用反应',真实,沙普利函数通过使用parfor.此选项需要并行计算工具箱™。

    例子:'使用反应',真实

    数据类型:逻辑

    属性

    全部展开

    此属性是只读的。

    要解释的机器学习模型,指定为回归或分类模型对象或函数句柄。

    黑匣子参数设置此属性。

    此属性是只读的。

    对机器学习模型计算的查询点的预测(黑箱模型),指定为标量。

    • 如果黑箱模型那是一个模型对象,然后BlackboxFitted是回归的预测反应或分类的分类标签。

    • 如果黑箱模型是一个函数句柄,那么BlackboxFitted是函数句柄返回的值,可以是用于回归的预测响应,也可以是用于分类的单个类的预测得分。

    数据类型:|双倍的|分类|逻辑|char|字符串|细胞

    此属性是只读的。

    分类预测索引指定为正整数的向量。分类预测器包含与包含分类预测器的预测器数据列对应的索引值。如果没有预测器都是分类的,则此属性是空的([]).

    • 如果您指定黑匣子然后使用函数句柄沙普利从预测数据中确定分类预测X.如果指定“CategoricalPredictors”名称-值参数,然后参数设置此属性。

    • 如果您指定黑匣子作为回归或分类模型对象,然后沙普利通过使用分类预测器模型对象的属性。

    沙普利万博1manbetx支持一个有序的分类预测器黑匣子万博1manbetx支持有序分类预测和“方法”“interventional-kernel”

    数据类型:|双倍的

    此属性是只读的。

    Shapley值计算算法,规定为“interventional-kernel”或者'条件 - 内核'

    • “interventional-kernel”- - - - - -沙普利使用KernelShap算法[1]具有介入价值函数。

    • '条件 - 内核'- - - - - -沙普利使用对kernelSHAP算法的扩展[2]具有条件值函数。

    “方法”争论沙普利或者“方法”争论适合设置此属性。

    有关这些算法的详细信息,请参阅福利价值计算算法

    数据类型:char|字符串

    此属性是只读的。

    用于Shapley值计算的预测器子集的数目,指定为正整数。

    “MaxNumSubsets”争论沙普利或者“MaxNumSubsets”争论适合设置此属性。

    有关如何沙普利选择要使用的子集,请参阅计算福利价值的复杂性

    数据类型:|双倍的

    此属性是只读的。

    查询点沙普利解释使用福利值的预测(ShapleyValues),指定为数值或单行表的行向量。

    queryPoint争论沙普利或者queryPoint争论适合设置此属性。

    数据类型:|双倍的|桌子

    此属性是只读的。

    查询点的Shapley值(QueryPoint),指定为表。

    • 对于回归,表有两列。第一列包含预测器变量名,第二列包含预测器的Shapley值。

    • 对于分类,表有两个或更多的列,取决于类的数量黑箱模型.第一列包含预测器变量名,其余列包含每个类的预测器的Shapley值。

    数据类型:桌子

    此属性是只读的。

    预测器数据,指定为数字矩阵或表格。

    每一排X对应于一个观察,并且每列对应于一个变量。

    • 如果指定X参数,然后设置此属性。

    • 如果您指定黑匣子作为完整的机器学习模型对象,不指定X,则该属性值为用于训练的预测数据黑匣子

    如果观察包含S表示连续预测器和方法'条件 - 内核',然后沙普利不使用观测值进行Shapley值计算。否则,沙普利把手in.X以同样的方式黑箱模型(这预测对象功能黑箱模型或指定的函数句柄黑箱模型).

    沙普利在此属性中存储所有观察值,包括缺少值的行。

    数据类型:|双倍的|桌子

    目标函数

    适合 计算查询点的Shapley值
    情节 情节夏普利值

    例子

    全部崩溃

    训练分类模型并创建沙普利对象。当你创建沙普利对象,指定查询点,以便软件计算查询点的福音值。然后使用对象函数创建Shapley值的柱状图情节

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

    tbl=可读(“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}

    通过使用fitcecoc.函数。使用从第二列到第七列的变量TBL.作为预测变量。推荐的实践是指定要设置类的类名称。

    黑箱= fitcecoc(资源描述,“评级”...“预测器名称”tbl.Properties.VariableNames (7),...“CategoricalPredictors”“行业”...'classnames',{“AAA”“AA”“一个”'BBB'“BB”“B”“CCC”});

    创建一个沙普利解释对最后一个观察预测的对象。指定查询点,以便软件计算福利值并将其存储在其中ShapleyValues财产。

    queryPoint =(资源(最终,:)
    查询点=表1×8ID WC_TA RE_TA EBIT_TA MVE_BVTD S_TA工业评分_____ _____ _____ _______ ________ ____ ________ ______ 73104 0.239 0.463 0.065 2.924 0.34 2 { 'AA'}
    解释器=福利(Blackbox,“QueryPoint”,querypoint)
    警告:计算可能很慢,因为预测器数据有超过1000个观测。使用较小的训练集样本,或指定“UseParallel”为真值,以实现更快的计算。
    explainer=shapley,属性:blackbox模型:[1x1 ClassificationECOC]查询点:[1x8表]Blackbox拟合:{AA'}ShapleyValues:[6x8表]NumSubsets:64 X:[3932x6表]分类预测:6方法:'

    如警告消息所示,计算可能会很慢,因为预测器数据有1000多个观测值。为了加快计算速度,请使用较小的训练集样本或指定“UseParallel”作为真的

    对于分类模型,沙普利使用每个类的预测类分数计算福利值。显示该值ShapleyValues财产。

    讲解员。福芙价值s
    ans =.6×8表预测器AAA AA A BBB BB乙CCC __________ __________ ___________ ___________ ___________ ___________ ___________ “WC_TA” 0.014715 0.006439 0.002669 0.00048882 -0.0079015 -0.011841 -0.011395 “RE_TA” 0.047918 0.026904 0.014759 -0.0031481 -0.02512 -0.059927 -0.08418 “EBIT_TA” 0.0003427 0.00015023 0.00011977 3.3904E-05 -0.00018925 -0.00038136 -0.00033783 “MVE_BVTD” 0.38334 0.37376 0.17563 -0.032136 -0.18729 -0.24831 -0.19585 “S_TA” -0.0037303 -0.0026019 -8.9059e-05 -0.00081782 -5.4905e-05 0.0004788 -0.00069003 “行业” -0.028974-0.013901 0.0010365 0.02988 0.029887 0.029887 0.029887 0.029887 0.045396

    ShapleyValues属性包含每个类的所有功能的Shapley值。

    通过使用使用的浮现来绘制预测类的福音值情节功能。要在任何预测器名称中显示现有下划线,请更改TickLabelInterpreter轴到的值“没有”

    f =图;绘图(解释器)f.currentaxes.ticklabelinterpreter =“没有”

    图中包含一个坐标轴。坐标轴包含bar类型的对象。该对象表示AA。

    水平条形图显示所有变量的Shapley值,按其绝对值排序。每个Shapley值解释了查询点的分数与预测类的平均分数的偏差,这是由于相应的变量造成的。

    训练一个回归模型并创建一个沙普利对象。当你创建沙普利对象,如果未指定查询点,则软件不会计算福利值。使用对象功能适合来计算指定查询点的Shapley值。然后使用对象函数创建Shapley值的柱状图情节

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

    负载carbig

    创建包含预测器变量的表加快气缸等等,以及响应变量英里/加仑

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

    删除训练集中缺失的值可以帮助减少内存消耗并加速训练Fitrkernel.函数。删除缺失的值TBL.

    台= rmmissing(台);

    训练黑盒模型英里/加仑通过使用Fitrkernel.功能

    rng (“默认”重复性的%mdl = fitrkernel(tbl,“英里”“CategoricalPredictors”[2 - 5]);

    创建一个沙普利对象。指定数据集TBL.,因为MDL.不包含培训数据。

    讲解员=沙普利(mdl(资源)
    解释器=福谢属性:BlackBoxModel:[1x1 regressionkernel] querypoint

    解释者存储训练数据TBL.在里面X财产。

    计算所有预测变量的福音值,以获得第一次观察TBL.

    : queryPoint =(资源(1)
    查询点=表1×7加速气瓶位移马力型号_ _ ____________________________ 12 8 307 130 70 3504 18
    解释者=拟合(解释者,查询点);

    对于回归模型,沙普利使用预测的响应计算福利值,并将它们存储在ShapleyValues财产。显示中的值ShapleyValues财产。

    讲解员。福芙价值s
    ans =.6×2表预测值ShapleyValue\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu

    显示查询点的预测响应,并通过使用绘制查询点的福音值情节功能。要在任何预测器名称中显示现有下划线,请更改TickLabelInterpreter轴到的值“没有”

    讲解员。BlackboxFitted
    ans = 21.0495
    f =图;绘图(解释器)f.currentaxes.ticklabelinterpreter =“没有”

    图中包含一个坐标轴。坐标轴包含bar类型的对象。

    水平条图显示了所有变量的福音值,按其绝对值排序。由于相应的变量,每个福族值解释了从平均值到平均值的查询点的偏差。

    训练一个回归模型并创建一个沙普利对象使用函数句柄到预测模型的功能。使用对象函数适合来计算指定查询点的Shapley值。然后使用对象函数绘制福利值情节

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

    负载carbig

    创建包含预测器变量的表加快气缸,等等。

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

    训练黑盒模型英里/加仑通过使用TreeBagger函数。

    rng (“默认”重复性的%mdl = treebagger(100,tbl,mpg,“方法”'回归'“CategoricalPredictors”[2 - 5]);

    沙普利不支持a万博1manbetxTreeBagger直接对象,因此您无法指定第一个输入参数(Blackbox模型)沙普利作为一个TreeBagger对象。的函数句柄预测函数。您还可以指定选项预测函数使用函数的名称-值参数。

    创建功能句柄预测的函数TreeBagger对象Mdl.指定要使用的树索引数组1:50

    f=@(tbl)预测(Mdl,tbl,'树木',1:50);

    创建一个沙普利使用功能句柄的对象f.将BlackBox模型指定为函数句柄时,必须提供预测器数据。TBL.包括分类预测因子(圆柱Model_Year)双倍的数据类型。默认情况下,沙普利不治疗变量双倍的作为分类预测器的数据类型。指定第二个(圆柱)及第五(Model_Year)变量作为分类预测因子。

    解释者=夏普利(f,待定,“CategoricalPredictors”[2 - 5]);解释器=适合(解释器,TBL(1,:));

    绘制Shapley值。

    情节(解释器)

    图中包含一个坐标轴。坐标轴包含bar类型的对象。

    按重要性顺序显示预测值名称。

    tbl.Properties。变量名([3 2 6 4 5 1])
    ans=1 x6单元格第1列到第4列{'Displacement'}{'Columns'}{'Weight'}{'Horsepower'}第5列到第6列{'Model_Year'}{'Acceleration'}

    更多关于

    全部展开

    参考文献

    Lundberg, Scott M和S. Lee。“解释模型预测的统一方法”神经信息处理系统研究进展30(2017): 4765 - 774。

    Aas, Kjersti, Martin。朱勒姆和安德斯·洛兰德。解释特征依赖时的个人预测:对Shapley值的更精确的近似arXiv:1903.10464(2019).

    扩展功能

    在R2021a中引入