主要内容

福芙

沙普利值

    描述

    沙普利查询点的特征值解释了由于该特征,查询点的预测与平均预测之间的偏差。对于每个查询点,所有特征的Shapley值的和对应于预测与平均值的总偏差。

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

    使用Shapley值解释各个功能在指定查询点的预测中的贡献。使用阴谋功能创建福利值的条形图。您可以通过使用使用该查询点来计算Shapley值合身函数。

    创建

    描述

    解释者=福芙尼(黑盒子创建一个福芙使用机器学习模型对象的对象黑盒子包含预测数据。要计算福利值,请使用合身函数与解释者

    例子

    解释者=福芙尼(黑盒子X创建一个福芙使用预测器数据的对象X

    例子

    解释者=福芙尼(___“QueryPoint”,QueryPoint.也计算了沙普利值查询点QueryPoint.并将计算得到的Shapley值存储在ShapleyValues财产解释者.您可以指定QueryPoint.除了前面语法中的任何输入参数组合之外。

    例子

    解释者=福芙尼(___名称,价值使用一个或多个名称-值参数指定其他选项。例如,指定“UseParallel”,真的并行计算Shapley值。

    输入参数

    展开全部

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

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

    • 对于数字矩阵:

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

      • 如果你训练有素黑盒子使用表,然后X如果表包含所有数字预测变量,则可以是数字矩阵。

    • 一个表:

      • 如果你训练有素黑盒子使用表格(例如,TBL),那么所有的预测变量X必须具有与那些相同的变量名称和数据类型TBL.然而,列顺序X不需要对应于列顺序TBL

      • 如果你训练有素黑盒子使用数字矩阵,然后在预测名称blackbox.predictornames.和相应的预测变量名X必须是相同的。训练过程中指定的预测名称,请使用'predictornames'名称-值参数。所有的预测变量X必须是数值向量。

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

      • 福芙除了字符向量的单元万博1manbetx格数组外,不支持多列变量或单元格数组。

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

    数据类型:|双倍的

    查询点在哪福芙解释以数字值或单行表的行向量指定的预测。

    • 对于数值的行向量:

      • 组成列的变量QueryPoint.必须具有相同的订单X或者训练的预测变量黑盒子,存储在黑箱。X

      • 如果你训练有素黑盒子使用表,然后QueryPoint.如果表包含所有数字变量,则可以是数字矢量。

    • 对于单行表:

      • 如果你训练有素黑盒子使用表格(例如,TBL),那么所有的预测变量QueryPoint.必须具有与那些相同的变量名称和数据类型TBL.然而,列顺序QueryPoint.不需要对应于列顺序TBL

      • 如果你训练有素黑盒子使用数字矩阵,然后在预测名称blackbox.predictornames.和相应的预测变量名QueryPoint.必须是相同的。训练过程中指定的预测名称,请使用'predictornames'名称-值参数。所有的预测变量QueryPoint.必须是数值向量。

      • QueryPoint.可以包含额外的变量(响应变量、观察权重等),但是福芙忽略它们。

      • 福芙除了字符向量的单元万博1manbetx格数组外,不支持多列变量或单元格数组。

    如果QueryPoint.包含S对于连续预测和“方法”“conditional-kernel”,然后是福利值(ShapleyValues)在返回的对象是年代。否则,福芙处理in.QueryPoint.在相同的方式黑盒子(这预测的目标函数黑盒子或指定的功能句柄黑盒子).

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

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

    名称值对参数

    指定可选的逗号分离对名称,价值论点。的名字是参数名称和价值为对应值。的名字必须出现在引号内。您可以以任何顺序指定多个名称和值对参数name1,value1,...,namen,valuen

    例子:沙普利(黑箱,QueryPoint,问,“方法”,“conditional-kernel”)创建一个福芙对象并计算查询点的福利值问:使用对kernelSHAP算法的扩展。

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

    价值 描述
    正整数向量

    向量中的每个条目是对应于包含一个分类变量预测数据的列的索引值。该指数的值是1和2之间P., 在哪里P.是用于训练模型的预测器数量。

    如果黑盒子使用输入变量的子集作为预测器,然后软件仅使用子集索引预测器。这'pationoricalpricictors'值不计算响应变量,观察体重变化,和任何其他变量的函数不使用。

    逻辑矢量

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

    字符矩阵 矩阵的每一行是预测器变量的名称。名称必须匹配表格中的预测器数据的变量名称。使用额外的空白填充名称,因此字符矩阵的每行具有相同的长度。
    字符串阵列或字符向量的单元数组 数组中的每个元素是一个预测变量的名称。名称必须匹配表格中的预测器数据的变量名称。
    '全部' 所有预测因素都是分类的。

    • 如果您指定黑盒子作为函数手柄,然后福芙从预测数据中确定分类预测X.如果预测器数据位于表中,福芙如果一个变量是逻辑向量、无序分类向量、字符数组、字符串数组或字符向量的单元格数组,则假设它是类别变量。如果预测数据是一个矩阵,福芙假设所有预测因子都是连续的。要将任何其他预测因子识别为分类预测器,请通过使用来指定它们'pationoricalpricictors'名称-值参数。

    • 如果您指定黑盒子作为回归或分类模型对象,那么福芙通过使用识别分类预测器CategoricalPredictors属性。

    福芙万博1manbetx支持订购的分类预测仪黑盒子万博1manbetx支持有序分类预测和“方法”'介入 - 内核'

    例子:“CategoricalPredictors”、“所有”

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

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

    有关如何福芙选择要使用的子集,参见计算Shapley值的复杂性

    例子:“MaxNumSubsets”,100年

    数据类型:|双倍的

    Shapley值计算算法,规定为'介入 - 内核'“conditional-kernel”

    • '介入 - 内核'(默认)福芙使用kernelSHAP算法[1]用介入性价值函数。

    • “conditional-kernel”-福芙使用扩展到内核alhap算法[2]与条件值函数。

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

    例子:'方法','条件 - 内核'

    数据类型:char|字符串

    并行运行的标志,指定为真正的错误的.如果您指定“UseParallel”,真的, 这福芙函数通过使用并行执行循环迭代议案.此选项需要并行计算工具箱™。

    例子:“UseParallel”,真的

    数据类型:逻辑

    属性

    展开全部

    此属性是只读的。

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

    黑盒子参数设置此属性。

    此属性是只读的。

    通过机器学习模型(BlackBoxModel.),指定为标量。

    • 如果BlackBoxModel.是模型对象,然后黑盒装是回归的预测反应或分类的分类标签。

    • 如果BlackBoxModel.那是一个函数手柄,然后黑盒装是函数句柄返回的值,用于回归的预测响应或用于分类的单个类的预测得分。

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

    此属性是只读的。

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

    • 如果您指定黑盒子使用功能手柄,然后福芙从预测数据中确定分类预测X.如果您指定了'pationoricalpricictors'名称值参数,然后参数设置此属性。

    • 如果您指定黑盒子作为回归或分类模型对象,那么福芙通过使用来确定此属性CategoricalPredictors属性。

    福芙万博1manbetx支持订购的分类预测仪黑盒子万博1manbetx支持有序分类预测和“方法”'介入 - 内核'

    数据类型:|双倍的

    此属性是只读的。

    Shapley值计算算法,规定为'介入 - 内核'“conditional-kernel”

    • '介入 - 内核'-福芙使用kernelSHAP算法[1]用介入性价值函数。

    • “conditional-kernel”-福芙使用扩展到内核alhap算法[2]与条件值函数。

    “方法”的说法福芙或者“方法”的说法合身设置此属性。

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

    数据类型:char|字符串

    此属性是只读的。

    用于福利值计算的预测器子集数量,指定为正整数。

    'maxnumsubsets'的说法福芙或者'maxnumsubsets'的说法合身设置此属性。

    有关如何福芙选择要使用的子集,参见计算Shapley值的复杂性

    数据类型:|双倍的

    此属性是只读的。

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

    QueryPoint.的说法福芙或者QueryPoint.的说法合身设置此属性。

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

    此属性是只读的。

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

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

    • 对于分类,表有两个或多个列,具体取决于类的数量BlackBoxModel..第一个列包含预测器变量名称,其余的列包含每个类的预测器的福音值。

    数据类型:桌子

    此属性是只读的。

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

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

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

    • 如果您指定黑盒子作为完整机器学习模型对象,并未指定X,然后该属性值是用于训练的预测数据黑盒子

    如果观察包含S对于连续预测和方法“conditional-kernel”, 然后福芙不使用观测值进行Shapley值计算。否则,福芙处理in.X在相同的方式BlackBoxModel.(这预测的目标函数BlackBoxModel.或指定的功能句柄BlackBoxModel.).

    福芙存储所有观察,包括具有缺失值的行,在此属性中。

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

    对象功能

    合身 计算查询点的福利值
    阴谋 情节夏普利值

    例子

    全部收缩

    培训分类模型并创建一个福芙对象。当你创建一个福芙对象,指定查询点,使得软件计算沙普利值查询点。然后使用对象函数创建Shapley值的柱状图阴谋

    加载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}

    通过使用培训Blackbox模型的信用评级模型fitcecoc函数。在第二列中使用第二列中的变量TBL.作为预测变量。推荐的做法是指定类名来设置类的顺序。

    Blackbox = FitCecoc(TBL,'评分'...'predictornames',tbl.Properties.VariableNames(2:7),...'pationoricalpricictors''行业'...“类名”, {“AAA”“AA”“一个”'BBB'“BB”“B”“CCC”});

    创建一个福芙对象,它解释了最后一次观测的预测。指定一个查询点,以便软件计算Shapley值并将它们存储在ShapleyValues财产。

    queryPoint =(资源(最终,:)
    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'}
    讲解员=沙普利(黑盒,“QueryPoint”queryPoint)
    警告:计算可能很慢,因为预测器数据有超过1000个观测。使用较小的训练集样本,或指定“UseParallel”为真值,以实现更快的计算。
    解释器=福利属性:BlackBoxModel:[1x1 classificationCoc] QueryPoint:[1x8表] Blackboxfited:{'AA'} ShapleyValues:[6x8表] NumsubSets:64 x:[3932x6表] CateOricalPredictors:6方法:'Snormentional-Kernel'

    由于警告消息指示,所以计算可能很慢,因为预测器数据具有超过1000个观察。为了更快计算,使用较小的培训集样本或指定'使用指平行'作为真正的

    对于分类模型,福芙使用每个类的预测类得分计算Shapley值。中的值显示ShapleyValues财产。

    讲解员。沙普利价值s
    ANS =6×8表预测AAA AA BBB BB B 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.3904 -0.00018925 e-05-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.00069003 "Industry" -0.028974 -0.013901 0.0010365 0.023298 0.026474 0.029887 0.045396

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

    通过使用积为预测类沙普利值阴谋函数。要在任何预测器名称中显示现有的下划线,请更改ticklabelinterpreter.轴的值'没有任何'

    F =图。情节(解释器)f.CurrentAxes.TickLabelInterpreter ='没有任何';

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

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

    火车回归模型并创建一个福芙对象。当你创建一个福芙对象,如果不指定查询点,则该软件不会计算沙普利值。使用对象功能合身来计算指定查询点的Shapley值。然后使用对象函数创建Shapley值的柱状图阴谋

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

    加载carbig

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

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

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

    台= rmmissing(台);

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

    rng (“默认”重复性的%mdl = fitrkernel(资源描述,'mpg''pationoricalpricictors',[2 5]);

    创建一个福芙对象。指定数据集TBL., 因为mdl不包含培训数据。

    解释器=福利(MDL,TBL)
    explainer = shapley with properties: BlackboxModel: [1x1 RegressionKernel] QueryPoint: [] BlackboxFitted: [] ShapleyValues: [] NumSubsets: 64 X: [392x7 table] CategoricalPredictors: [2 5] Method: ' interinteral -kernel'

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

    计算所有预测变量的值,沙普利在第一观察TBL.

    : queryPoint =(资源(1)
    querypoint =1×7表加速气缸位移马力Model_Year体重MPG  ____________ _________ ____________ __________ __________ ______ ___ 12 8 307 130 70 3504
    解释器= fit(解释器,querypoint);

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

    讲解员。沙普利价值s
    ANS =6×2表预测器ShapleyValue ______________ ____________“加速度”-0.1561“气缸”-0.18306“位移”-0.34203“马力”-0.27291“Model_Year”-0.2926“重量”-0.32402

    控件显示查询点的预测响应,并绘制查询点的Shapley值阴谋函数。要在任何预测器名称中显示现有的下划线,请更改ticklabelinterpreter.轴的值'没有任何'

    解释者.Blackboxfited.
    ans = 21.0495
    F =图。情节(解释器)f.CurrentAxes.TickLabelInterpreter ='没有任何';

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

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

    火车回归模型并创建一个福芙对象使用函数句柄预测模型的功能。使用对象功能合身来计算指定查询点的Shapley值。然后通过使用对象函数绘制沙普利值阴谋

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

    加载carbig

    创建一个包含预测变量表加速气缸,等等。

    TBL =桌子(加速,气瓶,位移,马力,型号,重量);

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

    rng (“默认”重复性的%Mdl = TreeBagger(100台,英里/加仑,“方法”“回归”'pationoricalpricictors',[2 5]);

    福芙不支持万博1manbetxtreebagger直接对象,所以不能指定的第一个输入参数(黑箱模型)福芙作为 atreebagger对象。的函数句柄预测函数。的选项预测使用函数的名称值参数函数。

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

    f = @(tbl)预测(mdl,tbl,“树”,1:50);

    创建一个福芙对象使用函数句柄F.当您指定黑箱模型作为函数句柄时,您必须提供预测器数据。TBL.包括分类预测因子(圆筒Model_Year)与之双倍的数据类型。默认情况下,福芙不使用双倍的作为分类预测器的数据类型。指定第二个(圆筒)及第五(Model_Year)变量作为分类预测因子。

    解释者=福芙(F,TBL,'pationoricalpricictors',[2 5]);解释器=拟合(解释器,TBL(1,:));

    绘制福利值。

    图(解释器)

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

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

    tbl.properties.variablenames([3 2 6 4 5 1])
    ans =.1x6细胞列1到4 {'sentacement'} {'cylinders'} {'weight'} {'horsepower'}列5到6 {'model_year'} {'acceleration'}

    更多关于

    展开全部

    参考文献

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

    [2] AAS,Kjersti,Martin。jullum,和安德斯兰德兰。“在特征依赖时解释个人预测:对福芙值的更准确的近似值。”arxiv:1903.10464(2019).

    扩展功能

    在R2021A介绍