回归p > np>n设置:如何选择正则化方法(Lasso、PLS、PCR、ridge)?

机器算法验证 回归 主成分分析 套索 岭回归 偏最小二乘法
2022-01-21 19:38:53

我正在尝试在存在大量变量/特征的情况下是否选择岭回归LASSO主成分回归(PCR) 或偏最小二乘法(PLS)(p) 和较少数量的样本 (n<p),我的目标是预测。

这是我的理解:

  1. 岭回归缩小回归系数,但使用所有系数而不使它们0.

  2. LASSO也缩小了系数,但也使它们0,这意味着它也可以进行变量选择。

  3. 主成分回归截断成分,使得p变得小于n; 它会丢弃pn组件。

  4. 偏最小二乘还构造了一组用于回归的输入的线性组合,但与 PCR 不同,它使用y(此外X) 用于降维。PCR 和 PLS 回归之间的主要实际区别在于,PCR 通常需要比 PLS 更多的组件来实现相同的预测误差(参见此处)。

考虑以下虚拟数据(我尝试使用的实际数据类似):

#random population of 200 subjects with 1000 variables 

M <- matrix(rep(0,200*100),200,1000)
for (i in 1:200) {
set.seed(i)
  M[i,] <- ifelse(runif(1000)<0.5,-1,1)
}
rownames(M) <- 1:200

#random yvars 
set.seed(1234)
u <- rnorm(1000)
g <- as.vector(crossprod(t(M),u))
h2 <- 0.5 
set.seed(234)
y <- g + rnorm(200,mean=0,sd=sqrt((1-h2)/h2*var(g)))

myd <- data.frame(y=y, M)

四种方法的实现:

 require(glmnet)

 # LASSO 
 fit1=glmnet(M,y, family="gaussian", alpha=1)

 # Ridge   
 fit1=glmnet(M,y, family="gaussian", alpha=0)

 # PLS
 require(pls)
 fit3 <- plsr(y ~ ., ncomp = 198, data = myd, validation = "LOO")
 # taking 198 components and using leave-one-out cross validation 
 summary(fit3)
 plot(RMSEP(fit3), legendpos = "topright")

 # PCR 
 fit4 <- pcr(y ~ ., ncomp = 198, data = myd, validation = "LOO")

数据的最佳描述是:

  1. p>n, 大多数时候 p>10n;

  2. 变量 (XY)以不同程度相互关联。

我的问题是哪种策略最适合这种情况?为什么?

1个回答

我认为你的问题没有单一的答案——这取决于许多情况、数据和你想要做什么。一些修改可以或应该修改以实现目标。但是,以下一般性讨论会有所帮助。

在进入更高级的方法之前,让我们先讨论基本模型:最小二乘 (LS) 回归完整模型中参数的最小二乘估计不令人满意的原因有两个:

  1. 预测质量:最小二乘估计通常具有较小的偏差但较高的方差。有时可以通过缩小回归系数或将某些系数设置为零来提高预测质量。这样,偏差会增加,但预测的方差会显着降低,从而导致整体改进的预测。通过分解均方误差 (MSE)可以很容易地看出偏差和方差之间的这种权衡。 较小的 MSE 可以更好地预测新值。

  2. 可解释性:如果有许多预测变量可用,那么确定影响最大的变量并将与预测无关的变量设置为零是有意义的。因此,我们消除了仅能解释一些细节的变量,但我们保留了那些允许对响应变量进行主要解释的变量。

因此,可变选择方法应运而生。通过变量选择,仅使用所有输入变量的一个子集,其余的从模型中消除。最佳子集回归找到大小的子集k对于每个k{0,1,...,p}这给出了最小的 RSS。一种有效的算法是所谓的跳跃和边界算法,它可以处理多达30或者40回归变量。数据集大于40输入变量 搜索所有可能的子集变得不可行。因此,前向逐步选择和后向逐步选择很有用。 后向选择只能在以下情况下使用n>p以获得良好定义的模型。这些方法的计算效率是有问题的p非常高。

在许多情况下,我们有大量输入(如您的),通常高度相关(如您的情况)。在高度相关的回归量的情况下,OLS 会导致数值不稳定的参数,即不可靠β估计。为了避免这个问题,我们使用使用派生输入方向的方法。这些方法产生少量的线性组合zk,k=1,2,...,q原始输入xj然后将其用作回归中的输入。

这些方法的不同在于如何构建线性组合。主成分回归 (PCR)寻找将原始数据转换为一组称为主成分的新的不相关变量。

偏最小二乘 (PLS) 回归- 该技术还为回归构建一组输入的线性组合,但与它使用的主成分回归不同y此外X对于这个建筑。我们假设两者yX居中。而不是计算参数β在线性模型中,我们估计参数γ在所谓的潜变量模式下。我们假设新的系数γ有维度qp. PLS 对加权版本进行回归X其中包含不完整或部分信息。由于 PLS 也使用y为了确定 PLS 方向,这种方法应该比 PCR 具有更好的预测性能。与 PCR 相比,PLS 正在寻找具有高方差和大相关性的方向y.

收缩方法将所有变量保留在模型中并分配不同的(连续的)权重。通过这种方式,我们获得了具有较小可变性的更平滑的过程。岭回归通过对它们的大小施加惩罚来缩小系数。岭系数最小化惩罚残差平方和。这里λ0是控制收缩量的复杂度参数:值越大λ,收缩量越大。系数向零(以及彼此)收缩。

通过惩罚 RSS,我们试图避免高度相关的回归量相互抵消。一个特别大的正系数β可以被一个同样大的负系数抵消β. 通过对系数施加大小约束,可以防止这种现象。

可以看出PCR 与岭回归非常相似:两种方法都使用输入矩阵的主成分X. 岭回归收缩主成分的系数,收缩取决于相应的特征值;PCR 将组件完全丢弃到最小pq特征值。

lasso是一种类似于 ridge的收缩方法,但在约束中使用的是 L1 范数而不是 L2 范数。L1-范数损失函数也称为最小绝对偏差(LAD)最小绝对误差(LAE)。它基本上是最小化目标值和估计值之间的绝对差之和。L2 范数损失函数也称为最小二乘误差 (LSE)。它基本上是最小化目标值之间差异的平方和(Yi) 和估计值。L1 和 L2 的区别只是 L2 是权重的平方和,而 L1 只是权重的和。 L1-norm 倾向于产生稀疏系数并且具有内置的特征选择L1-norm 没有解析解,但 L2-norm 有。这允许高效地计算 L2 范数解。L2-norm 有独特的解决方案,而 L1-norm 没有。

Lassoridge的处罚期限不同。套索解决方案是非线性的,并且使用二次规划算法来计算它们。由于约束的性质,使s足够小会导致一些系数正好0. 因此套索进行了一种连续的子集选择就像子集选择中的子集大小,或者岭回归中的惩罚一样,sshould be adaptly chosen to minimize an estimate of expected prediction error.

什么时候pN,高方差和过拟合是此设置中的主要问题。因此,简单、高度正则化的方法通常成为首选方法。

主成分分析是寻找在数据集中表现出较大变化的特征的线性组合的有效方法。但我们在这里寻求的是具有高方差和与结果显着相关性的线性组合。因此,我们希望鼓励主成分分析来找到与结果监督主成分高度相关的特征的线性组合(参见《统计学习要素》一书中的第 678 页,算法 18.1 )。

偏最小二乘法降低噪声特征的权重,但不会丢弃它们;因此,大量的噪声特征会污染预测。阈值 PLS 可以被视为监督主成分的噪声版本,因此我们可能不期望它在实践中也能正常工作。受监督的主成分可以产生比阈值 PLS更低的测试误差。然而,它并不总是产生一个只包含少量特征的稀疏模型。

另一方面,套索从数据中生成稀疏模型。Ridge 总能表现平平。我认为当人数众多时套索是不错的选择p. 有监督的主成分也可以很好地工作。