数据与统计中的降维技术详解
1. 特征值与特征向量计算
在矩阵运算中,我们常常需要计算矩阵的特征值与特征向量。例如,对于矩阵 (C),我们通过求解方程 (\det(C - b I) = 0) 来得到特征值 (b)。以矩阵
[
\begin{bmatrix}
1 & 3 \
3 & 1
\end{bmatrix}
]
为例,计算过程如下:
(\det(C - b I) = (1 - b)*(1 - b) - 9 = b^2 - 2b - 8)
使用二次公式或因式分解,可得出方程的解为 (b = -2) 或 (b = 4),这两个值就是矩阵 (C) 的特征值。
接下来求特征向量,当 (b = -2) 时,将其代入 ((C - b I)x’ = 0),得到
[
\begin{bmatrix}
3 & 3 \
3 & 3
\end{bmatrix}
\begin{bmatrix}
x_1 \
x_2
\end{bmatrix}
=
\begin{bmatrix}
0 \
0
\end{bmatrix}
]
化简后得到 (3x_1 + 3x_2 = 0),其通解为 (x_1 = -x_2)。我们可以令 (x_2 = 1),则 (x_1 = -1),所以特征向量为 ([-1, 1])。同理,当特征值为 (4) 时,特征向量为 ([1, 1])。并且,这两个特征向量是正交的,因为它们的内积 ([-1, 1] * [1, 1] = (-1) 1 + (1)*1 = 0)。
2. 高斯 - 约旦消元法
高斯 - 约旦消元法是一种求解线性方程组的有效方法,它通过一系列算术运算将给定矩阵转化为单位矩阵。下面以方程组
(\begin{cases}2x + 2y = 6 \ 4x - y = 2\end{cases})
为例,介绍具体步骤:
1. 构建增广矩阵 :创建一个 (2×2) 矩阵,第一列是 (x) 的系数,第二列是 (y) 的系数,接着是 (2×2) 单位矩阵,最后一列是等号右边的数字。
[
\begin{bmatrix}
2 & 2 \
4 & -1
\end{bmatrix}
\begin{bmatrix}
1 & 0 \
0 & 1
\end{bmatrix}
\begin{bmatrix}
6 \
2
\end{bmatrix}
]
2. 行变换 :
- 给第一行乘以 (-2) 加到第二行,得到
[
\begin{bmatrix}
2 & 2 \
0 & -5
\end{bmatrix}
\begin{bmatrix}
1 & 0 \
-2 & 1
\end{bmatrix}
\begin{bmatrix}
6 \
-10
\end{bmatrix}
]
- 第二行除以 (-5),得到
[
\begin{bmatrix}
2 & 2 \
0 & 1
\end{bmatrix}
\begin{bmatrix}
1 & 0 \
\frac{2}{5} & -\frac{1}{5}
\end{bmatrix}
\begin{bmatrix}
6 \
2
\end{bmatrix}
]
- 给第二行乘以 (2) 加到第一行,得到
[
\begin{bmatrix}
2 & 0 \
0 & 1
\end{bmatrix}
\begin{bmatrix}
\frac{1}{5} & \frac{2}{5} \
\frac{2}{5} & -\frac{1}{5}
\end{bmatrix}
\begin{bmatrix}
2 \
2
\end{bmatrix}
]
- 第一行除以 (2),得到
[
\begin{bmatrix}
1 & 0 \
0 & 1
\end{bmatrix}
\begin{bmatrix}
\frac{1}{10} & \frac{1}{5} \
\frac{2}{5} & -\frac{1}{5}
\end{bmatrix}
\begin{bmatrix}
1 \
2
\end{bmatrix}
]
- 第二行乘以 (-1),得到
[
\begin{bmatrix}
1 & 0 \
0 & 1
\end{bmatrix}
\begin{bmatrix}
\frac{1}{10} & \frac{1}{5} \
-\frac{2}{5} & \frac{1}{5}
\end{bmatrix}
\begin{bmatrix}
1 \
2
\end{bmatrix}
]
此时,左边矩阵为单位矩阵,右边矩阵是原矩阵的逆矩阵,最右边一列是方程组的解,即 (x = 1),(y = 2)。
3. 主成分分析(PCA)
PCA 是一种线性降维技术,用于确定数据集中最重要的特征。它具有以下特点:
- 基于方差的算法。
- 创建的新变量是原始变量的线性组合。
- 新变量两两正交。
- 可作为聚类前的预处理步骤。
- 通常用于数据降维。
- 对于强相关变量很有用,如果相关矩阵中大部分系数小于 (0.3),则 PCA 效果不佳。
PCA 的优势在于减少模型训练的计算时间、简化模型,并且在选择两个或三个特征时能够直观展示数据。其核心步骤如下:
1. 计算数据集的相关矩阵 (C)(从协方差矩阵得到) 。
2. 求解 (C) 的特征值 。
3. 求解 (C) 的特征向量 。
4. 构建包含特征向量的新矩阵 。
例如,使用 Python 的 Sklearn 库进行简单的 PCA 操作:
import numpy as np
from sklearn.decomposition import PCA
data = np.array([[-1, -1], [-2, -1], [-3, -2], [1, 1], [2, 1], [3, 2]])
pca = PCA(n_components=2)
pca.fit(data)
不过,PCA 也有局限性,它不太适用于具有非线性关系的数据和特殊分类问题。相关的算法 Kernel PCA 引入了非线性变换,可继续使用 PCA 的思路。
4. 降维算法概述
降维是将高维向量空间转换为低维向量空间的过程,常见的降维算法有:
|算法名称|算法类型|特点|
| ---- | ---- | ---- |
|主成分分析(PCA)|线性降维|基于方差,创建正交新变量|
|奇异值分解(SVD)|矩阵分解|适用于任意矩阵|
|局部线性嵌入(LLE)|非线性降维|保留局部关系|
|UMAP|非线性降维|假设数据均匀分布|
|t - SNE|非线性降维|用于可视化|
|PHATE|可视化与降维|对生物数据有应用|
这些算法可分为不同类别,如矩阵分解(PCA 和 SVD)、基于模型的降维(LDA)和流形学习(SOM 和 t - SNE)。
5. 维度灾难与流形概念
随着数据集维度的增加,数据点之间的距离会变大,从而增加过拟合的可能性,这就是维度灾难。在实际数据中,不同特征具有不同的分布,如高斯分布、双峰分布等。
流形是拓扑学中的概念,对于理解流形学习这种降维技术很有帮助。简单来说,流形是一个局部类似于欧几里得空间的拓扑空间。例如,在地球上行走或开车感觉是二维运动,但实际上是在三维空间中移动,因为高度的影响很小,所以感觉像二维运动。常见的流形例子有:
- 一维流形:直线、圆。
- 二维流形:平面、球体、圆环面。
下面是一个简单的 mermaid 流程图,展示 PCA 的主要步骤:
graph LR
A[计算相关矩阵 C] --> B[求解特征值]
B --> C[求解特征向量]
C --> D[构建新矩阵]
6. 奇异值分解(SVD)
奇异值分解是线性代数中的一种技术,它可以将任意 (m×n) 矩阵 (A) 分解为三个矩阵 (U)、(S) 和 (V) 的乘积,即 (A = U S V^t)。这里,矩阵 (U) 是 (m×m) 的正交矩阵((U U^t = I)),其列向量为左奇异向量;矩阵 (V) 是 (n×n) 的正交矩阵((V V^t = I)),其列向量为右奇异向量;矩阵 (S) 是 (m×n) 的对角矩阵,对角元素为奇异值。
通过计算 (A^t A) 和 (A A^t),可以确定矩阵 (U) 和 (V) 的性质:
- (A^t A = (V S U^t) (U S V^t) = V S^2 V^t),所以 (V) 是 (A^t A) 的特征向量矩阵,(S^2) 是 (A^t A) 的特征值矩阵。
- (A A^t = (U S V^t) (V S U^t) = U S^2 U^t),所以 (U) 是 (A A^t) 的特征向量矩阵,(S^2) 是 (A^t A) 的特征值矩阵。由于 (S^2) 是特征值的对角矩阵,所以 (S) 由特征值的平方根组成。
SVD 存在一些可扩展性和性能相关的问题:
- 当 (n < m) 时,复杂度为 (O(m*n^2))。
- 对于数百万个单词/文档的情况,可扩展性较差。
- 难以纳入新的单词/文档。
SVD 在推荐系统中可用于将评分矩阵分解为三个矩阵的乘积,在基因表达分析中也有应用。此外,还有一些 SVD 的变体,如 Truncated SVD、Thin SVD、Compact SVD、SVDpp、HybridSVD、PureSVD 和 timeSVDpp 等。
7. 局部线性嵌入(LLE)
局部线性嵌入是一种非线性降维技术,主要基于以下两个任务:
1. 计算数据点到其最近邻的线性距离 。
2. 尝试确定数据点的低维表示,以保留局部关系 。
LLE 的直觉与 t - SNE 相似。使用 Sklearn 进行局部线性嵌入的示例可参考: https://scikit - learn.org/stable/modules/generated/sklearn.manifold.LocallyLinearEmbedding.html
8. UMAP
UMAP 是 Uniform Manifold Approximation and Projection 的缩写,是一种非线性降维技术。它与 t - SNE 算法类似,但假设数据在局部连通的黎曼流形上均匀分布,并且黎曼度量局部恒定或近似局部恒定。关于黎曼度量的详细讨论可参考: https://arxiv.org/pdf/1212.2474.pdf
9. t - SNE
t - SNE(T - distributed stochastic neighbor embedding)是一种用于可视化的非线性降维技术。其目标是:
1. 将相似的对象映射到附近的点 。
2. 将不相似的对象映射到更远的点 。
t - SNE 的实现涉及两个概率分布,一个用于高维对象对,另一个用于低维对象对。通过最小化这两个概率分布的 KL 散度来实现降维。与 PCA 相比,PCA 是 20 世纪 30 年代的技术,进行线性降维,最大化方差并保留大的成对距离;而 t - SNE 是 2008 年开发的,通过计算高维和低维空间中数据点之间的相似度来保留小的成对距离,并使用成本函数优化相似度度量。
10. PHATE
PHATE 是 potential of heat - diffusion affinity - based transition embedding 的缩写,是一种可视化和降维技术,与 t - SNE 相似,对局部和全局关系都很敏感,试图保留近距离和远距离对象之间的关系。该技术在生物数据中有所应用,更多信息可参考: https://www.biorxiv.org/content/10.1101/120378v1.full.pdf
11. 线性与非线性降维技术对比
线性降维与非线性降维算法的区别需要从数学定义开始理解。假设 (T) 是从向量空间 (U) 到向量空间 (V) 的映射((T:U->V)),如果对于 (U) 中的任意向量 (u_1) 和 (u_2) 以及任意实数 (a),满足以下两个条件,则 (T) 是线性变换:
1. (T(u_1 + u_2) = T(u_1) + T(u_2))
2. (T(a u) = a T(u))
例如,平面上向量的旋转或缩放是线性变换,而向量的平移是仿射变换,不是线性变换。
如果 (U) 和 (V) 的维度相同且为 (n),则线性变换 (T) 可以用一个 (n×n) 的可逆矩阵表示;如果 (V) 的维度低于 (U),则 (T) 涉及投影;如果 (V) 的维度高于 (U),则 (T) 涉及嵌入。
以下是一些线性变换的矩阵表示示例:
- 若 (T) 将二维欧几里得空间中向量的分量加倍,则 (T) 可表示为矩阵 (\begin{bmatrix}2 & 0 \ 0 & 2\end{bmatrix})。
- 若 (T) 将二维空间中向量的第一个分量减半,第二个分量加倍,则 (T) 可表示为矩阵 (\begin{bmatrix}0.5 & 0 \ 0 & 3\end{bmatrix})。
- 若 (T) 将形式为 ((x,y,z)) 的向量映射为 ((x,y,0)) 的向量,则 (T) 是投影,可表示为矩阵 (\begin{bmatrix}1 & 0 & 0 \ 0 & 1 & 0 \ 0 & 0 & 0\end{bmatrix})。
下面是一个 mermaid 流程图,展示不同降维算法的分类:
graph LR
A[降维算法] --> B[线性降维]
A --> C[非线性降维]
B --> D[PCA]
B --> E[SVD]
C --> F[LLE]
C --> G[UMAP]
C --> H[t - SNE]
C --> I[PHATE]
综上所述,不同的降维算法有各自的特点和适用场景。在实际应用中,需要根据数据的特点和任务的需求选择合适的降维算法。例如,对于线性关系的数据,PCA 可能是一个不错的选择;对于需要可视化的非线性数据,t - SNE 可能更合适。同时,还可以结合多种降维算法进行特征提取和数据预处理,以提高模型的性能。
超级会员免费看
29

被折叠的 条评论
为什么被折叠?



