本文约略呈现主成分分析(PCA)的基本数学原理及工作原理。
概述
主成分分析(Principal Component Analysis,PCA)是一种常用的数据分析方法。通过线性变换将原始数据变换为一组各维度线性无关的表示,可用于提取数据的主要特征分量,常用于高维数据的降维。本文将直观和易懂地叙述PCA的基本数学原理,不引入严格的数学推导。
一、降维概述
1. 维度的基本概念
对于数组和序列(Series)来说,维度是指其形状(shape),即数据的结构。一维数组指无行列之分的数组,其数据个数即为其维度。而表形式的二维数组,其维度则指的是样本数和特征数。在数据表中,每一表都可以视为一个特征矩阵或DataFrame,它们的维度固定为样本的数量和特征的数量。
1.2 图像中的维度
对于图像而言,其维度即为其特征向量的数量。特征向量可以理解为坐标轴,每个特征向量定义一条直线或一个平面。例如,一个二维图像可以被视为两个特征向量的组合,即一个直角坐标系。
1.3 降维解释
降维算法的目标是降低特征矩阵中特征的数量,使算法运算更快,效果更好。降维还有助于数据可视化。三维及以下的特征矩阵是可以被可视化的,有助于我们快速理解数据的分布,而三维以上的特征矩阵则比较难可视化。
二、PCA概述
2.1 PCA入门
PCA(Principal Component Analysis)是一种常用的数据分析方法。通过线性变换将原始数据变换为一组各维度线性无关的表示,用于提取数据的主要特征分量。在降维过程中,我们会减少特征的数量,这意味着删除数据,但减少的特征数量不代表丢失信息量,我们希望在降维的过程中尽可能保留更多的信息。
2.2 PCA降维过程
PCA的降维过程主要包括五个步骤:输入原数据、决定降维后的特征数量、通过某种变化找出新的特征向量、将原始数据映新的空间、选取信息量最大的特征。在这个过程中,我们会使用到矩阵分解和协方差矩阵等概念。
2.3 PCA算法数学步骤
PCA的算法步骤主要包括:将原始数据按列组成矩阵、对矩阵的每一行进行零均值化、求出协方差矩阵、求出协方差矩阵的特征值及对应的特征向量、将特征向量按对应特征值大小排列组成矩阵Q、用Q进行降维。其中,协方差矩阵的特征值分解是PCA的核心问题。
2.4 选择主成分个数
在PCA降维过程中,我们需要选择保留的主成分个数。这个选择基于不同主成分可保留的方差百分比。我们会保留那些可以解释大部分方差的成分,以达到降维同时保留尽可能多信息的目的。
2.5 sklearn中参数的解释
在sklearn库中,PCA算法的参数包括n_components和svd_solver等。n_components参数用于指定降维后的维度,即需要保留的特征数量。而svd_solver参数则与奇异值分解有关,用于指定SVD算法的求解方式。
三、总结
PCA是一种常用的数据分析方法,通过线性变换将原始数据变换为一组各维度线性无关的表示,用于高维数据的降维和可视化。在PCA的降维过程中,我们需要注意选择合适的主成分个数,以保留尽可能多的信息。我们还需要了解相关的数学概念和算法原理,如矩阵分解和协方差矩阵等。
希望本文能帮助你更好地理解PCA的基本原理和工作流程。
在数据处理和机器学习领域,我们经常需要利用不同的算法和工具来处理和优化数据。其中,PCA(主成分分析)与SVD(奇异值分解)是两种涉及大量矩阵计算的模型,它们都需要经过复杂的运算过程。但值得注意的是,SVD算法在矩阵分解方面有着独特的优势。
相较于PCA,SVD算法在处理过程中可以跳过计算协方差矩阵等繁琐步骤,直接求出新特征空间和降维后的特征矩阵。这种直接的求法使得SVD在矩阵分解中显得更为高效和简洁。
虽然两者都遵循相似的分解流程,但SVD以其独特的方法快速达成目标。SVD的信息量衡量指标相对复杂,"奇异值"的理解相较于"方差"更为困难。为了更好地应用这一算法,sklearn将其降维流程分为两部分。
第一部分是特征空间的计算,由SVD完成。虽然矩阵U和Σ在计算过程中被得出,但它们并不会被实际应用。第二部分则是数据的映射和新特征矩阵的求解,这由PCA来完成。
具体来说,PCA中的"Y = QX"的Q部分被SVD的特性所替代,从而利用SVD的性质减少了计算量,同时保持了信息量的评估指标——方差的目的。整个流程的示意图如“图5 SVD矩阵分解流程”所示。
接下来,我们进一步探讨参数svd_solver的作用。这个参数在降维过程中起到控制矩阵分解细节的作用,提供了四种模式供用户选择:"auto"、"full"、"arpack"和"randomized",其中默认设置为"auto"。
在sklearn的实现中,我们注意到一个重要的属性components_。通过SVD和PCA的协作,我们能够在矩阵分解过程中不使用PCA本身的特征值分解,而是采用奇异值分解来进一步简化计算过程。尽管矩阵U和Σ在计算过程中被生成,但它们并不会被实际使用或调用,因此在某种程度上可以被视为“遗弃”的数据。
奇异值分解的关键在于追求效率和效果之间的平衡。只要我们掌握了必要的参数和条件,就能够计算出降维后的特征矩阵。在transform()过程完成后,fit()中奇异值分解的结果会被保存在components_属性中,供用户调用和查看。
结论:PCA不仅是一种降维技术,更是一种特征创造的方法。它通过压缩已存在的特征来生成新的特征矩阵,这些新特征并非原数据中的直接特征,而是通过特定方式组合而成的。在新的特征矩阵生成之前,我们无法确切知道PCA是如何创建这些新特征向量的。这些新特征虽然携带了原始数据的信息,但已经不再代表原数据中的具体含义。对于那些不要求解释新特征与标签之间关系的模型(如线性回归等),PCA可能不是最佳选择。在这些情况下,特征选择或其他方法可能更为合适。