sklearn中提供了较为丰富的PCA模型来解决数据的降维问题,其包括:
(1)PCA:最原始的PCA算法;
(2)TruncatedSVD:原始数据不做中心化处理的PCA算法,可用于文本数据(TF-IDF处理后)的隐藏语义分析(LSA);
(3)SparsePCA:添加L1正则化处理后的PCA算法,用最小角回归算法求解,可在一定程度上解决数据噪声的问题,进一步降低分解后的数据维度;
(4)MiniBatchSparsePCA:添加L1正则化处理后PCA算法,基于小批量数据的PCA算法。
(5)IncrementalPCA:增量学习的PCA算法,通过partial_fit解决数据量过大情况下内存限制的问题。
(6)KernelPCA:样本协方差矩阵中的元素均为样本内积,因此可利用核技巧,将其它应用到非线性空间上。
本文仅详细介绍最原始的PCA算法。
1. 模型的主要参数
模型参数 | Parameter含义 | 备注 |
n_components | 主成分数 | 用于空值分解后的目标维度,其可选值包括:1.整数,指定具体的值;2. 百分比,分解后的维度包含的信息量(方差)必须大于原始信息量*百分比;3. 'mle'采用极大似然估计法,预估目标维度;4.None, 默认为数据特征数目和数据行数中最小的那个值,注意当solver为'arpack',还需在上述值基础上减1; |
whiten | 白化 | 布尔值,默认False。白化即通过将各特征维度的数据进行归一化处理,使其各方差值相当。白化会使得各特征数据的方差信息丢失,但可能会提高下游任务的准确率。 |
svd_solver | 求解器 | 求解器类型包括:1.'auto',在数据量大于500*500同时分解后的目标维度少于原数据最低维度的80%时,采用'randomized'求解器,其它时候采用'full'求解器;2. 'full',完全的SVD分解;3. 'arpack',采用ARPACK库,此时的目标维度必须少于原数据最低维度;4.'randomized',采用随机SVD算法,可大大加快PCA的速度。默认值为'auto',一般取默认值即可。 |
tol | 误差 | 求解器为arpack时的参数,表示奇异值的误差阈值,默认值为0 |
iterated_power | 迭代次数 | 求解器为randomized时的参数,表示数值算法的迭代次数,可设为正整数,默认值为'auto' |
random_state | 随机种子 | 在求解器为arpack或randomized时,均具有一定的随机性。 |
2. 模型的主要方法
模型方法 | Parameter含义 | 备注 |
fit | 模型训练 | 基于预设的求解器和主成分数等参数,进行数据的PCA分解 |
transform | 数据转换 | 将数据转换到主成分线性空间 |
fit_transform | 训练和转换 | fit和transform函数的综合 |
inverse_transform | 逆转换 | 将数据将PCA后的主成分线性空间逆转换到原始空间。注意:因为转换后信息会丢失,所以无法完全还原,但PCA后的信息保留越好,其还原效果越佳。 |
score_samples | 各样本效果评分 | 返回各样本的对数似然函数评分 |
score | 样本总效果评分 | 返回各样本的对数似然函数评分的平均值 |
3. 模型的主要属性
模型方法 | Parameter含义 | 备注 |
components_ | 主成分向量 | PCA分解后,得到的各主成分向量,即为的目标线性空间的基 |
explained_variance_ | 可解释方差 | 各主成分向量的信息量,数值上等于数据X协方差矩阵n_components个最大的特征值(与components_向量一一对应) |
explained_variance_ratio_ | 可解释方差比重 | 上述n_components个最大的特征值的和与所有特征值综合的比值,代表着所选主向量占全部向量的信息值大小 |
singular_values_ | 奇异值 | n_components个主向量的2-范数值 |
noise_variance_ | 噪声方差 | 各非主成分向量的平均信息量,即非n_components个最大的特征值的平均值 |
4. 模型的调参
PCA模型的调参主要就是求解器svd_solver
和主成分个数n_components
,其选择主要依托于下游任务的效果。
来源:CSDN
作者:guofei_fly
链接:https://blog.csdn.net/guofei_fly/article/details/103956940