Partial Dependence Plot (PDP)

原文:HTML
翻译:我


部分依赖图(partial dependence plot,PDP or PD plot)显示了一个或两个特征对机器学习模型预测结果的边际影响(J. H. Friedman 2001)。部分依赖图可以显示目标和特征之间的关系是线性的、单调的还是比较复杂的。例如,当应用于线性回归模型时,部分依赖图总是显示线性关系。

回归的偏相关函数定义为:
f ^ x S ( x S ) = E x C [ f ^ ( x S , x C ) ] = ∫ f ^ ( x S , x C ) d P ( x C ) \hat{f}_{x_S}(x_S)=E_{x_C}\left[\hat{f}(x_S,x_C)\right]=\int\hat{f}(x_S,x_C)d\mathbb{P}(x_C) f^​xS​​(xS​)=ExC​​[f^​(xS​,xC​)]=∫f^​(xS​,xC​)dP(xC​)

x S x_S xS​ 是应绘制部分依赖函数的特征, x C x_C xC​ 是机器学习模型 f ^ \hat{f} f^​ 中使用的其他特征。通常,在集合S中只有一个或两个特征,S中的特征是那些我们想知道对预测效果的特征。特征向量 x S x_S xS​ 和 x C x_C xC​ 部分依赖的工作原理是:将机器学习模型的输出在集合C中的特征分布上进行边际化(marginalizing),从而使函数显示出我们感兴趣的集合S中的特征与预测结果之间的关系。通过在其他特征上边际化,我们得到一个只依赖于S中的特征、包括与其他特征的相互作用的函数

部分函数(partial function) f ^ x S \hat{f}_{x_S} f^​xS​​ 是通过计算训练数据中的平均值来估算的,也称为蒙特卡洛方法:

f ^ x S ( x S ) = 1 n ∑ i = 1 n f ^ ( x S , x C ( i ) ) \hat{f}_{x_S}(x_S)=\frac{1}{n}\sum_{i=1}^n\hat{f}(x_S,x^{(i)}_{C}) f^​xS​​(xS​)=n1​i=1∑n​f^​(xS​,xC(i)​)

部分函数告诉我们,对于给定的特征值S,对预测的平均边际效应是多少。在这个公式中: x C ( i ) x^{(i)}_{C} xC(i)​ 是数据集中我们不感兴趣的特征的实际特征值,n是数据集中的实例数。PDP的一个假设是C中的特征与S中的特征不相关,如果违反了这个假设,计算出的部分依赖图的平均值就会包含一些不太可能甚至不可能的数据点(见缺点)

对于机器学习模型输出概率的分类,部分依赖性图显示了S中特征的不同值下某类的概率,处理多类的简单方法是每类画一条线或图。

部分依赖图是一种全局方法:该方法考虑所有实例,并给出有关特征与预测结果的全局关系的说明

Categorical features

到目前为止,我们只考虑了数字特征。对于分类特征,部分依赖性非常容易计算。对于每一个类别,我们通过强迫所有数据实例具有相同的类别来获得PDP估计。例如,如果我们查看自行车租赁数据集,并对季节的部分依赖性图感兴趣,我们得到4个数字,每个季节一个。为了计算 "夏天 "的值,我们将所有数据实例的季节替换为 “夏天”,并对预测值进行平均。


1 Examples

在实践中,特征集S通常只包含一个特征或最多包含两个特征,因为一个特征产生2D图,两个特征产生3D图。除此之外的一切都相当棘手。即使是2D纸或显示器上的3D也已经很有挑战性了。

让我们回到回归的例子,在这个例子中,我们预测某一天会有多少辆自行车被租走。首先我们拟合一个机器学习模型,然后我们分析部分依赖关系。在这个例子中,我们拟合了一个随机森林来预测自行车的数量,并使用部分依赖性图来可视化模型所学习的关系。天气特征对预测的自行车数量的影响如下图所示。

Partial Dependence Plot (PDP)
图5.2:自行车数量预测模型与温度、湿度和风速的PDP。在温度方面可以看到最大的差异。越热,自行车的租用量越多。这种趋势一直到20摄氏度,然后在30摄氏度时趋于平缓并略有下降。X轴上的标记表示数据分布。

对于温暖但不太热的天气,该模型平均预测租赁自行车的数量较多。当湿度超过60%时,潜在的骑行者会越来越抑制租车。此外,风越大,喜欢骑车的人越少,这也在情理之中。有趣的是,当风速从25公里/小时增加到35公里/小时时,预测的自行车租赁数量并没有下降,但没有太多的训练数据,所以机器学习模型可能无法学习这个范围的有意义的预测。至少在直觉上,我预计自行车的数量会随着风速的增加而减少,尤其是当风速非常高的时候。

为了说明具有分类特征的部分依赖图,我们研究了季节特征对预测自行车租赁量的影响。
Partial Dependence Plot (PDP)
图5.3:自行车数量预测模型和季节的PDP。出乎意料的是,所有季节都对模型预测产生相似的影响,仅在春季,模型预测的自行车出租量会减少。

我们还计算了宫颈癌分类的部分依赖性。这次我们根据风险因素拟合了一个随机森林来预测女性是否可能得宫颈癌。我们计算并可视化了随机森林的癌症概率对不同特征的部分依赖性。
Partial Dependence Plot (PDP)
图5.4. 癌症概率的PDPs基于年龄和使用激素避孕药的年限。基于年龄和使用激素避孕药年限的癌症概率PDP。对于年龄,PDP显示,40岁之前的概率较低,40岁之后概率增加。使用激素避孕药的年限越长,预测的癌症风险越高,尤其是10年后。对于这两个特征来说,没有多少具有大值的数据点,所以PD估计在这些地区不太可靠。

我们还可以一次可视化两个特征的部分依赖关系:
Partial Dependence Plot (PDP)
图5.5:癌症概率的PDP以及年龄和怀孕次数的相互作用。该图显示了45岁时癌症概率的增加。对于25岁以下的年龄,与0次或2次以上怀孕的女性相比,有1次或2次怀孕的女性的癌症预测风险较低。但得出结论时要小心。这可能只是一个相关性,而不是因果关系!


2 Advantages

部分依赖图的计算很直观。某一特定特征值的部分依赖性函数代表了平均预测值 如果我们强制所有数据点假设该特征值的话,根据我的经验,非专业人士通常很快就能理解PDPs的概念。

如果你计算PDP的特征与其他特征不相关,那么PDP完全代表了该特征对预测的平均影响。在不相关的情况下,解释很清楚:部分依赖图显示了当第j个特征发生变化时,你的数据集中的平均预测量是如何变化的。当特征相关时就比较复杂了,也请看缺点。

部分依赖图易于实现。

部分依赖图的计算有一个因果解释。我们对一个特征进行干预,并测量预测的变化。这种关系对于模型来说是因果关系–因为我们明确地将结果作为特征的函数来建模–但对于现实世界来说却不一定是因果关系。


3 Disadvantages

偏相关函数中的实际最大特征数为2。这不是PDP的错,而是二维表示(纸或屏幕)的错,也是我们无法想象3个以上尺寸的错。

有些 PD 图没有显示特征分布。忽略分布可能会产生误导,因为可能会过度解释几乎没有数据的区域。这个问题很容易通过显示地毯(x轴上数据点的指标)或直方图来解决。

独立性的假设是PD图的最大问题。假设计算出部分依赖性的特征与其他特征不相关。例如,假设你想预测一个人走路的速度,给定这个人的体重和身高。对于其中一个特征(如身高)的部分依赖性,我们假设其他特征(体重)与身高不相关,这显然是一个错误的假设。对于一定高度(如200厘米)下的PDP计算,我们对体重的边际分布进行平均,其中可能包括50公斤以下的体重,这对一个2米的人来说是不现实的。换句话说。当特征相关时,我们会在特征分布中实际概率很低的区域创建新的数据点(例如,一个人身高2米但体重低于50公斤的可能性不大)。解决这个问题的一个办法是累积局部效应图(Accumulated Local Effect plots,ALE plot),它用条件而不是边际分布来工作。

异质效应(Heterogeneous effects)可能被隐藏,因为PD曲线仅显示平均边际效应。假设对于一个特征,你的一半数据点与预测值有正相关–特征值越大预测值越大–而另一半数据点有负相关–特征值越小预测值越大。PD曲线可以是一条水平线,因为两半数据集的影响可能会相互抵消。然后你就会得出结论,特征对预测没有影响。通过绘制单条件期望曲线(individual conditional expectation curves,ICE curve)而不是集合线,我们可以发现异质效应。


4 Software and Alternatives

有许多实现PDP的R包。我为示例使用了iml包,但也有pdp或DALEX。在Python中,部分依赖图已内置到scikit-learn中,可以使用PDPBox。

本书介绍的PDP替代品是ALE图ICE曲线


Reference

  • Friedman, Jerome H. “Greedy function approximation: A gradient boosting machine.” Annals of statistics (2001): 1189-1232.↩

  • Zhao, Qingyuan, and Trevor Hastie. “Causal interpretations of black-box models.” Journal of Business & Economic Statistics, to appear. (2017).

上一篇:bootstrap栅栏系统css中的col-xs-*、col-sm-*、col-md-* 的意义以及 bootstrap一个标签中,同时有 col-xs , col-sm , col-md , col


下一篇:数组、冒泡排序、稀疏矩阵、面向对象