Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
  • Loading branch information
szcf-weiya committed Sep 6, 2021
1 parent 17ff28c commit 0b71694
Show file tree
Hide file tree
Showing 2 changed files with 25 additions and 13 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -20,10 +20,10 @@
主成分回归构造派生的输入列 $\mathbf z_m=\mathbf Xv_m$,然后在 $\mathbf z_1,\mathbf z_2,\ldots,\mathbf z_M,\; M\le p$ 上回归 $\mathbf y$.因为 $\mathbf z_m$ 是正交的,则这个回归只是单变量回归的和

$$
\hat{\mathbf y}^{pcr}_{(M)}=\bar y\mathbf 1+\sum\limits_{m=1}^M\hat{\theta}_m\mathbf z_m\tag{3.61}
\hat{\mathbf y}^{pcr}_{(M)}=\bar y\mathbf 1+\sum\limits_{m=1}^M\hat{\theta}_m\mathbf z_m\tag{3.61}\label{3.61}
$$

其中,$\hat\theta_m=\langle \mathbf z_m,\mathbf y\rangle/\langle\mathbf z_m,\mathbf z_m\rangle$.因为每个 $\mathbf z_m$ 是原输入变量 $\mathbf x_j$ 的线性组合,我们可以将解 (3.61) 表达成关于 $\mathbf x_j$ 的系数([练习 3.13](https://github.com/szcf-weiya/ESL-CN/issues/102)):
其中,$\hat\theta_m=\langle \mathbf z_m,\mathbf y\rangle/\langle\mathbf z_m,\mathbf z_m\rangle$.因为每个 $\mathbf z_m$ 是原输入变量 $\mathbf x_j$ 的线性组合,我们可以将解 \eqref{3.61} 表达成关于 $\mathbf x_j$ 的系数([练习 3.13](https://github.com/szcf-weiya/ESL-CN/issues/102)):

$$
\hat\beta^{pcr}(M)=\sum\limits_{m=1}^M\hat\theta_mv_m\tag{3.62}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
| ---- | ---------------------------------------- |
| 翻译 | szcf-weiya |
| 发布 | 2016-10-21 |
|更新|2019-02-18 16:25:57|
|更新 | {{ git_revision_date }} |
|状态 |Done|

自从 LAR 算法(Efron et al., 2004[^1])的提出,许多研究都在发展对于不同问题的正则化拟合算法.另外,$L_1$ 正则有它自己的用处,它促进了信号处理领域的 **压缩传感 (compressed sensing)** 的发展(Donoho, 2006a[^2]; Candes, 2006[^3]).在这部分我们讨论一些相关的想法和以 LAR 算法为先驱的其它路径算法.
Expand All @@ -31,7 +31,7 @@

![](../img/03/fig3.19.png)

这里我们主要对小的 $\epsilon$ 值感兴趣.令 $\epsilon\rightarrow 0$ 则得到图 3.19 的右图,在这种情形下与图 3.10 的 lasso 路径相同.我们称这个极限过程为 **无穷小的向前逐渐回归 (infinitesimal forward stagewise regression)** 或者 $FS_0$ .这个过程在非线性、自适应方法中有着很重要的作用,比如 boosting([第 10](../10-Boosting-and-Additive-Trees/10.1-Boosting-Methods/index.html)[16 章](../16-Ensemble-Learning/16.1-Introduction/index.html)),并且是增长的向前逐渐回归的,这是最能经得起理论分析的版本.由于它与 boosting 的关系,Buhlmann and Hothorn (2007)[^4]称这个过程为"L2boost"
这里我们主要对小的 $\epsilon$ 值感兴趣.令 $\epsilon\rightarrow 0$ 则得到图 3.19 的右图,在这种情形下与图 3.10 的 lasso 路径相同.我们称这个极限过程为 **无穷小的向前逐渐回归 (infinitesimal forward stagewise regression)** 或者 $FS_0$ .这个过程在非线性、自适应方法中有着很重要的作用,比如 boosting([第 10](../10-Boosting-and-Additive-Trees/10.1-Boosting-Methods/index.html)[16 章](../16-Ensemble-Learning/16.1-Introduction/index.html)),并且是增长的向前逐渐回归的,这是最能经得起理论分析的版本.由于它与 boosting 的关系,Buhlmann and Hothorn (2007)[^4]称这个过程为"L2boost"

Efron 最初认为 LAR 算法 3.2 是 $FS_0$ 的一个实现,允许每个连结变量 (tied predictor) 以一种平衡的方式更新他们的系数,并且在相关性方面保持连结.然而,他接着意识到 LAR 在这些连结预测变量中的最小二乘拟合可以导致系数向相反的方向移动到它们的相关系数,这在算法 3.4 中是不可能发生的.下面对 LAR 算法的修正实现了 $FS_0$:

Expand Down Expand Up @@ -59,7 +59,7 @@ $$

因为 $FS_0$ 与 lasso 不同,很自然地问它是否优化了准则.答案比 lasso 更加的复杂;$FS_0$ 系数曲线是微分方程的一个解.尽管 lasso 在降低系数向量 $\beta$ 的 $L_1$ 范数的单位残差平方和增长方面实现了最优化,但 $FS_0$ 在沿着系数路径的 $L_1$ 弧长的单位增长是最优的.因此它的系数曲线不会经常改变方向.

$FS_0$ 比 lasso的约束更强,事实上也可以看成是lasso的单调版本;见图16.3生动的例子.$FS_0$ 可能在 $p>>N$ 情形下很有用,它的系数曲线会更加的光滑,因此比 lasso 有更小的方差.更多关于 $FS_0$ 的细节将在 16.2.3 节给出以及 Hastie et al. (2007)[^5].图 3.16 包含了$FS_0$, 它的表现非常类似于 lasso.
$FS_0$ 比 lasso的约束更强,事实上也可以看成是 lasso 的单调版本;见图 16.3 生动的例子.$FS_0$ 可能在 $p>>N$ 情形下很有用,它的系数曲线会更加的光滑,因此比 lasso 有更小的方差.更多关于 $FS_0$ 的细节将在 16.2.3 节给出以及 Hastie et al. (2007)[^5].图 3.16 包含了$FS_0$, 它的表现非常类似于 lasso.

## 分段线性路径算法

Expand Down Expand Up @@ -119,7 +119,14 @@ $$

Candes and Tao (2007)[^7]证明了求解 DS 是线性规划问题;为了纪念 George Dantzig(线性规划中单纯形法的发明者),因此称为 Dantzig.他们也证明了该方法的一系列有趣的数学问题,这些性质与重建潜在的稀疏系数向量的能力有关.如 Bickel et al. (2008)[^13] 所证明,这些性质对于 lasso 也适用.

不幸的是 DS 方法的运算性质不够令人满意.这个方法想法上与 lasso 类似,特别是当我们观察 lasso 的平稳条件 (3.58).和 LAR 算法一样,对于活跃集中的所有变量,lasso 保持着与当前残差相同的内积(以及相关系数),并且将它们的系数向残差平方和的最优下降方向变化.在这个过程中,相同的相关系数单调下降([练习 3.23](https://github.com/szcf-weiya/ESL-CN/issues/100)),并且在任何时刻这个相关性大于非活跃集中的变量.
不幸的是 DS 方法的运算性质不够令人满意.这个方法想法上与 lasso 类似,特别是当我们观察 lasso 的平稳条件 \eqref{3.58}.

!!! note "Recall"
$$
\mathbf x_j^T(\mathbf y-\mathbf X\beta)=\lambda\cdot \sign(\beta_j),\forall j\in {\cal B}\tag{3.58}\label{3.58}
$$

和 LAR 算法一样,对于活跃集中的所有变量,lasso 保持着与当前残差相同的内积(以及相关系数),并且将它们的系数向残差平方和的最优下降方向变化.在这个过程中,相同的相关系数单调下降([练习 3.23](https://github.com/szcf-weiya/ESL-CN/issues/100)),并且在任何时刻这个相关性大于非活跃集中的变量.

!!! info "weiya 注:Ex. 3.23"
已解决,详见 [Issue 100: Ex. 3.23](https://github.com/szcf-weiya/ESL-CN/issues/100),欢迎讨论交流.
Expand All @@ -128,7 +135,7 @@ Candes and Tao (2007)[^7]证明了求解 DS 是线性规划问题;为了纪念

## The Grouped Lasso

在一些问题中,预测变量属于预定义的群体中;举个例子,属于同一个生物路径的基因,或者表示类别型数据层次的指示变量(哑变量).在这种情形中,或许想要对群体中每个成员一起进行收缩或选择.grouped lasso 便是一种实现方式.假设 $p$ 个预测变量被分到 $L$ 个群中,在第 $\ell$ 个群中有 $p_\ell$ 个成员.为了简便,我们采用矩阵 $\mathbf X_\ell$ 来表示对应第 $\ell$ 个群的预测变量,对应的系数向量为$\beta_\ell$.grouped-lasso 最小化下面的凸准则
在一些问题中,预测变量属于预定义的群体中;举个例子,属于同一个生物路径的基因,或者表示类别型数据层次的指示变量(哑变量).在这种情形中,或许想要对群体中每个成员一起进行收缩或选择.Grouped lasso 便是一种实现方式.假设 $p$ 个预测变量被分到 $L$ 个群中,在第 $\ell$ 个群中有 $p_\ell$ 个成员.为了简便,我们采用矩阵 $\mathbf X_\ell$ 来表示对应第 $\ell$ 个群的预测变量,对应的系数向量为$\beta_\ell$.grouped-lasso 最小化下面的凸准则

$$
\underset{\beta\in \IR^p}{\mathrm{min}}\Big(\Vert \mathbf y-\beta_0\boldsymbol 1-\sum\limits_{\ell=1}^L\mathbf X_\ell\beta_\ell\Vert_2^2+\lambda \sum\limits_{\ell=1}^L\sqrt{p_\ell}\Vert \beta_\ell\Vert_2\Big)\tag{3.80}
Expand All @@ -146,7 +153,7 @@ $$
\underset{j\in \cal S^c}{\mathrm{max}}\Vert \mathbf x_j^T\mathbf X_{\cal S}(\mathbf X_{\cal S}^T\mathbf X_{\cal S})^{-1}\Vert_1\le (1-\epsilon)\text{ for some }\epsilon\in (0, 1]\tag{3.81}
$$

这里 $\cal S$ 标记真实的潜在模型中非零系数特征的子集,$\mathbf X_{\cal S}$ 是 $\mathbf X$ 中对应的这些特征的列.类似地,$\cal S^c$是真实系数为 0 的特征的集合,$\mathbf X_{\cal S^c}$ 是对应的列.这说明 $\mathbf X_{\cal S^c}$ 的列在 $\mathbf X_{\cal S}$ 上的最小二乘系数不会太大,也就是,“好”的变量 $\cal S$ 与多余的变量 $\cal S^c$ 之间不是高度相关.
这里 $\cal S$ 标记真实的潜在模型中非零系数特征的子集,$\mathbf X_{\cal S}$ 是 $\mathbf X$ 中对应的这些特征的列.类似地,$\cal S^c$是真实系数为 0 的特征的集合,$\mathbf X_{\cal S^c}$ 是对应的列.这说明 $\mathbf X_{\cal S^c}$ 的列在 $\mathbf X_{\cal S}$ 上的最小二乘系数不会太大,也就是,信号变量 $\cal S$ 与冗余变量 $\cal S^c$ 之间不是高度相关.

考虑这些系数本身,lasso 收缩导致非零系数的估计偏向 0,并且一般地他们不是一致的.降低这种偏差的一种方式是运行 lasso 来识别非零系数的集合,接着对选出的特征进行无约束线性模型拟合.另外,也可以采用 lasso 来选择非零预测变量,接着再次运用 lasso,但是从第一步开始便只用选择出的变量.这称为 relaxed lasso (Meinshausen, 2007[^19]).这个想法是采用交叉验证来估计 lasso 初始的惩罚参数,然后接着对选择出的变量再用一次惩罚参数.因为第二步中的变量与噪声变量之间的竞争变小,所以交叉验证会趋向于选择较小的 $\lambda$,因此它们的系数会比初始估计时收缩得要小.

Expand All @@ -163,9 +170,14 @@ $$

## Pathwise Coordinate Optimization

一种替代计算 lasso 的 LARS 算法是 **简单坐标下降 (simple coordinate descent)**.这个想法由 Fu (1998)[^27] 和 Daubechies et al. (2004)[^28] 提出,后来被 Friedman et al. (2007)[^29], Wu and Lange (2008)[^30] 和其他人研究及推广.想法是固定 Lagrangian 形式 (3.52) 中的惩罚参数 $\lambda$,在控制其它参数固定不变时,相继地优化每一个参数.
一种替代计算 lasso 的 LARS 算法是 **简单坐标下降 (simple coordinate descent)**.这个想法由 Fu (1998)[^27] 和 Daubechies et al. (2004)[^28] 提出,后来被 Friedman et al. (2007)[^29], Wu and Lange (2008)[^30] 和其他人研究及推广.想法是固定 Lagrangian 形式 \eqref{3.52} 中的惩罚参数 $\lambda$,在控制其它参数固定不变时,相继地优化每一个参数.

!!! note "Recall"
$$
\hat{\beta}^{lasso}=\underset{\beta}{\arg\min}\Big\{\sum\limits_{i=1}^N(y_i-\beta_0-\sum\limits_{j=1}^px_{ij}\beta_j)^2+\lambda\sum\limits_{j=1}^p\vert\beta_j\vert\Big\}\tag{3.52}\label{3.52}
$$

假设预测变量都经过标准化得到 0 均值和单位范数.用 $\tilde\beta_k(\lambda)$ 表示惩罚参数为 $\lambda$ 时对 $\beta_k$ 的当前估计.我们可以分离出 (3.52) 的 $\beta_j$,
假设预测变量都经过标准化得到 0 均值和单位范数.用 $\tilde\beta_k(\lambda)$ 表示惩罚参数为 $\lambda$ 时对 $\beta_k$ 的当前估计.我们可以分离出 \eqref{3.52} 的 $\beta_j$,

$$
R(\tilde\beta(\lambda),\beta_j)=\frac{1}{2}\sum\limits_{i=1}^N(y_i-\sum\limits_{k\neq j}x_{ik}\tilde \beta_k(\lambda)-x_{ij}\beta_j)^2+\lambda \sum\limits_{k\neq j}\vert \tilde \beta_k(\lambda)\vert+\lambda \vert \beta_j\vert
Expand All @@ -174,12 +186,12 @@ $$
其中我们压缩了截距并且为了方便引出因子 $\frac 12$.这个可以看成是响应变量为部分残差 $y_i-\tilde y_i^{(j)}=y_i-\sum_{k\neq j}x_{ik}\tilde \beta_k(\lambda)$.这有显式解,得到下面的更新

$$
\tilde \beta_j(\lambda)\leftarrow S(\sum\limits_{i=1}^Nx_{ij}(y_i-\tilde y_i^{(j)}),\lambda)\tag{3.84}\label{eq:3.84}
\tilde \beta_j(\lambda)\leftarrow S(\sum_{i=1}^Nx_{ij}(y_i-\tilde y_i^{(j)}),\lambda)\tag{3.84}\label{3.84}
$$

这里 $S(t,\lambda)=\sign(t)(\vert t\vert-\lambda)\_+$ 是表 3.4 中的软阈值算子.$S(\cdot)$ 中的第一个变量是部分残差在标准化变量 $x_{ij}$ 上的简单最小二乘系数.\eqref{eq:3.84} 的重复迭代——轮流考虑每个变量直到收敛——得到 lasso 估计 $\hat\beta(\lambda)$.
这里 $S(t,\lambda)=\sign(t)(\vert t\vert-\lambda)\_+$ 是表 3.4 中的软阈值算子.$S(\cdot)$ 中的第一个变量是部分残差在标准化变量 $x_{ij}$ 上的简单最小二乘系数.\eqref{3.84} 的重复迭代——轮流考虑每个变量直到收敛——得到 lasso 估计 $\hat\beta(\lambda)$.

我们也可以采用这种简单的算法来有效地计算在 $\lambda$ 的每个网格结点上 lasso 的解.我们从使得 $\hat\beta(\lambda_{max})=0$ 的最小 $\lambda_{\max}$ 开始,每次降低一点点来循环考虑每个变量直到收敛.采用前一个解作为 $\lambda$ 新值的“warm start”,$\lambda$ 再一次降低,并且重复该过程.这个可能比 LARS 算法快,特别是在大型问题中.它速度的关键在于 \eqref{3.84} 中的量随着 $j$ 变化可以快速更新,并且通常更新后有 $\tilde \beta_j=0$.另一方面,它在 $\lambda$ 的网格处求解,而不是整个解的路径.同样类型的算法可以应用到 elastic net,grouped lasso 以及许多其它惩罚为个体参数的函数之和的模型(Friedman et al., 2010[^31]).通过一些修改,这也可以应用到 fused lasso([18.4.2 节](../18-High-Dimensional-Problems/18.4-Linear-Classifiers-with-L1-Regularization.md));细节在 Friedman et al. (2007)[^29]中给出.
我们也可以采用这种简单的算法来有效地计算在 $\lambda$ 的每个网格结点上 lasso 的解.我们从使得 $\hat\beta(\lambda_{\max})=0$ 的最小 $\lambda_{\max}$ 开始,每次降低一点点来循环考虑每个变量直到收敛.采用前一个解作为 $\lambda$ 新值的“warm start”,$\lambda$ 再一次降低,并且重复该过程.这个可能比 LARS 算法快,特别是在大型问题中.它速度的关键在于 \eqref{3.84} 中的量随着 $j$ 变化可以快速更新,并且通常更新后有 $\tilde \beta_j=0$.另一方面,它在 $\lambda$ 的网格处求解,而不是整个解的路径.同样类型的算法可以应用到 elastic net,grouped lasso 以及许多其它惩罚为个体参数的函数之和的模型(Friedman et al., 2010[^31]).通过一些修改,这也可以应用到 fused lasso([18.4.2 节](../18-High-Dimensional-Problems/18.4-Linear-Classifiers-with-L1-Regularization.md));细节在 Friedman et al. (2007)[^29]中给出.

[^1]: Efron, B., Hastie, T., Johnstone, I. and Tibshirani, R. (2004). Least angle regression (with discussion), Annals of Statistics 32(2): 407–499.
[^2]: Donoho, D. (2006a). Compressed sensing, IEEE Transactions on Information Theory 52(4): 1289–1306.
Expand Down

0 comments on commit 0b71694

Please sign in to comment.