目录
更新、更全的《机器学习》的更新网站,更有python、go、数据结构与算法、爬虫、人工智能教学等着你:https://www.cnblogs.com/nickchen121/
PCA在scikit-leran库中的sklearn.decomposition
包下,PCA即最普通的PCA,PCA也有很多变种,我们主要会讲解PCA,然后聊一聊KernelPCA
、IncremetalPCA
、SparsePCA
、MiniBatchSparsePCA
。
接下来将会讨论上述五者的区别,由于是从官方文档翻译而来,翻译会略有偏颇,有兴趣的也可以去scikit-learn官方文档查看https://scikit-learn.org/stable/modules/classes.html#module-sklearn.decomposition
PCA是PCA系列降维算法中最原始的降维方法,因为原始,所以它一般是我们首选的,如果感觉原始的PCA可能无法解决我们的问题,我们可以尝试使用其他的PCA系列的降维算法。
import numpy as np
from sklearn.decomposition import PCA
X = np.array([[-1, -1, 2], [-2, -1, 1], [-3, -2, 3],
[1, 1, 2], [2, 1, 2], [3, 2, 3]])
pca = PCA(n_components=2)
pca.fit(X)
PCA(copy=True, iterated_power='auto', n_components=2, random_state=None,
svd_solver='auto', tol=0.0, whiten=False)
print(pca.explained_variance_ratio_)
[0.92991028 0.06363895]
print(pca.singular_values_)
[6.311193 1.65102037]
pca = PCA(n_components=2, svd_solver='full')
pca.fit(X)
PCA(copy=True, iterated_power='auto', n_components=2, random_state=None,
svd_solver='full', tol=0.0, whiten=False)
print(pca.explained_variance_ratio_)
[0.92991028 0.06363895]
print(pca.singular_values_)
[6.311193 1.65102037]
pca = PCA(n_components=1, svd_solver='arpack')
pca.fit(X)
PCA(copy=True, iterated_power='auto', n_components=1, random_state=None,
svd_solver='arpack', tol=0.0, whiten=False)
print(pca.explained_variance_ratio_)
[0.92991028]
print(pca.singular_values_)
[6.311193]
KernelPCA
模型类似于非线性支持向量机,使用核技巧处理非线性数据的降维,主要是选择合适的核函数。
IncrementalPCA
模型主要是为了解决计算机内存限制问题。工业上样本量和维度都是非常大的,如果直接拟合数据,机器性能一般都无法支撑。IncrementalPCA
则会将数据分成多个batch,然后对每个batch依次递增调用partial_fit函数对样本降维。
SparsePCA
模型相较于普通的PCA
区别在于使用了L1正则化,即对非主成分的影响降为0,避免了噪声对降维的影响。
MiniBatchSparsePCA
模型类似于SparsePCA
,不同之处在于MiniBatchSparsePCA
模型通过使用一部分样本特征和给定的迭代次数进行降维,以此来解决特征分解过慢的问题。
原文:https://www.cnblogs.com/nickchen121/p/11686711.html