利用 PCA 来对数据降维

如题所述

第1个回答  2022-06-09

降维往往作为预处理步骤,其中独立成分分析、因子分析和主成分分析比较流行,主成分分析(PCA)最为广泛。

主成分分析会通过线性组合将多个原始变量合并成若干个主成分,这样每个主成分都变成了原始变量的线性组合。这种转变的目的,一方面是可以大幅降低原始数据的维度,同时也在此过程中发现原始数据属性之间的关系。

主成分分析的主要步骤如下:
1)通常要先进行各变量的标准化工作,标准化的目的是将数据按照比例进行缩放,使之落入一个小的区间范围之内,从而让不同的变量经过标准化处理后可以有平等的分析和比较基础。
2)选择协方差阵或者相关阵计算特征根及对应的特征向量。
3)计算方差贡献率,并根据方差贡献率的阀值选取合适的主成分个数。
4)根据主成分载荷的大小对选择的主成分进行命名。
5)根据主成分载荷计算各个主成分的得分。

将主成分进行推广和延伸即成为因子分析(Factor Analysis),因子分析在综合原始变量信息的基础上将会力图构筑若干个意义较为明确的公因子;也就是说,采用少数几个因子描述多个指标之间的联系,将比较密切的变量归为同一类中,每类变量即是一个因子。之所以称其为因子,是因为它们实际上是不可测量的,只能解释。

主成分分析是因子分析的一个特例,两者的区别和联系主要表现在以下方面:
❑ 主成分分析会把主成分表示成各个原始变量的线性组合,而因子分析则把原始变量表示成各个因子的线性组合。这个区别最直观也最容易记住。
❑ 主成分分析的重点在于解释原始变量的总方差,而因子分析的重点在于解释原始变量的协方差。
❑ 在主成分分析中,有几个原始变量就有几个主成分,而在因子分析中,因子个数可以根据业务场景的需要人为指定,并且指定的因子数量不同,则分析结果也会有差异。
❑ 在主成分分析中,给定的协方差矩阵或者相关矩阵的特征值是唯一时,主成分也是唯一的,但是在因子分析中,因子不是唯一的,并且通过旋转可以得到不同的因子。

主成分分析和因子分析在数据化运营实践中主要用于数据处理、降维、变量间关系的探索等方面,同时作为统计学里的基本而重要的分析工具和分析方法,它们在一些专题分析中也有着广泛的应用。

PCA借助于一个正交变换,将其分量相关的原随机变量转化成其分量不相关的新随机变量。主要作用是对高维数据进行降维。PCA把原先的n个特征用数目更少的k个特征取代,新特征是旧特征的线性组合,这些线性组合最大化样本方差,尽量使新的k个特征互不相关。

PCA 可以从数据中识别其主要特征,它是通过沿着数据最大方差方向旋转坐标轴来实现的。选择方差最大的方向作为第一条坐标轴,后续坐标轴则与前面坐标轴正交。协方差矩阵上的特征值分析可以用一系列的正交坐标轴来获取。

优点: 降低数据的复杂性,识别最重要的多个特征。
缺点: 不一定需要,且可能损失有用信息。

PCA的主要算法如下:
组织数据形式,以便于模型使用;
计算样本每个特征的平均值;
每个样本数据减去该特征的平均值(归一化处理);
求协方差矩阵;
找到协方差矩阵的特征值和特征向量;
对特征值和特征向量重新排列(特征值从大到小排列);
对特征值求取累计贡献率;
对累计贡献率按照某个特定比例选取特征向量集的子集合;
对原始数据(第三步后)进行转换。

其中协方差矩阵的分解可以通过按对称矩阵的特征向量来,也可以通过分解矩阵的SVD来实现,而在Scikit-learn中,也是采用SVD来实现PCA算法的。这里给出带SVD的原始算法和Scikit-learn模块实现的PCA类。