PCA、SVD

PCA和SVD都可以用于数据降维,寻找最具代表性的特征,以减少数据量。

参考:奇异值分解(SVD) - 知乎

SVD是对数据进行有效特征整理的过程。首先,对于一个m×n矩阵A,我们可以理解为其有m个数据,n个特征,(想象成一个n个特征组成的坐标系中的m个点),然而一般情况下,这n个特征并不是正交的,也就是说这n个特征并不能归纳这个数据集的特征。SVD的作用就相当于是一个坐标系变换的过程,从一个不标准的n维坐标系,转换为一个标准的k维坐标系,并且使这个数据集中的点,到这个新坐标系的欧式距离为最小值(也就是这些点在这个新坐标系中的投影方差最大化),其实就是一个最小二乘的过程。进一步,如何使数据在新坐标系中的投影最大化呢,那么我们就需要让这个新坐标系中的基尽可能的不相关,我们可以用协方差来衡量这种相关性。A^T·A中计算的便是n×n的协方差矩阵,每一个值代表着原来的n个特征之间的相关性。当对这个协方差矩阵进行特征分解之后,我们可以得到奇异值和右奇异矩阵,而这个右奇异矩阵则是一个新的坐标系,奇异值则对应这个新坐标系中每个基对于整体数据的影响大小,我们这时便可以提取奇异值最大的k个基,作为新的坐标,这便是PCA的原理。

### PCA主成分分析用于 主成分分析(PCA)是一种统计方法,通过正交变换将一组可能存在线性相关性的变量转换为一组线性不相关的变量,这组新变量被称为“主成分”。这种技术常被用来低数据集的度,在保留尽可能多的信息的同时减少计算复杂度和存储需求。 #### 如何实现PCA? 为了执行PCA操作,通常会经历以下几个过程: 1. 数据标准化处理; 2. 计算协方差矩阵并求解其特征值与对应的特征向量; 3. 将原始数据投影到由前k个最大特征值所对应的方向上形成的新空间中;这里k小于等于原有属性数量,并且是由使用者指定的一个参数来决定最终输出的数据度大小[^2]。 ```python from sklearn.decomposition import PCA import numpy as np # 创建一个随机数组作为示例输入数据 X = np.random.rand(100, 5) pca = PCA(n_components=2) # 设置目标度数为2 reduced_X = pca.fit_transform(X) print(reduced_X.shape) # 输出形状应接近 (100, 2),表示已至二 ``` ### SVD奇异值分解的应用及其特性 奇异值分解(Singular Value Decomposition, SVD)可以应用于任何实数或复数值矩阵A,将其分解成三个矩阵UΣV^T的形式。其中U是一个m×m阶酉矩阵,Σ是对角线上含有非负元素σi(i=1,...,r)(称为奇异值)r≤min(m,n)其余位置全零构成的半正定对角阵,V是n×n阶酉矩阵。SVD不仅限于方形矩阵,对于矩形矩阵同样适用[^1]。 在实际应用场景下,比如图像压缩、自然语言处理等领域,SVD能够有效地提取出最重要的信息部分而忽略掉那些相对次要的内容,从而达到简化模型结构的目的。 ### PCASVD之间的关系及差异 尽管两者都涉及到矩阵运算以及寻找最优子空间的任务,但是它们之间存在一些显著的区别: - **理论基础不同**: PCA基于协方差矩阵的最大化方差原则选取最佳基底方向;而SVD则是直接针对给定矩阵本身进行因式分解得到的结果。 - **适用范围有所区别**: 当样本数目远大于特征数目时,采用中心化的数据矩阵做SVD等价于对协方差矩阵实施EVD(Eigenvalue Decomposition),此时二者效果相同;但在其他情况下可能会表现出不同的性能特点. - **计算效率方面**: 对大规模稀疏矩阵而言,SVD可能更具有优势因为它不需要显式的构建完整的协方差矩阵就可以完成近似低秩逼近. 综上所述,虽然PCASVD有着紧密联系,但各自拥有独特的特性和优劣之处,具体选择取决于待解决问题的具体情况和个人偏好等因素。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值