机器学习深度研讨:数据降维线性方法之主成分分析
作者头像
  • 乌咪姐
  • 2020-05-12 12:30:11 6

大家好,我是一名Python数据分析师,希望通过我的经验分享,帮助大家在人工智能领域取得进步。因此,我编写了一系列教程,分别是《15天学会Python编程》、《每天10分钟,用Python学数据分析》、《Python数据可视化实战》和《33天搞定机器学习》。

在开始之前,我想说一些话。我收到了一些反馈,提到我的专栏更新速度较慢。实际上,作为一名技术博主,我深知持续创作的难度。尤其是作为一名技术博主,还需要格外严谨,以免误导读者。

这个专栏的文章都是现写的,每一篇文章都经历了选题、构思、实践和撰写的过程,每周按时更新已经相当不易。因此,我特别感谢那些订阅我的读者给予的支持和信任。

接下来,我们来讨论一下数据降维。

在上一篇文章中,我们探讨了特征选择的相关知识。有些读者可能不太清楚特征选择与数据降维的区别。这两个概念虽然不同,但目标是一致的:减少数据集中特征的数量。

  • 特征选择是指从现有特征中选择一部分或去除一部分,不改变原有特征。
  • 数据降维则是将特征转换为低维特征,改变了原有特征。

数据降维的好处在于能减少计算量,从而提高计算效率。这种方法在文本处理、人脸识别、图像识别以及自然语言处理等领域应用广泛。

数据降维的方法有很多种,本文主要介绍经典的PCA方法。

PCA原理

主成分分析(PCA)是一种常用的无监督降维方法,它通过正交变换将线性相关变量表示的数据转换为少数几个线性无关变量表示的数据。这些线性无关的变量被称为“主成分”,其数量通常少于原始变量的数量,这样就实现了高维特征到低维特征的映射。

关于主成分的另一种理解方式是:主成分就是协方差矩阵对应的特征向量,按照特征值的大小进行排序,最大特征值对应的第一主成分,依次类推。

如果想详细了解PCA的数学推导,可以参考李航老师的《统计学习方法》第十六章。由于专栏不支持LaTeX公式,这里不再详细介绍。

PCA的独特视角

关于PCA,我曾看过一个独特的解释,即台大李宏毅教授将其比作一个具有隐藏层的神经网络。有兴趣深入了解的读者可以查看李教授的相关课程,特别是关于主成分分析的部分。

PCA算法流程

PCA算法的主要步骤参考了周志华教授的《机器学习》第十章第三节。简而言之,求得样本集的协方差矩阵的前k个特征值对应的特征向量矩阵W,然后对每个样本x(i)进行如下变换:Z(i)=W^T * x^(i),从而实现降维的目的。

PCA参数详解

在scikit-learn库中,与PCA相关的类位于sklearn.decomposition包中。为了方便大家理解和使用,我已经整理了一份详细的速查表。如有需要,可以私信我获取高清大图。

PCA实例

我们以sklearn库内置的鸢尾花数据集为例,演示如何将原本四维的数据降维为二维。

```python import matplotlib.pyplot as plt from sklearn import datasets from sklearn.decomposition import PCA

加载数据

iris = datasets.load_iris() X = iris.data[:, :2] y = iris.target

绘制散点图

plt.figure(2, figsize=(8, 6)) plt.clf() plt.scatter(X[:, 0], X[:, 1], c=y, cmap=plt.cm.Set1, edgecolor='k') plt.xlabel('Sepal length') plt.ylabel('Sepal width') plt.xlim(X[:, 0].min() - .5, X[:, 0].max() + .5) plt.ylim(X[:, 1].min() - .5, X[:, 1].max() + .5) plt.xticks(()) plt.yticks(()) plt.show()

使用PCA进行降维

pca = PCA(ncomponents=2) Xr = pca.fit_transform(X)

绘制降维后的结果

plt.figure() colors = ['navy', 'turquoise', 'darkorange'] lw = 2

for color, i, targetname in zip(colors, [0, 1, 2], iris.targetnames): plt.scatter(Xr[y == i, 0], Xr[y == i, 1], color=color, alpha=.8, lw=lw, label=target_name) plt.legend(loc='best', shadow=False, scatterpoints=1) plt.title('PCA of IRIS dataset') plt.show() ```

总结

PCA的优点:

  1. 计算方法简单,易于在计算机上实现。
  2. 属于无监督学习,不需要人为设定参数。
  3. 最大程度保留原始数据信息,并给出重要性排序。
  4. 各主成分之间正交,可消除原始数据成分间的相互影响。

PCA的缺点:

  1. 属于线性降维方法,不适合处理非线性关系数据。
  2. 在样本点不符合高斯分布的情况下效果较差。
  3. 贡献率较小的主成分可能包含对样本差异的重要信息。
  4. 数据一次性加载到内存中,不适用于大规模数据集。

希望这些内容对大家有所帮助。

    本文来源:图灵汇
责任编辑: : 乌咪姐
声明:本文系图灵汇原创稿件,版权属图灵汇所有,未经授权不得转载,已经协议授权的媒体下载使用时须注明"稿件来源:图灵汇",违者将依法追究责任。
    分享
线性研讨成分深度机器方法分析数据学习
    下一篇