沙普利
沙普利值
描述
的沙普利查询点的特征值解释了由于该特征,查询点的预测与平均预测的偏差。对于每个查询点,所有特征的Shapley值之和对应于预测与平均值的总偏差。
您可以创建沙普利
对象用于具有指定查询点的机器学习模型(queryPoint
).该软件创建一个对象,并为查询点计算所有特征的Shapley值。
使用Shapley值来解释在指定查询点上各个特征对预测的贡献。使用情节
函数创建Shapley值的条形图。方法可以为另一个查询点计算Shapley值适合
函数。
创建
描述
还计算查询点的Shapley值讲解员
=沙普利(___“QueryPoint”,queryPoint
)queryPoint
并将计算得到的Shapley值存储在ShapleyValues
的属性讲解员
.您可以指定queryPoint
除了前面语法中的任何输入参数组合之外。
输入参数
黑箱
- - - - - -有待解释的机器学习模型
回归模型对象|分类模型对象|函数处理
要解释的机器学习模型,指定为完整或紧凑的回归或分类模型对象或函数句柄。
完整或紧凑模型对象——您可以指定完整或紧凑的回归或分类模型对象,其中具有
预测
对象的功能。该软件使用预测
函数来计算Shapley值。如果指定的模型对象不包含预测器数据(例如,紧凑模型),则必须使用
X
.在训练模型时,对预测器数据使用数字矩阵或表格,其中行对应于单个观察结果。
回归模型对象
支持模型 完整或紧凑回归模型对象 回归模型集合 RegressionEnsemble
,RegressionBaggedEnsemble
,CompactRegressionEnsemble
采用随机特征展开的高斯核回归模型 RegressionKernel
高斯过程回归 RegressionGP
,CompactRegressionGP
广义加性模型 RegressionGAM
,CompactRegressionGAM
高维数据的线性回归 RegressionLinear
神经网络回归模型 RegressionNeuralNetwork
,CompactRegressionNeuralNetwork
回归树 RegressionTree
,CompactRegressionTree
支持向量机回归 RegressionSVM
,CompactRegressionSVM
分类模型对象
支持模型 完整或紧凑的分类模型对象 判别分析分类器 ClassificationDiscriminant
,CompactClassificationDiscriminant
支持向量机或其他分类器的多类模型 ClassificationECOC
,CompactClassificationECOC
学习者集合进行分类 ClassificationEnsemble
,CompactClassificationEnsemble
,ClassificationBaggedEnsemble
基于随机特征展开的高斯核分类模型 ClassificationKernel
广义加性模型 ClassificationGAM
,CompactClassificationGAM
k最近的邻居分类器 ClassificationKNN
线性分类模型 ClassificationLinear
多类朴素贝叶斯模型 ClassificationNaiveBayes
,CompactClassificationNaiveBayes
神经网络分类器 ClassificationNeuralNetwork
,CompactClassificationNeuralNetwork
支持向量机分类器用于单类和二元分类 ClassificationSVM
,CompactClassificationSVM
用于多类分类的二叉决策树 ClassificationTree
,CompactClassificationTree
函数句柄——您可以指定一个函数句柄,该函数句柄接受预测器数据并返回一个列向量,其中包含预测器数据中的每个观察结果的预测。预测是对回归的预测响应,或对单个类别进行分类的预测得分。你必须提供预测数据使用
X
.
X
- - - - - -预测数据
数字矩阵|表格
预测数据,指定为数值矩阵或表格。每一行的X
对应一个观察结果,每一列对应一个变量。
对于数字矩阵:
组成列的变量
X
必须与训练的预测变量的顺序相同黑箱
,存储在黑箱。X
.如果你训练
黑箱
那就用桌子吧X
如果该表包含所有数值预测变量,则可以是数值矩阵。
一个表:
如果你训练
黑箱
使用一个表(例如,资源描述
),则所有预测变量均为X
必须具有与中相同的变量名和数据类型资源描述
.的列顺序X
是否需要对应列的顺序资源描述
.如果你训练
黑箱
使用一个数字矩阵,然后预测器名称在黑箱。PredictorNames
和对应的预测变量名X
一定是一样的。要在训练期间指定预测器名称,请使用“PredictorNames”
名称-值参数。的所有预测变量X
必须是数字向量。X
可以包含其他变量(响应变量、观察权重等),但是沙普利
忽略了它们。沙普利
除了字符向量的单元格数组外,不支持多列变量或单元格数组。
如果黑箱
是否必须提供不包含预测器数据或函数句柄的模型对象X
.如果黑箱
是一个完整的机器学习模型对象,你指定了这个参数,那么沙普利
不使用预测数据黑箱
;它只使用指定的预测器数据。
数据类型:单
|双
queryPoint
- - - - - -查询点
数值的行向量|单列表
查询点。沙普利
解释预测,指定为数值的行向量或单行表。
对于数值的行向量:
对于单行表:
如果你训练
黑箱
使用一个表(例如,资源描述
),则所有预测变量均为queryPoint
必须具有与中相同的变量名和数据类型资源描述
.的列顺序queryPoint
是否需要对应列的顺序资源描述
.如果你训练
黑箱
使用一个数字矩阵,然后预测器名称在黑箱。PredictorNames
和对应的预测变量名queryPoint
一定是一样的。要在训练期间指定预测器名称,请使用“PredictorNames”
名称-值参数。的所有预测变量queryPoint
必须是数字向量。queryPoint
可以包含其他变量(响应变量、观察权重等),但是沙普利
忽略了它们。沙普利
除了字符向量的单元格数组外,不支持多列变量或单元格数组。
如果queryPoint
包含南
S表示连续预测和“方法”
是“conditional-kernel”
,则Shapley值(ShapleyValues
)中返回的对象南
年代。否则,沙普利
处理南
年代queryPoint
以同样的方式黑箱
(预测
对象的函数黑箱
指定的函数句柄黑箱
).
例子:: blackbox.X (1)
将查询点指定为完整机器学习模型中预测器数据的第一个观察点黑箱
.
数据类型:单
|双
|表格
指定可选参数对为Name1 = Value1,…,以=家
,在那里的名字
参数名称和价值
对应的值。名-值参数必须出现在其他参数之后,但对的顺序并不重要。
在R2021a之前,名称和值之间用逗号隔开,并括起来的名字
在报价。
例子:沙普利(黑箱,QueryPoint,问,“方法”,“conditional-kernel”)
创建一个沙普利
对象,并计算查询点的Shapley值问
使用对kernelsha算法的扩展。
CategoricalPredictors
- - - - - -分类预测列表
正整数向量|逻辑向量|字符矩阵|字符串数组|字符向量的单元格数组|“所有”
类别预测器列表,指定为此表中的值之一。
价值 | 描述 |
---|---|
正整数向量 | 向量中的每个条目都是一个索引值,指示对应的预测器是分类的。索引值在1和之间 如果 |
逻辑向量 | 一个 |
字符矩阵 | 矩阵的每一行都是一个预测变量的名称。名称必须以表的形式与预测器数据的变量名称相匹配。用额外的空格填充名字,这样字符矩阵的每一行都有相同的长度。 |
字符向量的字符串数组或单元格数组 | 数组中的每个元素都是一个预测变量的名称。名称必须以表的形式与预测器数据的变量名称相匹配。 |
“所有” |
所有的预测都是绝对的。 |
如果您指定
黑箱
那么,作为函数句柄沙普利
从预测器数据中标识分类预测器X
.如果预测数据在表格中,沙普利
如果变量是逻辑向量、无序分类向量、字符数组、字符串数组或字符向量的单元格数组,则假定该变量是分类的。如果预测数据是一个矩阵,沙普利
假设所有的预测器都是连续的。要将任何其他预测器标识为类别预测器,请使用“CategoricalPredictors”
名称-值参数。如果您指定
黑箱
作为回归或分类模型对象,那么沙普利
类标识类别预测器CategoricalPredictors
属性。
沙普利
时支持有序分类预测器黑箱
支持有序的分类预测器和“方法”
是“interventional-kernel”
.
例子:“CategoricalPredictors”、“所有”
数据类型:单
|双
|逻辑
|字符
|字符串
|细胞
MaxNumSubsets
- - - - - -预测器子集的最大数目
min (2 ^ M, 1024)
在哪里米
是预测因子的数量吗(默认)|正整数
方法
- - - - - -Shapley值计算算法
“interventional-kernel”
(默认)|“conditional-kernel”
UseParallel
- - - - - -标志并行运行
假
(默认)|真正的
属性
BlackboxModel
- - - - - -有待解释的机器学习模型
回归模型对象|分类模型对象|函数处理
BlackboxFitted
- - - - - -机器学习模型计算查询点的预测
标量
此属性是只读的。
由机器学习模型计算的查询点预测(BlackboxModel
),指定为一个标量。
如果
BlackboxModel
是模型对象吗BlackboxFitted
是用于回归的预测响应或用于分类的分类标签。如果
BlackboxModel
是函数句柄吗BlackboxFitted
是函数句柄返回的值,可以是用于回归的预测响应,也可以是用于分类的单个类的预测得分。
数据类型:单
|双
|分类
|逻辑
|字符
|字符串
|细胞
CategoricalPredictors
- - - - - -分类预测指标
正整数向量|[]
此属性是只读的。
分类预测指标,指定为正整数的向量。CategoricalPredictors
包含指示相应的预测器是分类的索引值。索引值在1和之间p
,在那里p
用于训练模型的预测器的数量。如果没有一个预测器是绝对的,则此属性为空([]
).
如果您指定
黑箱
然后使用函数句柄沙普利
从预测器数据中标识分类预测器X
.如果指定“CategoricalPredictors”
参数,则参数设置此属性。如果您指定
黑箱
作为回归或分类模型对象,那么沙普利
方法确定此属性CategoricalPredictors
属性。
沙普利
时支持有序分类预测器黑箱
支持有序的分类预测器和“方法”
是“interventional-kernel”
.
数据类型:单
|双
拦截
- - - - - -平均预测
数值向量|数字标量
平均预测,对预测数据的平均X
,指定为数值向量或数值标量。
如果
BlackboxModel
那么,分类模型是对象吗拦截
是每个类的平均分类分数的向量。如果
BlackboxModel
那么,是回归模型对象吗拦截
是平均响应的标量。如果
BlackboxModel
是函数句柄吗拦截
是函数求值的平均值的标量。
对于一个查询点,所有特征的Shapley值的和对应于预测与平均值的总偏差(拦截
).
数据类型:单
|双
方法
- - - - - -Shapley值计算算法
“interventional-kernel”
|“conditional-kernel”
NumSubsets
- - - - - -预测器子集的数目
正整数
此属性是只读的。
用于Shapley值计算的预测器子集的数目,指定为正整数。
的“MaxNumSubsets”
的观点沙普利
或者是“MaxNumSubsets”
的观点适合
设置此属性。
有关如何沙普利
选择要使用的子集,参见计算成本.
数据类型:单
|双
QueryPoint
- - - - - -查询点
数值的行向量|单列表
此属性是只读的。
查询点。沙普利
用Shapley值(ShapleyValues
),指定为数值的行向量或单行表。
的queryPoint
的观点沙普利
或者是queryPoint
的观点适合
设置此属性。
数据类型:单
|双
|表格
ShapleyValues
- - - - - -查询点的Shapley值
表格
此属性是只读的。
查询点的Shapley值(QueryPoint
),指定为一个表。
对于回归,表有两列。第一列包含预测器变量名,第二列包含预测器的Shapley值。
对于分类,表有两个或更多列,这取决于中的类的数量
BlackboxModel
.第一列包含预测器变量名,其余列包含每个类的预测器的Shapley值。
数据类型:表格
X
- - - - - -预测数据
数字矩阵|表格
例子
在创建时计算Shapley值沙普利
对象
训练一个分类模型并创建一个沙普利
对象。当您创建沙普利
对象,指定一个查询点,以便软件计算查询点的Shapley值。然后使用object函数创建Shapley值的条形图情节
.
加载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}
训练一个信用评级的黑盒模型fitcecoc
函数。使用第二到第七列的变量资源描述
作为预测变量。推荐的做法是指定类名来设置类的顺序。
黑箱= fitcecoc(资源描述,“评级”,...“PredictorNames”tbl.Properties.VariableNames (7),...“CategoricalPredictors”,“行业”,...“类名”, {“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'为true以加快计算速度。
explainer = shapley with properties: BlackboxModel: [1x1 ClassificationECOC] QueryPoint: [1x8 table] blackboxfit: {'AA'} ShapleyValues: [6x8 table] NumSubsets: 64 X: [3932x6 table] CategoricalPredictors: 6方法:' intersecal -kernel'拦截:[-1.7642 -1.3677 -1.0980 -1.0645 -1.4758…]
正如警告消息所示,由于预测器数据有超过1000个观测值,计算可能会很慢。为了更快的计算,使用更小的训练集样本或指定“UseParallel”
作为真正的
.
对于分类模型,沙普利
计算Shapley值使用预测的班级成绩为每个班。控件中的值显示ShapleyValues
财产。
讲解员。沙普利价值s
ans =6×8表预测器AAA AAA BBB BBB CCC __________ _________ __________ ___________ __________ ___________ __________ __________ "WC_TA" 0.051507 0.022531 0.0093463 0.0017109 -0.027655 -0.041443 -0.039882 "RE_TA" 0.16772 0.094211 0.051629 -0.011019 -0.087919 -0.20974 -0.29463 "EBIT_TA" 0.0011995 0.00052588 0.00041919 0.00011866 -0.00066237 -0.0013347 -0.0011824 "MVE_BVTD" 1.3417 1.3082 0.61472 -0.11247 -0.6555 -0.86908 -0.68547 "S_TA" -0.013059 -0.0091049 -0.00031099 -0.0028624 -0.00019227 0.0016759-0.0024149“工业”-0.10142 -0.048668 0.0036522 0.081542 0.092657 0.10464 0.15888
的ShapleyValues
属性包含每个类的所有特征的Shapley值。
方法绘制预测类的Shapley值情节
函数。
情节(讲解员)
水平柱状图显示了所有变量的Shapley值,按它们的绝对值排序。每个Shapley值解释了查询点的分数与预测班级的平均分数的偏差,这是由相应的变量引起的。
创建沙普利
对象和计算Shapley值使用适合
训练一个回归模型并创建一个沙普利
对象。当您创建沙普利
对象,如果不指定查询点,则软件不计算Shapley值。使用object函数适合
,计算指定查询点的Shapley值。然后使用object函数创建Shapley值的条形图情节
.
加载carbig
数据集,包含70年代和80年代早期生产的汽车的测量数据。
负载carbig
创建一个包含预测变量的表加速度
,气缸
,等等,以及响应变量英里/加仑
.
台=表(加速度、汽缸、排量、马力、Model_Year重量,MPG);
删除训练集中的缺失值可以帮助减少内存消耗并加速训练fitrkernel
函数。中删除缺失的值资源描述
.
台= rmmissing(台);
训练一个黑箱模型英里/加仑
通过使用fitrkernel
函数
rng (“默认”)%的再现性mdl = fitrkernel(资源描述,“英里”,“CategoricalPredictors”[2 - 5]);
创建一个沙普利
对象。指定数据集资源描述
,因为mdl
不包含培训数据。
讲解员=沙普利(mdl(资源)
explainer = shapley with properties: BlackboxModel: [1x1 RegressionKernel] QueryPoint: [] blackboxsuits: [] ShapleyValues: [] NumSubsets: 64 X: [392x7 table] CategoricalPredictors:[2 5]方法:' interference -kernel'拦截:22.6202
讲解员
存储培训数据资源描述
在X
财产。
计算第一个观测值的所有预测变量的Shapley值资源描述
.
: queryPoint =(资源(1)
queryPoint =表1×7加速气缸位移马力Model_Year体重MPG ____________ _________ ____________ __________ __________ ______ ___ 12 8 307 130 70 3504
讲解员=适合(讲解员,queryPoint);
对于回归模型,沙普利
计算Shapley值使用预测响应,并将它们存储在ShapleyValues
财产。控件中的值显示ShapleyValues
财产。
讲解员。沙普利价值s
ans =6×2表预测ShapleyValue ______________ ____________“加速度”-0.1561“气缸”-0.18306“位移”-0.34203“马力”-0.27291“型号_year”-0.2926“重量”- 0.3402
方法绘制查询点的Shapley值情节
函数。
情节(讲解员)
水平柱状图显示了所有变量的Shapley值,按它们的绝对值排序。每个Shapley值解释了查询点的预测与平均值的偏差,这是由相应的变量引起的。
使用函数句柄指定黑箱模型
训练一个回归模型并创建一个沙普利
对象的函数句柄预测
模型的功能。使用object函数适合
,计算指定查询点的Shapley值。然后利用目标函数绘制Shapley值情节
.
加载carbig
数据集,包含70年代和80年代早期生产的汽车的测量数据。
负载carbig
创建一个包含预测变量的表加速度
,气缸
,等等。
台=表(加速度、汽缸、排量、马力、Model_Year重量);
训练一个黑箱模型英里/加仑
通过使用TreeBagger
函数。
rng (“默认”)%的再现性Mdl = TreeBagger(100台,英里/加仑,“方法”,“回归”,“CategoricalPredictors”[2 - 5]);
沙普利
不支持TreeBagger
的第一个输入参数(黑箱模型)沙普利
作为一个TreeBagger
对象。方法的函数句柄预测
函数。的选项预测
使用函数的名称-值参数的函数。
类的函数句柄预测
的函数TreeBagger
对象Mdl
.指定要用作的树索引数组1:50
.
f = @(tbl) predict(Mdl,tbl,“树”、1:50);
创建一个沙普利
对象使用函数句柄f
.当将黑箱模型指定为函数句柄时,必须提供预测器数据。资源描述
包括直言预测符(油缸
而且Model_Year
)双
数据类型。默认情况下,沙普利
不使用双
数据类型作为类别预测器。指定第二个(油缸
)和第五(Model_Year
)变量作为范畴预测器。
讲解员=沙普利(f(资源“CategoricalPredictors”[2 - 5]);讲解员=适合(讲解员,台(1:));
绘制Shapley值。
情节(讲解员)
更多关于
沙普利值
在博弈论中,参与人的Shapley值是合作博弈中参与人的平均边际贡献。在机器学习预测的上下文中,一个查询点的特征的Shapley值解释了该特征在指定查询点对预测的贡献(回归响应或每个类的分类评分)。
查询点的特征Shapley值是该特征对平均预测偏差的贡献。对于一个查询点,所有特征的Shapley值的和对应于预测与平均值的总偏差。也就是说,所有特征的平均预测值和Shapley值的和对应于查询点的预测。
有关更多细节,请参见机器学习模型的Shapley值.
参考文献
[1]伦德伯格,斯科特·M.和S.李。解释模型预测的统一方法。神经信息处理系统的研究进展30(2017): 4765 - 774。
Aas, Kjersti, Martin。Jullum和Anders Løland。当特征相互依赖时,解释个人预测:Shapley值的更精确近似。arXiv: 1903.10464(2019)。
扩展功能
自动并行支持
通过使用并行计算工具箱™自动并行运行计算来加速代码。
若要并行运行,请设置UseParallel
名称-值参数真正的
在这个函数的调用中。
有关并行计算的更多一般信息,请参见运行MATLAB函数与自动并行支持(并行计算工具箱).
版本历史
介绍了R2021a
MATLAB命令
你点击了一个对应于这个MATLAB命令的链接:
在MATLAB命令窗口中输入命令来运行该命令。Web浏览器不支持MATLAB命令。
您也可以从以下列表中选择网站:
如何获得最佳的网站性能
选择中国网站(中文或英文)以获得最佳的网站表现。其他MathWorks国家网站没有针对从您的位置访问进行优化。