直观解释PCA

作者: 掰不开桃子的男人 | 来源:发表于2019-07-18 11:19 被阅读0次

是干什么的?

首先有一组数据蓝色点,PCA所谓的降维操作就是找到一个新的坐标系(旋转的两条直线式垂直的,我们可以用一组标准正交基来指示),然后减掉其中一些维度,使误差足够小。

image.png

基本思路

假设我们有一个数据X_{n*m},其中n代表了特征的个数,m代表了样本数。首先对X的特征进行零均值化。

协方差矩阵C_{n*n} = XX^T(这里应该除以m,不妨碍推导),C的对角线代表了特征自身的方差,而其他位置比如C_{i,j}代表了特征i和特征j之间的协方差。

我们想要对原来的数据X做一个行变换A_{n*n},把原来的特征组合成新的特征,而新的特征之间没有关联,也就是新的矩阵Y_{n*m}的协方差矩阵里只有对角线元素,其他位置都是0.

Want: YY^T=\Lambda\Lambda是一个对角阵

带入Y=AX得到(AX)(AX)^T=\Lambda,展开得到AXX^TA^T=\Lambda,同志们这不就是对XX^T进行对角化吗?因为XX^T是实对称矩阵,一定可以对角化XX^T=Q{\Lambda}Q^T,原式中的A就是对角化后的特征向量矩阵Q^T

其中特征值\Lambda大小代表了Y里面特征的方差大小,特征值越大,特征的方差越大,信息量越多。我们挑选主成分的话,只要挑选前面比较大的特征值对应的特征就可以了。

计算PCA的步骤

总结一下PCA的步骤:

1. 将原始数据按列组成n行m列矩阵X

2. 将X的每一行(代表一个属性字段)进行零均值化,即减去这一行的均值

3. 求出协方差矩阵C=1/m * XX^T

4. 求出协方差矩阵的特征值\Lambda及对应的特征向量Q

5. 将特征向量按对应特征值大小从左到右按列排列成矩阵,取前k行组成矩阵Q

6. Y=Q^TX即为降维到k维后的数据

与SVD的关系

以上就是先求协方差矩阵然后特征值分解的方法,那么可以不求协方差矩阵吗?可以,直接用SVD。

SVD可以分解任意矩阵:X = U \Sigma V ^ T

上面通过XX^T特征值分解其实得到的就是这里的U矩阵,通过成熟的SVD方法很容易求得这些矩阵。

参考:

Machine Learning — Singular Value Decomposition (SVD) & Principal Component Analysis (PCA)

从PCA和SVD的关系拾遗

PCA的数学原理

相关文章

  • 直观解释PCA

    是干什么的? 首先有一组数据蓝色点,PCA所谓的降维操作就是找到一个新的坐标系(旋转的两条直线式垂直的,我们可以用...

  • 直观解释SVD

    基本概念 SVD(singular value decomposition),奇异值分解 对称方阵可以分解成特征值...

  • PCA原理及实现-R

    PCA分析与解释 PCA是一种无参数的数据降维方法,常用的机器学习算法一种,这篇文章主要从PCA应用于解释两个方面...

  • PCA 和火山图

    1.PCA 加载R包 计算PCA ggplot2绘图 整理数据 1.去掉行名 解释度 比如PC1解释度为8.224...

  • 利用Matlab中的pca函数进行数据降维

    前言 Matlab中关于pca函数的说明写得并不直观,很多人最直接的目的只是想得到pca降维后的结果,但是根据官方...

  • numpy实现鸢尾花数据集PCA降维

    PCA降维过程 在前面的一篇博客中我已经从数学角度解释了PCA降维的原理,我们从中也可以得到PCA降维的过程1)将...

  • 简明PCA 的图解释

    一般来说,PCA分析2个图够了,以iris数据为例,在经过PCA分析后,我们可以得到第一章碎石图,表示PC1,2,...

  • t-SNE降维原理

    前言 PCA是一种线性降维算法,不能解释特征之间的复杂多项式关系。如果特征与特征之间的关系是非线性的话,用PCA可...

  • (翻译)SELinux 概念的直观解释

    来自Android官网文章 Android 中的安全增强型 Linux 参考资料推荐看到一篇比较直观的解释了SEl...

  • (翻译)SELinux 概念的直观解释

    SELinux 直观操作指南 中英文对照版 *all cartoons by Máirín Duffy 难以置信,...

网友评论

    本文标题:直观解释PCA

    本文链接:https://www.haomeiwen.com/subject/tiiklctx.html