预备知识
在统计学中,方差是用来度量单个随机变量的离散程度,而协方差则一般用来衡量两个随机变量的联合变化程度。
方差
σ
x
2
=
1
n
?
1
∑
i
=
1
n
(
x
i
?
x
ˉ
)
2
\sigma_{x}^{2}=\frac{1}{n-1} \sum_{i=1}^{n}\left(x_{i}-\bar{x}\right)^{2}
σx2?=n?11?i=1∑n?(xi??xˉ)2
n
n
n 表示样本数量,
x
ˉ
\bar{x}
xˉ 表示观测样本的均值。
协方差
σ
(
x
,
y
)
=
1
n
?
1
∑
i
=
1
n
(
x
i
?
x
ˉ
)
(
y
i
?
y
ˉ
)
\sigma(x, y) = \frac{1}{n-1} \sum_{i=1}^n (x_i - \bar{x})(y_i - \bar{y})
σ(x,y)=n?11?i=1∑n?(xi??xˉ)(yi??yˉ?)
x
ˉ
,
y
ˉ
\bar{x}, \bar{y}
xˉ,yˉ? 分别表示两个随机变量所对应的观测样本均值。方差
σ
x
2
\sigma_x^2
σx2? 可看作随机变量
x
x
x 关于自身的协方差
σ
(
x
,
x
)
\sigma(x, x)
σ(x,x) 。
协方差矩阵
给定
d
d
d 个随机变量
x
k
x_k
xk? ,
k
=
1
,
2
,
…
,
d
k=1, 2, \dots, d
k=1,2,…,d 。我们用
x
k
i
x_{ki}
xki? 表示随机变量
x
k
x_k
xk? 中的第
i
i
i 个观测样本,每个随机变量所对应的观测样本数量均为
n
n
n 。
对于这些随机变量,我们可以根据协方差的定义,求出两两之间的协方差,即:
σ
(
x
a
,
x
b
)
=
1
n
?
1
∑
i
=
1
n
(
x
a
i
?
x
ˉ
a
)
(
x
b
i
?
x
ˉ
b
)
\sigma\left(x_{a}, x_{b}\right)=\frac{1}{n-1} \sum_{i=1}^{n}\left(x_{a i}-\bar{x}_{a}\right)\left(x_{b i}-\bar{x}_{b}\right)
σ(xa?,xb?)=n?11?i=1∑n?(xai??xˉa?)(xbi??xˉb?)
因此协方差矩阵为:
Σ
=
[
σ
(
x
1
,
x
1
)
?
σ
(
x
1
,
x
d
)
?
?
?
σ
(
x
d
,
x
1
)
?
σ
(
x
d
,
x
d
)
]
∈
R
d
×
d
\Sigma=\left[\begin{array}{ccc} \sigma\left(x_{1}, x_{1}\right) & \cdots & \sigma\left(x_{1}, x_{d}\right) \\ \vdots & \ddots & \vdots \\ \sigma\left(x_{d}, x_{1}\right) & \cdots & \sigma\left(x_{d}, x_{d}\right) \end{array}\right] \in \mathbb{R}^{d \times d}
Σ=????σ(x1?,x1?)?σ(xd?,x1?)?????σ(x1?,xd?)?σ(xd?,xd?)?????∈Rd×d
其中,对角线上的元素为各个随机变量的方差,非对角线上的元素为两两随机变量之间的协方差。
PCA
PCA(主成分分析)是比较常见的线性降维方法,通过线性投影将高维数据映射到低维数据中,所期望的是在投影的维度上,新特征自身的方差尽量大,方差越大特征越有效,尽量使产生的新特征间的相关性越小。
算法流程
假设有
m
m
m 条数据,每条数据有
n
n
n 个特征。
x
j
i
x_j^i
xji? 表示第
i
i
i 个样本的第
j
j
j 个特征。
-
均值归一化:
μ
j
=
1
m
∑
i
=
1
m
x
j
i
x
j
i
:
=
x
j
i
?
μ
j
s
j
\begin{aligned} \mu_{j} &=\frac{1}{m} \sum_{i=1}^{m} x_{j}^{i} \\ x_{j}^{i} &:= \frac{x_{j}^{i}-\mu_{j}}{s_{j}} \end{aligned}
μj?xji??=m1?i=1∑m?xji?:=sj?xji??μj??? 其中
s
j
=
m
a
x
(
x
j
)
?
m
i
n
(
x
j
)
s_j = max(x_j) - min(x_j)
sj?=max(xj?)?min(xj?) -
计算协方差矩阵:
Σ
=
1
m
X
X
T
∈
R
n
×
n
\Sigma = \frac{1}{m} X X^T \in \mathbb{R}^{n \times n}
Σ=m1?XXT∈Rn×n -
计算特征向量:
[
U
,
S
,
V
]
=
s
v
d
(
Σ
)
[U, S, V] = svd(\Sigma)
[U,S,V]=svd(Σ) 其中左奇异向量、奇异值矩阵、右奇异向量:
U
∈
R
n
×
n
,
S
∈
R
n
×
m
,
V
∈
R
m
×
m
U \in \mathbb{R}^{n \times n}, S \in \mathbb{R}^{n \times m}, V \in \mathbb{R}^{m \times m}
U∈Rn×n,S∈Rn×m,V∈Rm×m -
从
U
U
U 中取前
k
k
k 列:
U
r
e
d
u
c
e
∈
R
n
×
k
U_{reduce} \in \mathbb{R}^{n \times k}
Ureduce?∈Rn×k -
计算得到降维后的数据:
Z
=
U
r
e
d
u
c
e
T
?
X
,
Z
∈
R
k
×
m
Z = U_{reduce}^T * X, Z \in \mathbb{R}^{k \times m}
Z=UreduceT??X,Z∈Rk×m
如何选择
k
k
k ?
∑
i
=
1
k
s
i
i
∑
i
=
1
n
s
i
i
?
0.99
\frac{\sum_{i=1}^{k} s_{i i}}{\sum_{i=1}^{n} s_{i i}} \geqslant 0.99
∑i=1n?sii?∑i=1k?sii???0.99 选择满足上述条件的最小
k
k
k
降维的应用
- 数据压缩,减少占用的存储空间
- 加快算法计算速度
- 低维平面可以可视化数据
PCA为什么要用协方差矩阵的特征向量矩阵来做投影矩阵呢?
降维的目的就是“降噪”和“去冗余”。
“降噪”的目的就是使保留下来的维度间的相关性尽可能小,而“去冗余”的目的就是使保留下来的维度含有的“能量”即方差尽可能大。
我们要最大化方差来保留更多的信息。去噪。 有趣的是,协方差矩阵能同时表现不同维度间的相关性以及各个维度上的方差。
协方差矩阵度量的是维度与维度之间的关系,而非样本与样本之间。协方差矩阵的主对角线上的元素是各个维度上的方差(即能量),其他元素是两两维度间的协方差(即相关性)。
先看“降噪”,让保留下的不同维度间的相关性尽可能小,也就是说让协方差矩阵中非对角线元素都基本为零。达到这个目的的方式——矩阵对角化。
再看“去冗余”,对角化后的协方差矩阵,对角线上较小的新方差对应的就是那些该去掉的维度。我们只取那些含有较大能量(特征值)的维度,其余的就舍掉即可。
LDA
LDA(线性判别分析)是一种经典的降维方法。和PCA不考虑样本类别输出的无监督降维技术不同,LDA是一种监督学习的降维技术,数据集的每个样本有类别输出。
LDA分类思想简单总结如下:
- 多维空间中,数据处理分类问题较为复杂,LDA算法将多维空间中的数据投影到一条直线上,将d维数据转化成1维数据进行处理。
- 对于训练数据,设法将多维数据投影到一条直线上,同类数据的投影点尽可能接近,异类数据点尽可能远离。
- 对数据进行分类时,将其投影到同样的这条直线上,再根据投影点的位置来确定样本的类别。
如果用一句话概括LDA思想:投影后类内方差最小,类间方差最大。
LDA和PCA异同
异同点 | LDA | PCA |
---|
相同点 | 1. 两者均可以对数据进行降维; 2. 两者在降维时均使用了矩阵特征分解的思想; 3. 两者都假设数据符合高斯分布; | | 不同点 | 有监督 | 无监督 | | 降维最多降到
k
?
1
k-1
k?1 维 | 降维多少没有限制 | | 可以用于降维,还可以用于分类 | 只用于降维 | | 选择分类性能最好的投影方向 | 选择样本点投影具有最大方差的方向 | | 更明确,更能反映样本间差异 | 目的较为模糊 |
参考自
|