sklearn中的PCA模型

蹲街弑〆低调 提交于 2020-01-25 01:01:37

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,其选择主要依托于下游任务的效果。

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!