主成分分析PCA工作原理和简单介绍

本文详细介绍了PCA(主成分分析)的原理及其在数据降维中的应用。PCA通过将数据投影到新的坐标系中,减少特征数量并保持数据的主要模式。文章还探讨了降维的必要性和目的,并给出了具体的计算实例。

PCA原理:


PCA的原理就是将原来的样本数据投影到一个新的空间中,相当于我们在矩阵分析里面学习的将一组矩阵映射到另外的坐标系下。通过一个转换坐标,也可以理解成把一组坐标转换到另外一组坐标系下,但是在新的坐标系下,表示原来的原本不需要那么多的变量,只需要原来样本的最大的一个线性无关组的特征值对应的空间的坐标即可

比如,原来的样本是30*1000000的维数,就是说我们有30个样本,每个样本有1000000个特征点,这个特征点太多了,我们需要对这些样本的特征点进行降维。那么在降维的时候会计算一个原来样本矩阵的协方差矩阵,这里就是1000000*1000000,当然,这个矩阵太大了,计算的时候有其他的方式进行处理,这里只是讲解基本的原理,然后通过这个1000000*1000000的协方差矩阵计算它的特征值和特征向量,最后获得具有最大特征值的特征向量构成转换矩阵。比如我们的前29个特征值已经能够占到所有特征值的99%以上那么我们只需要提取前29个特征值对应的特征向量即可。这样就构成了一个1000000*29的转换矩阵,然后用原来的样本乘以这个转换矩阵,就可以得到原来的样本数据在新的特征空间的对应的坐标。30*1000000 * 1000000*29 = 30 *29, 这样原来的训练样本每个样本的特征值的个数就降到了29个。


一般来说,PCA降维后的每个样本的特征的维数,不会超过训练样本的个数,因为超出的特征是没有意义的。


下面是百度百科中对pca降维的一段解释,还是挺清晰的:

对于一个训练集,100个对象模板,特征是10维,那么它可以建立一个100*10的矩阵,作为样本。求这个样本的协方差矩阵,得到一个10*10的协方差矩阵,然后求出这个协方差矩阵的特征值和特征向量,应该有10个特征值和特征向量,我们根据特征值的大小,取前四个特征值所对应的特征向量,构成一个10*4的矩阵,这个矩阵就是我们要求的特征矩阵,100*10的样本矩阵乘以这个10*4的特征矩阵,就得到了一个100*4的新的降维之后的样本矩阵,每个特征的维数下降了。

  当给定一个测试的特征集之后,比如1*10维的特征,乘以上面得到的10*4的特征矩阵,便可以得到一个1*4的特征,用这个特征去分类。

降维的必要性

1.多重共线性--预测变量之间相互关联。多重共线性会导致解空间的不稳定,从而可能导致结果的不连贯。

2.高维空间本身具有稀疏性。一维正态分布有68%的值落于正负标准差之间,而在十维空间上只有0.02%。

3.过多的变量会妨碍查找规律的建立。

4.仅在变量层面上分析可能会忽略变量之间的潜在联系。例如几个预测变量可能落入仅反映数据某一方面特征的一个组内。

降维的目的:

1.减少预测变量的个数

2.确保这些变量是相互独立的

3.提供一个框架来解释结果

降维的方法有:主成分分析、因子分析、用户自定义复合等。

 

PCA(Principal Component Analysis)不仅仅是对高维数据进行降维,更重要的是经过降维去除了噪声,发现了数据中的模式。

PCA把原先的n个特征用数目更少的m个特征取代,新特征是旧特征的线性组合,这些线性组合最大化样本方差,尽量使新的m个特征互不相关。从旧特征到新特征的映射捕获数据中的固有变异性。

预备知识

样本X和样本Y的协方差(Covariance):

协方差为正时说明X和Y是正相关关系,协方差为负时X和Y是负相关关系,协方差为0时X和Y相互独立。

Cov(X,X)就是X的方差(Variance).

当样本是n维数据时,它们的协方差实际上是协方差矩阵(对称方阵),方阵的边长是。比如对于3维数据(x,y,z),计算它的协方差就是:

,则称是A的特征值,X是对应的特征向量。实际上可以这样理解:矩阵A作用在它的特征向量X上,仅仅使得X的长度发生了变化,缩放比例就是相应的特征值

当A是n阶可逆矩阵时,A与P-1Ap相似,相似矩阵具有相同的特征值。

特别地,当A是对称矩阵时,A的奇异值等于A的特征值,存在正交矩阵Q(Q-1=QT),使得:

对A进行奇异值分解就能求出所有特征值和Q矩阵。

     D是由特征值组成的对角矩阵

由特征值和特征向量的定义知,Q的列向量就是A的特征向量。

Jama包

Jama包是用于基本线性代数运算的java包,提供矩阵的cholesky分解、LUD分解、QR分解、奇异值分解,以及PCA中要用到的特征值分解,此外可以计算矩阵的乘除法、矩阵的范数和条件数、解线性方程组等。

PCA过程

1.特征中心化。即每一维的数据都减去该维的均值。这里的“维”指的就是一个特征(或属性),变换之后每一维的均值都变成了0。

很多数据挖掘的教材上都会讲到鹫尾花的例子,本文就拿它来做计算。原始数据是150×4的矩阵A:

每一列减去该列均值后,得到矩阵B:

2.计算B的协方差矩阵C:

3.计算协方差矩阵C的特征值和特征向量。
C=V*S*V -1
S=

4.2248414     0       0       0 
0          0.24224437  0          0 
0          0       0.078524387   0 
0          0       0        0.023681839

V=

0.36158919   0.65654382   -0.58100304   0.3172364 
-0.082268924    0.72970845    0.596429220       -0.3240827 
0.85657212  -0.17576972 0.  072535217    -0.47971643 
0.35884438    -0.074704743    0.54904125    0.75113489

4.选取大的特征值对应的特征向量,得到新的数据集。
特征值是由大到小排列的, 前两个特征值的和已经超过了所有特征值之和的97%。我们取前两个特征值对应的特征向量,得到一个4×2的矩阵M。令A' 150×2=A 150×4M 4×2,这样我们就把150×4的数据A集映射成了150×2的数据集A',特征由4个减到了2个。
A'=

每个样本正好是二维的,画在平面坐标系中如图:

鹫尾花数据集共分为3类花(前50个样本为一类,中间50个样本为一类,后50个样本为一类),从上图可以看到把数据集映射到2维后分类会更容易进行,直观上看已经是线性可分的了,下面我们用自组织映射网络对其进行聚类。

当然我们已知了有3类,所以在设计SOFM网络时,我把竞争层节点数设为3,此时的聚类结果是前50个样本聚为一类,后100个样本聚为一类。当把竞争层节点数改为4时,仅第2类中的3个样本被误分到了第3类中,整体精度达98%!

输出聚类结果:

转自:http://blog.sina.com.cn/s/blog_61b8694b0101jg4f.html

  http://www.cnblogs.com/zhangchaoyang/articles/2222048.html

<think>我们正在讨论主成分分析PCA)的原理实现方法。根据用户需求,重点在于数学推导技术。根据引用[3][4],PCA的推导过程涉及线性代数统计知识,包括协方差矩阵、特征值特征向量等。我们将按照以下步骤进行:1.数据标准化(中心化)2.计算协方差矩阵3.计算协方差矩阵的特征值特征向量4.选择主成分(特征值大的特征向量)5.将数据投影到选定的特征向量上数学推导部分:设我们有n个样本,每个样本有p个特征,构成数据矩阵X(n×p)。假设我们已经对数据进行了中心化(即每一度的均值为0)。目标:找到一个新的坐标系(由一组标准正交基构成),使得数据投影到该坐标系后,方差最大化(即保留最多的信息)。第一步:考虑投影到一个方向(单位向量w)上,则投影后的数据为Xw。投影后的方差为:Var(w) =(Xw)^T (Xw) /(n-1)= w^T(X^TX)w /(n-1)注意:X^TX/(n-1)就是样本协方差矩阵(记为S)。所以方差可以写成 w^TS w。我们的目标是最大化w^TS w,且满足w^T w=1(单位向量)。利用拉格朗日乘数法:L(w,λ)= w^TS w- λ(w^T w-1)求导:∂L/∂w =2S w-2λw =0=>Sw =λ w所以,w是S的特征向量,λ是对应的特征值。此时方差为λ。因此,最大方差对应于最大特征值对应的特征向量。同理,第二主成分应该是第二大特征值对应的特征向量,且与第一主成分正交,以此类推。实现步骤:1.数据标准化:通常将每个特征减去其均值,也可以除以标准差(如果量纲不同)。2.计算协方差矩阵:S =(1/(n-1)) *X^T X(注意:如果数据已经中心化,则协方差矩阵可以直接计算)3.对S进行特征值分解:得到特征值λ1≥λ2≥...≥λp对应的特征向量w1,w2, ...,wp。4.选择前k个特征向量(按特征值从大到小排序),构成投影矩阵W(p×k)。5.后的数据:Y =X W(n×k矩阵)另外,我们还可以通过计算累计贡献率来确定k:选择最小的k,使得累计贡献率(前k个特征值之除以所有特征值之)达到预设阈值(如90%)。下面给出一个简单的Python实现示例。</think>### 主成分分析PCA原理与实现 主成分分析PCA)是一种无监督技术,通过线性变换将高数据投影到低空间,保留最大方差信息。其核心数学推导如下: #### **1. 数据预处理** 对原始数据 $X_{n \times p}$($n$个样本,$p$个特征)进行中心化处理: $$X_{\text{centered}} = X - \mu$$ 其中 $\mu$ 是各特征的均值向量,确保数据均值为零。 #### **2. 协方差矩阵计算** 计算协方差矩阵 $C$: $$C = \frac{1}{n-1} X_{\text{centered}}^T X_{\text{centered}}$$ $C$ 是 $p \times p$ 的对称矩阵,反映特征间的相关性。 #### **3. 特征值分解** 对协方差矩阵进行特征分解: $$C = W \Lambda W^T$$ 其中: - $\Lambda = \text{diag}(\lambda_1, \lambda_2, \dots, \lambda_p)$ 是特征值对角矩阵($\lambda_1 \geq \lambda_2 \geq \dots \geq \lambda_p$) - $W$ 是特征向量矩阵,列向量 $w_i$ 对应 $\lambda_i$ #### **4. 主成分选择** 选择前 $k$ 个最大特征值对应的特征向量构成投影矩阵 $W_k$: $$W_k = [w_1, w_2, \dots, w_k]$$ 后的数据为: $$Y_{n \times k} = X_{\text{centered}} W_k$$ #### **数学原理推导** 目标函数:最大化投影方差 $$\max_w \text{Var}(Xw) = \max_w w^T C w$$ 约束条件:$w^T w = 1$(单位向量)。通过拉格朗日乘子法: $$\mathcal{L} = w^T C w - \lambda(w^T w - 1)$$ 求导得: $$\frac{\partial \mathcal{L}}{\partial w} = 2Cw - 2\lambda w = 0 \implies Cw = \lambda w$$ 即最优解 $w$ 是协方差矩阵 $C$ 的特征向量,$\lambda$ 为特征值[^4]。 #### **Python实现示例** ```python import numpy as np from sklearn.decomposition import PCA # 手动实现PCA def manual_pca(X, k): # 中心化 X_centered = X - np.mean(X, axis=0) # 协方差矩阵 cov_matrix = np.cov(X_centered, rowvar=False) # 特征值分解 eigenvalues, eigenvectors = np.linalg.eigh(cov_matrix) # 按特征值序排列 sorted_idx = np.argsort(eigenvalues)[::-1] W = eigenvectors[:, sorted_idx[:k]] # 投影 return X_centered @ W # 使用sklearn X = np.random.rand(100, 5) # 100个样本,5特征 pca = PCA(n_components=2) # 至2 X_pca = pca.fit_transform(X) print("后方差贡献率:", pca.explained_variance_ratio_) ``` #### **关键特点** 1. **正交性**:主成分彼此线性无关($w_i^T w_j = 0$) 2. **方差保留**:第 $i$ 主成分的方差等于 $\lambda_i$ 3. **最优性**:前 $k$ 主成分保留原数据最大方差[^3] 4. **应用场景**: - 数据可视化(至2D/3D) - 特征工程(消除冗余特征) - 去噪(舍弃小特征值成分) - 图像压缩(如人脸识别中的特征脸) --- ### 相关问题 1. PCA与LDA(线性判别分析)的核心区别是什么? 2. 如何确定PCA后的最佳度 $k$? 3. PCA在处理非线性数据时有哪些局限性?替代方案是什么? 4. 为什么PCA需要对数据进行标准化处理? 5. 解释PCA中特征值 $\lambda_i$ 的物理意义[^2]。 [^1]: 主成分分析机器学习中最常用的技术之一。 [^2]: 特征值 $\lambda_i$ 表示第 $i$ 主成分方向的方差量。 [^3]: PCA通过保留最大方差实现最优重构误差。 [^4]: PCA的数学推导基于协方差矩阵的特征分解。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值