健壮的方法真的更好吗?

机器算法验证 主成分分析 物流 预测模型 强大的
2022-01-20 17:30:28

我有两组受试者,A 和 B,每组的大小约为 400,以及大约 300 个预测变量。我的目标是建立一个二元响应变量的预测模型。我的客户希望看到在 B 上应用从 A 构建的模型的结果。(在他的《回归建模策略》一书中,@FrankHarrell 提到最好将两个数据集结合起来并在此基础上构建模型,因为这样做会增加能力和精度 --- 见第 90 页,外部验证。我倾向于同意他的观点,考虑到收集我拥有的数据类型非常昂贵且耗时。但我无法选择客户想要什么.) 我的许多预测指标都高度相关,而且非常偏斜。我正在使用逻辑回归来构建我的预测模型。

我的预测主要来自力学。的各种值,受试者在时间段内处于高于阈值的压力的总时间。很明显,仅从它们的定义来看,这些总时间中的许多都是在代数上相互关联的。许多在代数上不相关的预测变量因其性质而相关:在时间段内处于高压力下的受试者往往在时间段内处于高压力下,即使α[t1,t2]α>00t1<t2[t1,t2][t3,t4][t1,t2][t3,t4]=. 为了减少数据的维度,我将相关的预测变量聚集在一起(例如,所有的总压力时间放在一起),并使用主成分分析来表示每个集群。由于变量是倾斜的,我尝试了两种替代路径:

  • 在进行 PCA 之前,我使用了对数变换来减少变量的偏斜。
  • 我使用 Mia Hubert 的 ROBPCA 算法(由 R 中的 rrcov 包(PcaHubert)实现)来找到稳健的主成分。

我使用 ROC 曲线的整体形状、精确召回曲线的形状和 ROC 曲线下面积 (AUC) 作为我的性能指标,并且我希望对数据集 A 和 B 都获得相似的结果. 我原以为使用稳健的主成分会得到更好的结果,但令我惊讶的是,第一种方法做得更好:数据集 A 和 B 的 AUC 值更好,ROC 曲线之间的相似性更高,精确召回更相似曲线。

对此有何解释?我怎样才能使用健壮的主成分,而不是试图让我的数据看起来像正常的?您是否推荐任何特别强大的 PCA 方法来代替 ROBPCA?

1个回答

简而言之,根据您的描述,您将苹果与橙子进行比较……以两种方式。

让我简要地解决第一个可比性问题。对数变换没有解决异常值问题。但是,它可以帮助使严重偏斜的数据更加对称,从而可能提高任何 PCA 方法的拟合度。简而言之,获取数据的并不能替代进行稳健的分析,并且在某些情况下(偏斜数据)很可能是一种补充。撇开第一个混杂因素不谈,在本文的其余部分,我使用一些非对称双变量数据的对数转换版本。log

考虑这个例子:

library("MASS")
library("copula")
library("rrcov")
p<-2;n<-100;

eps<-0.2
l1<-list()
l3<-list(rate=1)
#generate assymetric data
model<-mvdc(claytonCopula(1,dim=p),c("unif","exp"),list(l1,l3));
x1<-rMvdc(ceiling(n*(1-eps)),model);
#adding 20% of outliers at the end:
x1<-rbind(x1,mvrnorm(n-ceiling(n*(1-eps)),c(7,3),1/2*diag(2))) 

数据

现在,在数据日志中拟合两个模型(ROBPCA 和经典 pca):

x2<-log(x1)
v0<-PcaClassic(x2)
v1<-PcaHubert(x2,mcd=FALSE,k=2)

现在,考虑每种方法找到的最小变化轴(为了方便起见,我将其绘制在对数变换空间上,但您会在原始空间上得到相同的结论)。

模型

显然,ROBPCA 在处理数据中未受污染的部分(绿点)方面做得更好:

但是现在,我要谈第二点了。

所有绿点的集合,而 ( ) 为最小变化轴的稳健(经典) pca 分数 --Huziwi

你有这个(这在上图中很明显):

iHu(zi)2<iHu(wi)2(1)

但你似乎很惊讶:

i=1n(zi)2>i=1n(wi)2(2)

--按照您描述测试过程的方式,您计算整个数据集的拟合评估标准,因此您的评估标准是 (2) 的单调函数,您应该使用 (1) 的单调函数--

换句话说,不要期望稳健拟合的正交残差平方和小于完整数据集上的非稳健过程:非稳健估计器已经是完整数据集上 SSOR 的唯一最小化器。