3.5 运用派生输入方向的方法
这是一篇有关《统计学习基础》,原书名The Elements of Statistical Learning的学习笔记,该书学习难度较高,有很棒的学者将其翻译成中文并放在自己的个人网站 上,翻译质量非常高,本博客中有关翻译的内容都是出自该学者的网页,个人解读部分才是自己经过查阅资料和其他学者的学习笔记,结合个人理解总结成的原创内容。 有关ESL更多的学习笔记的markdown文件,可在作者GitHub 上查看下载。
翻译原文
!!! note “weiya 注:翻译” Derived Input Directions 翻译为“派生输入方向”.
在很多情形下我们有很多输入,这些输入的相关性经常是非常强的.这一小节中的方法产生较少的原输入变量
X
j
X_j
X j 的线性组合
Z
m
,
m
=
1
,
2
,
…
,
M
Z_m,m=1,2,\ldots,M
Z m , m = 1 , 2 , … , M ,然后
Z
m
Z_m
Z m 用来代替
X
j
X_j
X j 来作为回归的输入 .这些方法区别于怎样构造线性组合.
主成分回归
在这种方法下,使用的线性组合
Z
m
Z_m
Z m 是在前面 3.4.1 节 中定义的主成分.
主成分回归构造派生的输入列
z
m
=
X
v
m
\mathbf z_m=\mathbf Xv_m
z m = X v m ,然后在
z
1
,
z
2
,
…
,
z
M
,
M
≤
p
\mathbf z_1,\mathbf z_2,\ldots,\mathbf z_M,\; M\le p
z 1 , z 2 , … , z M , M ≤ p 上回归
y
\mathbf y
y .因为
z
m
\mathbf z_m
z m 是正交的,则这个回归只是单变量回归的和
y
^
(
M
)
p
c
r
=
y
ˉ
1
+
∑
m
=
1
M
θ
^
m
z
m
(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}
y ^ ( M ) p c r = y ˉ 1 + m = 1 ∑ M θ ^ m z m ( 3 . 6 1 )
其中,
θ
^
m
=
⟨
z
m
,
y
⟩
/
⟨
z
m
,
z
m
⟩
\hat\theta_m=\langle \mathbf z_m,\mathbf y\rangle/\langle\mathbf z_m,\mathbf z_m\rangle
θ ^ m = ⟨ z m , y ⟩ / ⟨ z m , z m ⟩ .(该表示法详见ESL3.2 )因为每个
z
m
\mathbf z_m
z m 是原输入变量
x
j
\mathbf x_j
x j 的线性组合,我们可以将解 (3.61) 表达成关于
x
j
\mathbf x_j
x j 的系数(练习 3.13):
β
^
p
c
r
(
M
)
=
∑
m
=
1
M
θ
^
m
v
m
(3.62)
\hat\beta^{pcr}(M)=\sum\limits_{m=1}^M\hat\theta_mv_m\tag{3.62}
β ^ p c r ( M ) = m = 1 ∑ M θ ^ m v m ( 3 . 6 2 )
岭回归下,主成分依赖输入
x
j
\mathbf x_j
x j 的放缩尺度,所以一般地我们首先对它们进行标准化.注意到如果
M
=
p
M=p
M = p ,我们就会回到通常的最小二乘估计,因为列
Z
=
U
D
\mathbf Z=\mathbf U\mathbf D
Z = U D 张成了
X
\mathbf X
X 的列空间.对于
M
<
p
M < p
M < p 我们得到一个降维的回归问题.我们看到主成分回归与岭回归非常相似:都是通过输入矩阵的主成分来操作的.岭回归对主成分系数进行了收缩,收缩更多地依赖对应特征值的大小;主成分回归丢掉
p
−
M
p-M
p − M 个最小的特征值分量.图 3.17 说明了这一点
图 3.17 岭回归运用 (3.47) 中的收缩因子
d
j
2
/
(
d
j
2
+
λ
)
d_j^2/(d_j^2+\lambda)
d j 2 / ( d j 2 + λ ) 来收缩主成分回归的系数.主成分回归截断了它们. 图中显示了图 3.7 对应的收缩和截断模式作为主成分指标的函数.
在图 3.7 中我们看到交叉验证表明有 7 项;最终模型在表 3.3 中有最低的测试误差.
偏最小二乘
这个技巧也构造了一系列用于回归的输入变量的线性组合,但是与主成分回归不同的是它采用
y
\mathbf y
y (除了
X
\mathbf X
X )来构造.和主成分回归相同的是,偏最小二乘 (PLS) 也不是尺度不变 (scale invariant) 的,所以我们假设每个
x
j
\mathbf x_j
x j 标准化使得均值为 0 、方差为 1.一开始,PLS 对每个
j
j
j 计算
φ
^
1
j
=
⟨
x
j
,
y
⟩
\hat \varphi_{1j}=\langle \mathbf x_j, \mathbf y\rangle
φ ^ 1 j = ⟨ x j , y ⟩ .从这里我们构造新的派生输入变量
z
1
=
∑
j
φ
^
1
j
x
j
\mathbf z_1=\sum_j\hat \varphi_{1j}\mathbf x_j
z 1 = ∑ j φ ^ 1 j x j ,这是第一偏最小二乘方向.因此在每个
z
m
\mathbf z_m
z m 的构造中,输入变量通过判断其在
y
\mathbf y
y 上的单变量影响强度来加权 .
!!! note “weiya 注:原书脚注” 因为
x
j
\rm{x}_j
x j 已经标准化,第一方向
φ
^
1
j
\hat\varphi_{1j}
φ ^ 1 j 是单变量回归的系数(乘以某不相关的常数);但对接下来的方向不是这样.
输出变量
y
\mathbf y
y 在
z
1
\mathbf z_1
z 1 上回归 便得到系数
θ
^
1
\hat \theta_1
θ ^ 1 ,然后我们对
x
1
,
x
2
,
…
,
x
p
\mathbf x_1,\mathbf x_2,\ldots,\mathbf x_p
x 1 , x 2 , … , x p 进行关于
z
1
\mathbf z_1
z 1 的正交化.我们继续这个过程,直到得到
M
≤
p
M\le p
M ≤ p 个方向.在这种方式下,偏最小二乘得到一系列派生的、正交化的输入或者方向
z
1
,
z
2
,
…
,
z
M
\mathbf z_1,\mathbf z_2,\ldots, \mathbf z_M
z 1 , z 2 , … , z M .和主成分回归一样,如果我们构造所有
M
=
p
M=p
M = p 个方向,我们会得到一个等价于普通最小二乘估计的解;如果使用
M
<
p
M< p
M < p 个方向会得到一个低维的回归.这个过程将在算法 3.3 中详细描述.
!!! note “weiya 注:” 在
a
\mathbf a
a 上回归
b
\mathbf b
b (或者称作
b
\mathbf b
b 在
a
\mathbf a
a 上回归)指的是
b
\mathbf b
b 在
a
\mathbf a
a 上的无截距的简单单变量回归,回归系数为
γ
^
=
⟨
a
,
b
⟩
⟨
a
,
a
⟩
\hat \gamma = \dfrac{\langle \mathbf a,\mathbf b\rangle}{\langle \mathbf a,\mathbf a\rangle}
γ ^ = ⟨ a , a ⟩ ⟨ a , b ⟩ 同时这一过程也称作
b
\mathbf b
b 关于
a
\mathbf a
a 正交化
算法 3.3 偏最小二乘
对
x
j
\mathbf x_j
x j 标准化使得均值为0、方差为1.令
y
^
(
0
)
=
y
ˉ
1
\hat{\mathbf y}^{(0)}=\bar y\mathbf 1
y ^ ( 0 ) = y ˉ 1 , 并且
x
j
(
0
)
=
x
j
,
j
=
1
,
…
,
p
\mathbf x_j^{(0)}=\mathbf x_j,\;j=1,\ldots,p
x j ( 0 ) = x j , j = 1 , … , p .
对于
m
=
1
,
2
,
…
,
p
m=1,2,\ldots,p
m = 1 , 2 , … , p
z
m
=
∑
j
=
1
p
φ
^
m
j
x
j
(
m
−
1
)
\mathbf z_m=\sum_{j=1}^p\hat \varphi_{mj}\mathbf x_j^{(m-1)}
z m = ∑ j = 1 p φ ^ m j x j ( m − 1 ) , 其中
φ
^
m
j
=
⟨
x
j
(
m
−
1
)
,
y
⟩
\hat \varphi_{mj}=\langle\mathbf x_j^{(m-1)},\mathbf y\rangle
φ ^ m j = ⟨ x j ( m − 1 ) , y ⟩
θ
^
m
=
⟨
z
m
,
y
⟩
/
⟨
z
m
,
z
m
⟩
\hat \theta_m=\langle \mathbf z_m, \mathbf y\rangle/\langle \mathbf z_m,\mathbf z_m\rangle
θ ^ m = ⟨ z m , y ⟩ / ⟨ z m , z m ⟩
y
^
(
m
)
=
y
^
(
m
−
1
)
+
θ
^
m
z
m
\hat{\mathbf y}^{(m)}=\hat{\mathbf y}^{(m-1)}+\hat\theta_m\mathbf z_m
y ^ ( m ) = y ^ ( m − 1 ) + θ ^ m z m
对每个
x
j
(
m
−
1
)
\mathbf x_j^{(m-1)}
x j ( m − 1 ) 关于
z
m
\mathbf z_m
z m 正交化:
x
j
(
m
)
=
x
j
(
m
−
1
)
−
⟨
z
m
,
x
j
⟩
⟨
z
m
,
z
m
⟩
z
m
,
j
=
1
,
2
,
…
,
p
.
\mathbf x_j^{(m)}=\mathbf x_j^{(m-1)}-\dfrac{\langle \mathbf z_m,\mathbf x_j\rangle}{\langle \mathbf z_m,\mathbf z_m\rangle}\mathbf z_m,\; j=1,2,\ldots,p.
x j ( m ) = x j ( m − 1 ) − ⟨ z m , z m ⟩ ⟨ z m , x j ⟩ z m , j = 1 , 2 , … , p .
输出拟合向量序列
{
y
(
m
)
^
}
1
p
\{\hat{\mathbf y^{(m)}}\}^p_1
{ y ( m ) ^ } 1 p .因为
{
z
ℓ
}
1
m
\{\mathbf z_\ell\}^m_1
{ z ℓ } 1 m 关于原输入变量
x
j
\mathbf x_j
x j 为线性的,所以是
y
^
(
m
)
=
X
β
^
p
l
s
(
m
)
\hat {\mathbf y}^{(m)}=\mathbf X \hat \beta^{pls}(m)
y ^ ( m ) = X β ^ p l s ( m ) .这些线性系数可以通过PLS转换的序列重新得到.
在前列腺癌的例子中,交叉验证在图 3.7 中选择
M
=
2
M=2
M = 2 个 PLS 方向.这得到了表 3.3 最右边的列的模型.
偏最小二乘求解的是什么优化问题呢?因为它使用响应变量
y
\mathbf y
y 去构造它的方向,所以它解的路径是关于
y
\mathbf y
y 的非线性函数.可以证明(练习 3.15 )偏最小二乘寻找有高方差以及和响应变量有高相关性的方向,而与之相对的主成分分析回归只重视高方差(Stone and Brooks, 1990; Frank and Friedman, 1993).特别地,第
m
m
m 个主成分方向
v
m
v_m
v m 是下面问题的解:
max
α
V
a
r
(
X
α
)
s
t
∥
α
∥
=
1
,
α
T
S
v
ℓ
=
0
,
ℓ
=
1
,
…
,
m
−
1
(3.63)
\begin{aligned}\max_{\alpha} &\rm{Var}(\mathbf X\alpha)\\\rm{st}&\Vert \alpha\Vert=1,\alpha^T\mathbf Sv_\ell=0,\;\ell=1,\ldots,m-1\end{aligned}\tag{3.63}
α max s t V a r ( X α ) ∥ α ∥ = 1 , α T S v ℓ = 0 , ℓ = 1 , … , m − 1 ( 3 . 6 3 )
其中,
S
\mathbf S
S 为
x
j
\mathbf x_j
x j 的样本协方差矩阵.
α
T
S
v
ℓ
=
0
\alpha^T\mathbf Sv_\ell=0
α T S v ℓ = 0 保证了
z
m
=
X
α
\mathbf z_m=\mathbf X\alpha
z m = X α 与之前所有的线性组合
z
ℓ
=
v
ℓ
\mathbf z_\ell=\mathbf v_\ell
z ℓ = v ℓ 都不相关.第
m
m
m 个 PLS 方向
φ
^
m
\hat \varphi_m
φ ^ m 是下面的解:
max
α
C
o
r
r
2
(
y
,
X
α
)
V
a
r
(
X
α
)
s
t
∥
α
∥
=
1
,
α
T
S
φ
^
ℓ
=
0
,
ℓ
=
1
,
…
,
m
−
1
(3.64)
\begin{aligned}\max_\alpha& \mathrm{Corr}^2(\mathbf y,\mathbf X\alpha)\rm{Var}(\mathbf X\alpha)\\\rm{st}& \Vert\alpha\Vert=1,\alpha^T\mathbf S\hat \varphi_\ell=0,\ell=1,\ldots,m-1\end{aligned}\tag{3.64}
α max s t C o r r 2 ( y , X α ) V a r ( X α ) ∥ α ∥ = 1 , α T S φ ^ ℓ = 0 , ℓ = 1 , … , m − 1 ( 3 . 6 4 )
进一步的分析揭示了,方差项趋向于占主导地位,而且因此偏最小二乘表现得很像岭回归和主成分回归.我们将在下一节讨论这些.
如果输入矩阵
X
\mathbf X
X 是正交的,则偏最小二乘会经过
m
=
1
m=1
m = 1 步找到最小二乘估计.后续的步骤不起作用,因为
m
>
1
时
,
φ
^
m
j
=
0
m >1\text{时},\hat \varphi_{mj}=0
m > 1 时 , φ ^ m j = 0 (练习 3.14 ).
也可以证明
m
=
1
,
2
,
…
,
p
m=1,2,\ldots,p
m = 1 , 2 , … , p 时的 PLS 系数序列表示计算最小二乘解时的共轭梯度(练习 3.18 ).
regression tools (with discussion), Technometrics 35(2): 109–148.
个人解读
主成分分析基本思想
这段概念基于特征值与特征向量 展开,主成分分析是利用降维的思想,将多个变量转化为少数几个综合变量(即主成分),其中每个主成分都是原始变量的线性组合,各主成分之间互不相关,从而这些主成分能够反映始变量的绝大部分信息,且所含的信息互不重叠。它是一个线性变换,这个变换把数据变换到一个新的坐标系统 中,使得任何数据投影的第一大方差在第一个坐标 (称为第一主成分)上,第二大方差在第二个坐标 (第二主成分)上,依次类推。主成分分析经常用减少数据集的维数,同时保持数据集的对方差贡献最大的特征。
对特征值与特征向量 博客的两个解读(该文解释的特征值与特征向量有助于理解主成分分析,值得详读)
对于BU的理解:实现了数据集在特征向量这组正交基上的投影,其实,这里的正交基就是用一组新的U来代替了原本的X,就像书中之前的公式讲的那样,是线性变换。注意U是对称阵,所以计算才make sense,才是投影。
对特征值的理解:参考这篇博客 。其实就是这个待分解的矩阵B,其作用于特征向量上不会改变特征向量的方向,所以特征向量和矩阵的本质有关,但是如果矩阵把特征向量进行线性变换后拉伸的值越大,那这个特征向量就越具备代表意义。
对于偏最小二乘的算法部分描述如下
算法 3.3 偏最小二乘
对
x
j
\mathbf x_j
x j 标准化使得均值为0、方差为1.令
y
^
(
0
)
=
y
ˉ
1
\hat{\mathbf y}^{(0)}=\bar y\mathbf 1
y ^ ( 0 ) = y ˉ 1 , 并且
x
j
(
0
)
=
x
j
,
j
=
1
,
…
,
p
\mathbf x_j^{(0)}=\mathbf x_j,\;j=1,\ldots,p
x j ( 0 ) = x j , j = 1 , … , p .
对于
m
=
1
,
2
,
…
,
p
m=1,2,\ldots,p
m = 1 , 2 , … , p
z
m
=
∑
j
=
1
p
φ
^
m
j
x
j
(
m
−
1
)
\mathbf z_m=\sum_{j=1}^p\hat \varphi_{mj}\mathbf x_j^{(m-1)}
z m = ∑ j = 1 p φ ^ m j x j ( m − 1 ) , 其中
φ
^
m
j
=
⟨
x
j
(
m
−
1
)
,
y
⟩
\hat \varphi_{mj}=\langle\mathbf x_j^{(m-1)},\mathbf y\rangle
φ ^ m j = ⟨ x j ( m − 1 ) , y ⟩
θ
^
m
=
⟨
z
m
,
y
⟩
/
⟨
z
m
,
z
m
⟩
\hat \theta_m=\langle \mathbf z_m, \mathbf y\rangle/\langle \mathbf z_m,\mathbf z_m\rangle
θ ^ m = ⟨ z m , y ⟩ / ⟨ z m , z m ⟩
y
^
(
m
)
=
y
^
(
m
−
1
)
+
θ
^
m
z
m
\hat{\mathbf y}^{(m)}=\hat{\mathbf y}^{(m-1)}+\hat\theta_m\mathbf z_m
y ^ ( m ) = y ^ ( m − 1 ) + θ ^ m z m
对每个
x
j
(
m
−
1
)
\mathbf x_j^{(m-1)}
x j ( m − 1 ) 关于
z
m
\mathbf z_m
z m 正交化:
x
j
(
m
)
=
x
j
(
m
−
1
)
−
⟨
z
m
,
x
j
⟩
⟨
z
m
,
z
m
⟩
z
m
,
j
=
1
,
2
,
…
,
p
.
\mathbf x_j^{(m)}=\mathbf x_j^{(m-1)}-\dfrac{\langle \mathbf z_m,\mathbf x_j\rangle}{\langle \mathbf z_m,\mathbf z_m\rangle}\mathbf z_m,\; j=1,2,\ldots,p.
x j ( m ) = x j ( m − 1 ) − ⟨ z m , z m ⟩ ⟨ z m , x j ⟩ z m , j = 1 , 2 , … , p .
输出拟合向量序列
{
y
(
m
)
^
}
1
p
\{\hat{\mathbf y^{(m)}}\}^p_1
{ y ( m ) ^ } 1 p .因为
{
z
ℓ
}
1
m
\{\mathbf z_\ell\}^m_1
{ z ℓ } 1 m 关于原输入变量
x
j
\mathbf x_j
x j 为线性的,所以是
y
^
(
m
)
=
X
β
^
p
l
s
(
m
)
\hat {\mathbf y}^{(m)}=\mathbf X \hat \beta^{pls}(m)
y ^ ( m ) = X β ^ p l s ( m ) .这些线性系数可以通过PLS转换的序列重新得到.
对于第二步的第一部分,其实这里的
x
j
\mathbf{x}_j
x j 和
y
\mathbf y
y 之所以是向量是因为有N个样本,而系数就可以理解为两个向量的点乘,点乘感性理解可以代表相似度。那如何计算当前m步下的
z
m
\mathbf{z}_m
z m 呢?当m是1的时候,所有的x都是标准化的,所以把每个单变量在y上面的影响强度作为权重,先加权求和得出第一个方向
z
1
\mathbf{z}_1
z 1 。
对于第二步的第二部分,就是将y在该方向上进行回归,得到系数
θ
^
m
\hat \theta_m
θ ^ m 。
对于第二步的第三部分,就是把当前方向上的分量加进之前的预测向量中去,进一步接近
y
^
\hat {\mathbf y}
y ^ 。
对于第二步的第四部分相当于对于每个
x
j
\mathbf{x}_j
x j ,减去其在
z
m
\mathbf{z}_m
z m 投影的部分(在
z
m
\mathbf z_m
z m 上回归
x
j
\mathbf{x}_j
x j 得到系数再乘
z
m
\mathbf{z}_m
z m ),留下的残差向量就是和
z
m
\mathbf{z}_m
z m 正交的部分,该步骤相关概念的理解可参考ESL3.2 的图3.4。感性理解就是,
z
m
\mathbf z_m
z m 这个方向已经计算结束分离出来了,需要将其在其他x上面的分量全都清离出去,也就是对每个
x
j
(
m
−
1
)
\mathbf x_j^{(m-1)}
x j ( m − 1 ) 关于
z
m
\mathbf z_m
z m 正交化。