本文为《机器学习》(周志华)、《统计学习方法》(李航) 的读书笔记
- 参考 南瓜书
目录
k k k 近邻学习 ( k k k NN)
k k k-Nearest Neighbor
k k k 近邻算法
-
k
k
k 近邻学习是一种常用的监督学习方法:给定测试样本,基于某种距离度量找出训练集中与其最靠近的
k
k
k 个训练样本, 然后基于这
k
k
k 个“邻居” 的信息来进行预测
- 通常,在分类任务中可使用“投票法” ,即选择这 k k k 个样本中出现最多的类别标记作为预测结果; 在回归任务中可使用“平均法” ,即将这 k k k 个样本的实值输出标记的平均值作为预测结果
- 还可基于距离远近进行加权平均或加权投票,距离越近的样本权重越大
可以看出, k k k 近邻法的三个基本要素为 k k k 值的选择、距离度量及分类/回归决策规则
下面只讨论分类问题中的 k k k 近邻法
-
k
k
kNN 是"懒惰学习" (lazy learning) 的著名代表,此类学习技术在训练阶段仅仅是把样本保存起来,训练时间开销为零,待收到测试样本后再进行处理
- k k k 与距离计算方式发生改变,均会导致分类结果有显著不同
- 注意: k k kNN 的训练集就是模型本身,要求训练集中各个分类的数量要体现实际当中这些类别出现的概率
- 面临诸多挑战: 维度灾难、存储开销 (存储训练集)、查询速度
- 暂且假设距离计算是“ 恰当” 的,即能够恰当地找出
k
k
k 个近邻,我们来对“最近邻分类器" (
1
1
1NN, 即
k
=
1
k = 1
k=1) 在二分类问题上的性能做一个简单的讨论:
- 给定测试样本
x
\boldsymbol x
x,若其最近邻样本为
z
\boldsymbol z
z, 则最近邻分类器出错的概率就是
x
\boldsymbol x
x 与
z
\boldsymbol z
z 类别标记不同的概率,即
- 假设样本独立同分布,且对任意
x
\boldsymbol x
x 和任意小正数
δ
\delta
δ,在
x
\boldsymbol x
x 附近
δ
\delta
δ 距离范围内总能找到一个训练样本
z
\boldsymbol z
z; 令
c
∗
=
arg max
c
∈
Y
P
(
c
∣
x
)
c^*=\argmax_{c\in\mathcal Y}P(c |\boldsymbol x)
c∗=c∈YargmaxP(c∣x) 表示贝叶斯最优分类器的结果,有
其中第二个式子是来源于前提假设"假设样本独立同分布,且对任意 x \boldsymbol x x 和任意小正数 δ δ δ,在 x \boldsymbol x x 附近 δ δ δ 距离范围内总能找到一个训练样本”,则 P ( c ∣ z ) = P ( c ∣ x ± δ ) ≃ P ( c ∣ x ) P(c|\boldsymbol z) = P(c|\boldsymbol x ± δ) ≃ P(c|\boldsymbol x) P(c∣z)=P(c∣x±δ)≃P(c∣x) - 于是我们得到了有点令人惊讶的结论: 最近邻分类器虽简单,但它的泛化错误不超过贝叶斯最优分类器的错误率的两倍!
- 给定测试样本
x
\boldsymbol x
x,若其最近邻样本为
z
\boldsymbol z
z, 则最近邻分类器出错的概率就是
x
\boldsymbol x
x 与
z
\boldsymbol z
z 类别标记不同的概率,即
k k k 值的选择
- 如果选择较小的 k k k 值,预测结果会对近邻的实例点非常敏感。如果邻近的实例点恰巧是噪声,预测就会出错。换句话说, k k k 值的减小就意味着整体模型变得复杂,容易发生过拟合
- 如果选择较大的
k
k
k 值,与输入实例较远的 (不相似的) 训练实例也会对预测起作用,使预测发生错误。
k
k
k 值的增大就意味着整体的模型变得简单
- 在应用中, k k k 值一般取一个比较小的数值。通常采用交叉验证法来选取最优的 k k k 值
距离度量
分类决策规则
- 下面以两种方式解释一下基于 “投票法” 的分类决策规则
- 对给定的实例
x
∈
X
x\in\mathcal X
x∈X,其最近邻的
k
k
k 个训练实例点构成集合
N
k
(
x
)
N_k(x)
Nk(x)。如果涵盖
N
k
(
x
)
N_k(x)
Nk(x) 的区域的类别是
c
j
c_j
cj 那么误分类率是
1 k ∑ x i ∈ N k ( x ) I ( y i ≠ c j ) = 1 − 1 k ∑ x i ∈ N k ( x ) I ( y i = c j ) \frac{1}{k}\sum_{x_i\in N_k(x)}\mathbb I(y_i\neq c_j)=1-\frac{1}{k}\sum_{x_i\in N_k(x)}\mathbb I(y_i=c_j) k1xi∈Nk(x)∑I(yi=cj)=1−k1xi∈Nk(x)∑I(yi=cj)要使误分类率最小即经验风险最小,就要使 ∑ x i ∈ N k ( x ) I ( y i = c j ) \sum_{x_i\in N_k(x)}\mathbb I(y_i=c_j) ∑xi∈Nk(x)I(yi=cj) 最大,所以多数表决规则等价于经验风险最小化
k k k NN 与贝叶斯模型的联系
与贝叶斯模型一样, k k kNN 也是利用贝叶斯定理进行后验概率 p ( C i ∣ x ) p(C_i|x) p(Ci∣x) 的估算
- 假设共有
N
N
N 个样本,样本
x
x
x 的去心邻域
R
R
R 内刚好包含
k
k
k 个样本,且每个样本落在区域
R
R
R 内的概率为
P
R
P_R
PR。此时有
k ≈ N P R P R = ∫ R p ( x ) d x ≈ p ( x ) V R k\approx NP_R\\P_R=\int_Rp(x)dx\approx p(x)V_R k≈NPRPR=∫Rp(x)dx≈p(x)VR联立上面两式,有
k N = p ( x ) V R ∴ p ( x ) = k N V R \frac{k}{N}=p(x)V_R\\\therefore p(x)=\frac{k}{NV_R} Nk=p(x)VR∴p(x)=NVRk因此
p ( C i ∣ x ) = p ( x ∣ C i ) p ( C i ) p ( x ) = k i N i V R ⋅ N i N k N V R = k i k p(C_i|x)=\frac{p(x|C_i)p(C_i)}{p(x)}=\frac{\frac{k_i}{N_iV_R}\cdot\frac{N_i}{N}}{\frac{k}{NV_R}}=\frac{k_i}{k} p(Ci∣x)=p(x)p(x∣Ci)p(Ci)=NVRkNiVRki⋅NNi=kki
k k k NN 不需要假设样本服从的概率分布
- 在朴素贝叶斯模型中,通过假设不同类别的样本服从不同参数的多值分布/高斯分布,我们可以估算出样本的后验概率。但如果数据分布十分复杂,没有任何信息可供参考,我们就很难作出样本集分布模型的假设
- 与贝叶斯模型不一样的是, k k k NN 并没有作出任何有关分布模型的假设,而是假设相似的输入应该有相似的输出,局部的分布模型只受到邻近实例样本的影响
k k k 近邻法的实现: k d kd kd 树 ( k d kd kd tree)
- Ref: 【数学】kd 树算法之详细篇
- 实现 k k k 近邻法时,主要考虑的问题是如何对训练数据进行快速 k k k 近邻搜索。这点在特征空间的维数大及训练数据容量大时尤其必要。为了提高 k k k 近邻搜索的效率,可以考虑使用特殊的结构存储训练数据,以减少计算距离的次数。具体方法很多,下面介绍其中的 k d kd kd 树方法
构迼 k d kd kd 树
- k d kd kd 树是一种对 k k k 维空间中的实例点进行存储以便对其进行快速检索的树形数据结构。 k d kd kd 树是二叉树,表示对 k k k 维空间的一个划分 (partition)。构造 k d kd kd 树相当于不 断地用垂直于坐标轴的超平面将 k k k 维空间切分,构成一系列的 k k k 维超矩形区域。 k d kd kd 树的每个结点对应一个 k k k 维超矩形区域
通常,依次选择坐标轴对空间切分,选择训练实例点在选定坐标轴上的中位数 (如果一共有偶数个元素,则选择中位左边或右边的元素) 为切分点,这样得到的 k d kd kd 树是平衡的。注意,平衡的 k d kd kd 树搜索时的效率未必是最优的
- k d kd kd 树的每一个节点记载了 【特征坐标,切分轴,指向左枝的指针,指向右枝的指针】,切分轴由一个整数 r r r 表示,这里 1 ≤ r ≤ n 1\leq r\leq n 1≤r≤n,是我们在 n n n 维空间中沿第 r r r 维进行一次分割
例
- 对上图中 13 个点构造的
k
d
kd
kd 树以及划分的超平面如下:
搜索 k d kd kd 树
- 利用 k d kd kd 树可以省去对大部分数据点的搜索,从而减少搜索的计算量。下面介绍如何利用 k d kd kd 树寻找距离某个点 p p p 最近的 k k k 个样本
设 L L L 为一个有 k k k 个空位的列表,用于保存已搜寻到的最近点
- (一) 根据 p p p 的坐标值和每个节点的切分向下搜索(如果树的节点是照 x r = a x_r=a xr=a 进行切分,并且 p p p 的 r r r 坐标小于 a a a,则向左枝进行搜索;反之则走右枝)
- (二) 当达到一个底部节点时,将其标记为访问过。如果此时 L L L 里不足 k k k 个点,则将节点特征加入 L L L;如果 L L L 中已满 k k k 个点,且当前节点与 p p p 的距离小于 L L L 里最长的距离,则用节点特征替换掉 L L L 中离最远的点
- (三) 如果当前节点不是整棵树最顶端节点,执行 (a);反之,输出 L L L,算法完成
- (a) 向上爬一个节点。如果当前(向上爬之后的)节点未曾被访问过,将其标记为被访问过,然后执行 (1) 和 (2);如果当前节点被访问过,再次执行 (a)
- (1) 如果此时 L L L 里不足 k k k 个点,则将节点特征加入 L L L;如果 L L L 中已满 k k k 个点,且当前节点与 p p p 的距离小于 L L L 里最长的距离,则用节点特征替换掉 L L L 中离最远的点
- (2) 计算 p p p 和当前节点切分线的距离。如果该距离大于等于 L L L 中距离 p p p 最远的距离并且 L L L 中已有 k k k 个点,则在切分线另一边不会有更近的点,执行 (三);如果该距离小于 L L L 中最远的距离或者 L L L 中不足 k k k 个点,则切分线另一边可能有更近的点,因此在当前节点的另一个枝从 (一) 开始执行
可以看出, k d kd kd 树之所以能减少搜索量,就是因为步骤 (2) 可以将搜索限制在局部范围内
例
- 设我们想查询的点为
p
=
(
−
1
,
−
5
)
p=(−1,−5)
p=(−1,−5),我们想找距离
p
p
p 最近的
k
=
3
k=3
k=3 个点。如下:
- 首先执行 (一),找到了最底部的节点
(
−
4.6
,
−
10.55
)
(−4.6,−10.55)
(−4.6,−10.55)
- 此时我们执行 (二)。将当前结点标记为访问过,并记录下 L = [ ( − 4.6 , − 10.55 ) ] L=[(−4.6,−10.55)] L=[(−4.6,−10.55)]
- 然后执行 (三),嗯,不是最顶端节点。好,执行 (a),我爬。上面的是
(
−
6.88
,
−
5.4
)
(−6.88,−5.4)
(−6.88,−5.4)
- 执行 (1),因为我们记录下的点只有一个,小于 k = 3 k=3 k=3,所以也将当前节点记录下,有 L = [ ( − 4.6 , − 10.55 ) , ( − 6.88 , − 5.4 ) ] L=[(−4.6,−10.55),(−6.88,−5.4)] L=[(−4.6,−10.55),(−6.88,−5.4)]. 再执行 (2),因为当前节点的左枝是空的,所以直接跳过,回到步骤 (三)
- (三) 看了一眼,好,不是顶部,交给你了,(a)。于是乎 (a) 又往上爬了一节
- (1) 说,由于还是不够三个点,于是将当前点也记录下,有 L = [ ( − 4.6 , − 10.55 ) , ( − 6.88 , − 5.4 ) , ( 1.24 , − 2.86 ) ] L=[(−4.6,−10.55),(−6.88,−5.4),(1.24,−2.86)] L=[(−4.6,−10.55),(−6.88,−5.4),(1.24,−2.86)]。当然,当前结点变为被访问过的
- (2) 又发现,当前节点有其他的分枝,并且经计算得出
p
p
p 点和
L
L
L 中的三个点的距离分别是
6.62
,
5.89
,
3.10
6.62,5.89,3.10
6.62,5.89,3.10,但是
p
p
p 和当前节点的分割线的距离只有 2.14,小于与
L
L
L 的最大距离:
- 因此,在分割线的另一端可能有更近的点。于是我们在当前结点的另一个分枝从头执行 (一),找到点
(
1.75
,
12.26
)
(1.75,12.26)
(1.75,12.26)。经 (二) 计算,
(
1.75
,
12.26
)
(1.75,12.26)
(1.75,12.26) 与
p
p
p 的距离是 17.48,要大于
p
p
p 与
L
L
L 的最大距离,因此我们不将其放入记录中
- 然后 (三) 判断出不是顶端节点,呼出 (a),向上爬
- (1) 出来一算,这个节点与
p
p
p 的距离是 4.91,要小于
p
p
p 与
L
L
L 的最大距离 6.62,因此,我们用这个新的节点替代
L
L
L 中离
p
p
p 最远的
(
−
4.6
,
−
10.55
)
(−4.6,−10.55)
(−4.6,−10.55)
- 然后 (2) 又来了,我们比对
p
p
p 和当前节点的分割线的距离,这个距离小于
L
L
L 与
p
p
p 的最大距离,因此我们要到当前节点的另一个枝执行 (一)
- 当然,那个枝只有一个点,直接到 (二),计算距离发现这个点离 p p p 比 L L L 更远,因此不进行替代,同时 (三) 发现不是顶点,所以呼出 (a)。我们向上爬,这个是已经访问过的了 (上图中蓝线标出的点),所以再来(a),(a)再爬到达根节点
- 我们进行计算比对发现顶端节点与
p
p
p 的距离比
L
L
L 还要更远,因此不进行更新
- 然后是 (2),计算
p
p
p 和分割线的距离发现也是更远,因此也不需要检查另一个分枝
- 然后执行 (三),判断当前节点是顶点,因此计算完成!输出距离 p p p 最近的三个样本是 L = [ ( − 6.88 , − 5.4 ) , ( 1.24 , − 2.86 ) , ( − 2.96 , − 2.5 ) ] L=[(−6.88,−5.4),(1.24,−2.86),(−2.96,−2.5)] L=[(−6.88,−5.4),(1.24,−2.86),(−2.96,−2.5)]
低维嵌入
密采样 (dense sample)
- 上一节的讨论是基于一个重要假设: 任意测试样本
x
\boldsymbol x
x 附近任意小的
δ
\delta
δ 距离范围内总能找到一个训练样本,即训练样本的采样密度足够大,或称为 “密采样”. 然而,这个假设在现实任务中通常很难满足
- 例如若 δ = 0.001 \delta = 0.001 δ=0.001,仅考虑单个属性,则仅需 1000 个样本点平均分布在归一化后的属性取值范围内,即可使得任意测试样本在其附近 0.001 距离范围内总能找到一个训练样本,此时最近邻分类器的错误率不超过贝叶斯最优分类器的错误率的两倍
- 然而,这仅是属性维数为 1 的情形,若有更多的属性,则情况会发生显著变化. 例如假定属性维数为 20,若要求样本满足密采样条件,则至少需 ( 1 0 3 ) 20 = 1 0 60 (10^3)^{20} = 10^{60} (103)20=1060 个样本
- 现实应用中属性维数经常成千上万,要满足密采样条件所需的样本数目是无法达到的天文数字. 此外,许多学习方法都涉及距离计算,而高维空间会给距离计算带来很大的麻烦,例如当维数很高时甚至连计算内积都不再容易.
维数灾难 (curse of dimensionality)
- 维数灾难: 在高维情形下出现的数据样本稀疏、距离计算困难等问题,是所有机器学习方法共同面临的严重障碍
降维 (dimension reduction)
- 缓解维数灾难的一个重要途径是降维 (另一个重要途径是特征选择),即通过某种数学变换将原始高维属性空间转变为一个低维 “子空间” (subspace) ,在这个子空间中样本密度大幅提高, 距离计算也变得更为容易
- 对降维效果的评估,通常是比较降维前后学习器的性能. 若性能有所提高则认为降维起到了作用. 若将维数降至二维或三维,则可通过可视化技术来直观地判断降维效果
为什么能进行降维?
- 这是因为在很多时候, 人们观测或收集到的数据样本虽是高维的,但与学习任务密切相关的也许仅是某个低维分布,即高维空间中的一个低维"嵌入" (embedding) . 原始高维空间中的样本点,在这个低维嵌入子空间中更容易进行学习
线性降维方法
- 一般来说,欲获得低维子空间,最简单的是对原始高维空间进行线性变换. 给定
d
d
d 维空间中的样本
X
=
(
x
1
,
.
.
.
,
x
m
)
∈
R
d
×
m
\boldsymbol X= (\boldsymbol x_1,...,\boldsymbol x_m)\in\R^{d\times m}
X=(x1,...,xm)∈Rd×m, 变换之后得到
d
′
≤
d
d'\leq d
d′≤d 维空间中的样本
其中 W ∈ R d × d ′ \boldsymbol W\in \R^{d\times d'} W∈Rd×d′ 是变换矩阵, Z ∈ R d ′ × m \boldsymbol Z \in \R^{d'\times m} Z∈Rd′×m 是样本在新空间中的表达.- 变换矩阵
W
\boldsymbol W
W 可视为
d
′
d'
d′ 个
d
d
d 维基向量组成的单位正交集 (
W
W
T
=
I
\boldsymbol W\boldsymbol W^T=I
WWT=I). 可将
z
i
\boldsymbol z_i
zi 视为原属性向量
x
i
\boldsymbol x_i
xi 在新坐标系
{
w
1
,
…
,
w
d
′
}
\{\boldsymbol w_1,…,\boldsymbol w_{d'}\}
{w1,…,wd′} (正交坐标系) 中的坐标向量, 即
W
z
i
=
x
i
\boldsymbol W\boldsymbol z_i=\boldsymbol x_i
Wzi=xi. 又由于
W
T
W
=
I
\boldsymbol W^T\boldsymbol W=I
WTW=I, 可以推得
z
i
=
W
T
x
i
\boldsymbol z_i=\boldsymbol W^T\boldsymbol x_i
zi=WTxi,进而可知
Z
=
W
T
X
\boldsymbol Z=\boldsymbol W^T\boldsymbol X
Z=WTX
- 显然,新空间中的属性是原空间中属性的线性组合
- 线性降维方法都符合式 (10.13) 的基本形式,不同之处是对低维子空间的性质有不同的要求,相当于对 W \boldsymbol W W 施加了不同的约束
- 变换矩阵
W
\boldsymbol W
W 可视为
d
′
d'
d′ 个
d
d
d 维基向量组成的单位正交集 (
W
W
T
=
I
\boldsymbol W\boldsymbol W^T=I
WWT=I). 可将
z
i
\boldsymbol z_i
zi 视为原属性向量
x
i
\boldsymbol x_i
xi 在新坐标系
{
w
1
,
…
,
w
d
′
}
\{\boldsymbol w_1,…,\boldsymbol w_{d'}\}
{w1,…,wd′} (正交坐标系) 中的坐标向量, 即
W
z
i
=
x
i
\boldsymbol W\boldsymbol z_i=\boldsymbol x_i
Wzi=xi. 又由于
W
T
W
=
I
\boldsymbol W^T\boldsymbol W=I
WTW=I, 可以推得
z
i
=
W
T
x
i
\boldsymbol z_i=\boldsymbol W^T\boldsymbol x_i
zi=WTxi,进而可知
Z
=
W
T
X
\boldsymbol Z=\boldsymbol W^T\boldsymbol X
Z=WTX
多维缩放 (Multiple Dimensional Scaling,MDS)
- 多维缩放要求原始空间中样本之间的距离在低维空间中得以保持
问题描述
- 假定 m m m 个样本在原始空间的距离矩阵为 D ∈ R m × m \boldsymbol D\in \R^{m\times m} D∈Rm×m, 其第 i i i 行 j j j 列的元素 d i s t i j dist_{ij} distij 为样本 x i \boldsymbol x_i xi 到 x j \boldsymbol x_j xj 的距离. 我们的目标是获得样本在 d ′ d' d′ 维空间的表示 Z ∈ R d ′ × m \boldsymbol Z\in \R^{d'\times m} Z∈Rd′×m, d ′ ≤ d d'\leq d d′≤d, 且任意两个样本在 d ′ d' d′ 维空间中的欧氏距离等于原始空间中的距离,即 ∣ ∣ z i − z j ∣ ∣ = d i s t i j ||\boldsymbol z_i -\boldsymbol z_j|| = dist_{ij} ∣∣zi−zj∣∣=distij
求解降维后样本的内积矩阵
- 令
B
=
Z
T
Z
∈
R
m
×
m
\boldsymbol B = \boldsymbol Z^T\boldsymbol Z\in \R^{m\times m}
B=ZTZ∈Rm×m, 其中
B
\boldsymbol B
B 为降维后样本的内积矩阵,
b
i
j
=
z
i
T
z
j
b_{ij}= \boldsymbol z_i^T\boldsymbol z_j
bij=ziTzj, 有
- 要想把 B \boldsymbol B B 求出来,我们就需要用 D \boldsymbol D D 中的元素 d i s t i j dist_{ij} distij 来表示 b i j b_{ij} bij
- 为便于讨论,令降维后的样本
Z
\boldsymbol Z
Z 被中心化,即
∑
i
=
1
m
z
i
=
0
\sum_{i=1}^m\boldsymbol z_i=\boldsymbol 0
∑i=1mzi=0. 显然,矩阵
B
\boldsymbol B
B 的行与列之和均为零,即
∑
i
=
1
m
b
i
j
=
∑
j
=
1
m
b
i
j
=
0
\sum_{i=1}^mb_{ij}=\sum_{j=1}^mb_{ij}=0
∑i=1mbij=∑j=1mbij=0. 易知
其中 t r ( . ) tr(.) tr(.) 表示矩阵的迹 (trace), t r ( B ) = ∑ i = 1 m ∣ ∣ z i ∣ ∣ 2 tr(\boldsymbol B) =\sum_{i=1}^m||\boldsymbol z_{i}||^2 tr(B)=∑i=1m∣∣zi∣∣2 . 由 (10.6) 可以求出 t r ( B ) tr(\boldsymbol B) tr(B), 进而可以带入 (10.4) 和 (10.5) 求出 b i i , b j j b_{ii},b_{jj} bii,bjj. 最后将 b i i , b j j b_{ii},b_{jj} bii,bjj 代入 (10.3) 也就可以求得 b i j b_{ij} bij - 为了便于表示,令
由式 (10.3) 和式 (10.4) ∼ \sim ∼ (10.9) 可得
- 至此,即可通过降维前后保持不变的距离矩阵 D \boldsymbol D D 求取内积矩阵 B \boldsymbol B B.
由内积矩阵求得样本在 d ′ d' d′ 维空间的表示 Z \boldsymbol Z Z
- 对矩阵 B \boldsymbol B B 做特征值分解 (eigenvalue decomposition), 注意到 B \boldsymbol B B 为对称矩阵,因此一定可以进行正交对角化,于是令 B = V A V T \boldsymbol B = \boldsymbol V\boldsymbol A\boldsymbol V^T B=VAVT,其中 A = diag ( λ 1 , . . . , λ d ) \boldsymbol A = \text{diag}(\lambda_1, ...,\lambda_d) A=diag(λ1,...,λd) 为特征值构成的对角矩阵, λ 1 ≥ λ 2 ≥ . . . ≥ λ d λ_1\geq λ_2\geq ...\geq λ_d λ1≥λ2≥...≥λd, V \boldsymbol V V 为特征向量矩阵.
- 假定其中有
d
∗
d^*
d∗ 个非零特征值,它们构成对角矩阵
A
∗
=
diag
(
λ
1
,
λ
2
,
.
.
.
,
λ
d
∗
)
\boldsymbol A_*=\text{diag}(λ_1, λ_2 ,...,λ_{d^*})
A∗=diag(λ1,λ2,...,λd∗),令
V
∗
\boldsymbol V_*
V∗ 表示相应的特征向量矩阵, 有
B = V A V T = [ V ∗ V 0 ] [ A ∗ 0 0 0 ] [ V ∗ T V 0 T ] = V ∗ A ∗ V ∗ T = Z T Z \begin{aligned}\boldsymbol B&=\boldsymbol V\boldsymbol A\boldsymbol V^T=\begin{bmatrix}\boldsymbol V_*&\boldsymbol V_0\end{bmatrix}\begin{bmatrix}\boldsymbol A_*&\boldsymbol 0\\\boldsymbol 0&\boldsymbol 0\end{bmatrix}\begin{bmatrix}\boldsymbol V_*^T\\\boldsymbol V_0^T\end{bmatrix} \\&=\boldsymbol V_*\boldsymbol A_*\boldsymbol V_*^T=\boldsymbol Z^T\boldsymbol Z\end{aligned} B=VAVT=[V∗V0][A∗000][V∗TV0T]=V∗A∗V∗T=ZTZ则 Z \boldsymbol Z Z 可表达为
注意到 B = Z T Z \boldsymbol B = \boldsymbol Z^T\boldsymbol Z B=ZTZ 一定为半正定矩阵,因此特征值一定非负,可以开平方
- 在现实应用中为了有效降维,往往仅需降维后的距离与原始空间中的距离尽可能接近而不必严格相等. 此时可取
d
′
≪
d
d'\ll d
d′≪d 个最大特征值构成对角矩阵
A
~
=
diag
(
λ
1
,
,
.
.
.
,
λ
d
′
)
\tilde\boldsymbol A= \text{diag}(\lambda_1,,...,\lambda_{d'})
A~=diag(λ1,,...,λd′), 令
V
~
\tilde\boldsymbol V
V~ 表示相应的特征向量短阵,则
Z
\boldsymbol Z
Z 可表达为
MDS 算法
主成分分析 (PCA)
Principal Component Analysis
- 对于正交属性空间中的样本点,如何用一个超平面对所有样本进行恰当的表达? (也就是对原属性空间中的样本点进行坐标变换,将其映射到新的坐标系中) 容易想到,若存在这样的超平面,那么它大概应具有这样的性质:
- 最近重构性: 样本点到这个超平面的距离都足够近
- 最大可分性: 样本点在这个超平面上的投影能尽可能分开
- 基于最近重构性和最大可分性能分别得到主成分分析的两种等价推导
- 参考:Principal Component Analysis