机器学习训练营——机器学习爱好者的自由交流空间(入群联系qq:2279055353)
主成分分析
精确主成分
主成分分析(Principal component analysis, PCA)通常用来分解一个多变量数据集成为逐次正交的成分,这些成分解释原始变量的方差最大。在scikit-learn里,PCA是一个转换对象,在该对象的fit
方法里学习n个成分,用于新数据投影到这些成分上,得到新的主成分数据。
设置最优参数whiten=True
, 投影数据到奇异空间上,缩放每个主成分为单位方差。在支持向量机和k-means里,这样的参数设置是有利的。
增量主成分
PCA对象虽然有用,但对于大数据集却有些限制。最大的限制是,PCA只支持批量处理,这意味着所有等待处理的数据必须符合主存储器的要求。IncrementalPCA
对象使用了一个不同的处理形式,它考虑几乎精确地匹配PCA结果的部分计算,而以一种最小批量的方式处理数据。IncrementalPCA只存储主成分和噪音方差的估计。
随机SVD
通过放弃较小奇异值的主成分的奇异向量,可以实现将数据投射到低维空间,而仍能保持大部分方差的目的。例如,对于 64 × 64 64\times64 64×64的人脸识别灰度图像,数据的维度是4096, 在这样规模的数据上训练一个RBF支持向量机是很慢的。由于人脸的所有图像看起来相似,所以数据的内在维度远小于4096. PCA算法能够用来线性地转换数据,同时降低维度和保持大部分可解释方差。
在PCA
类里,当我们想放弃大部分限制计算的奇异向量时,使用参数svd_solver='randomized'
是非常有用的。例如,下面显示了来自Olivetti数据集的16个样本肖像。在右边是由前16个奇异向量重新组成的肖像。该数据集的样本数是400, 特征数是4096, 而我们仅仅需要前16个奇异向量来表示,计算时间不到1秒。
注意:在设置参数svd_solver='randomized’时,同时也需要设置低维空间大小参数n_components.
因子分析
在无监督学习里,我们只有一个数据集 X = { x 1 , x 2 , … , x n } X=\{x_1, x_2, \dots, x_n\} X={
x1,x2,…,xn}. 数学上怎样表示这个数据集呢? X X X 的一个简单的连续隐变量模型是
x i = W h i + μ + ϵ x_i=W h_i+\mu+\epsilon xi=Whi+μ+ϵ
向量 h i h_i hi 称为隐藏的,因为它是观测不到的。 ϵ \epsilon