程序员的数学基础课
黄申
LinkedIn 资深数据科学家
83374 人已学习
新⼈⾸单¥68
登录后,你可以任选4讲全文学习
课程目录
已完结/共 58 讲
导读 (1讲)
基础思想篇 (18讲)
程序员的数学基础课
15
15
1.0x
00:00/00:00
登录|注册

42 | PCA主成分分析(上):如何利用协方差矩阵来降维?

计算特征值的推导过程
(XλI)v=0(X-λI)v=0
Xv=λvXv=λv
线性代数中的重要概念
主对角线上的值是各维特征的方差
cov(X,i,X,j)=cov(X,j,X,i)cov(X_{,i},X_{,j})=cov(X_{,j},X_{,i})
计算
概念
表示
衡量两个变量的总体误差
x=xμσx'=\frac{x-μ}{σ}
转换原始数据
计算k1
选择最重要的主成分
特征值和特征向量
协方差矩阵
协方差
公式
生成新的特征
挑选主要的特征向量
计算协方差矩阵的特征值和特征向量
获取标准化数据的协方差矩阵
标准化样本矩阵中的原始数据
生成协方差矩阵
按照列进行标准化
挑选主要的特征向量,转换原始数据
计算协方差矩阵的特征值和特征向量
获取协方差矩阵
标准化原始数据
步骤
思考题
主成分分析PCA
如何利用协方差矩阵来降维?

该思维导图由 AI 生成,仅供参考

你好,我是黄申。
在概率统计模块,我详细讲解了如何使用各种统计指标来进行特征的选择,降低用于监督式学习的特征之维度。接下来的几节,我会阐述两种针对数值型特征,更为通用的降维方法,它们是主成分分析 PCA(Principal Component Analysis)和奇异值分解 SVD(Singular Value Decomposition)。这两种方法是从矩阵分析的角度出发,找出数据分布之间的关系,从而达到降低维度的目的,因此并不需要监督式学习中样本标签和特征之间的关系。

PCA 分析法的主要步骤

我们先从主成分分析 PCA 开始看。
在解释这个方法之前,我先带你快速回顾一下什么是特征的降维。在机器学习领域中,我们要进行大量的特征工程,把物品的特征转换成计算机所能处理的各种数据。通常,我们增加物品的特征,就有可能提升机器学习的效果。可是,随着特征数量不断的增加,特征向量的维度也会不断上升。这不仅会加大机器学习的难度,还会影响最终的准确度。针对这种情形,我们需要过滤掉一些不重要的特征,或者是把某些相关的特征合并起来,最终达到在减少特征维度的同时,尽量保留原始数据所包含的信息。
了解了这些,我们再来看今天要讲解的 PCA 方法。它的主要步骤其实并不复杂,我一说你就能明白,但是为什么要这么做,你可能并不理解。咱们学习一个概念或者方法,不仅要知道它是什么,还要明白是怎么来的,这样你就能知其然,知其所以然,明白背后的逻辑,达到灵活运用。因此,我先从它的运算步骤入手,给你讲清楚每一步,然后再解释方法背后的核心思想。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

本文介绍了利用协方差矩阵进行降维的方法,重点介绍了主成分分析(PCA)的步骤和原理。首先解释了特征降维的必要性和PCA方法的基本思想。随后详细介绍了PCA的主要步骤,包括标准化原始数据、获取协方差矩阵、计算特征值和特征向量等。特别是对协方差矩阵的定义和计算进行了详细解释,以及如何计算特征值和特征向量的推导过程。通过这些步骤,读者可以了解PCA方法的具体操作和数学原理,从而更好地理解和运用这一降维方法。文章还提到了如何选择主要特征向量并转换原始数据的方法,以及如何确定合适的特征维度。此外,作者还提出了思考题,引发读者对文章内容的进一步思考。整体而言,本文通过详细的解释和示例,帮助读者理解了PCA的复杂计算步骤和抽象思路,为进一步学习和应用PCA提供了良好的基础。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《程序员的数学基础课》
新⼈⾸单¥68
立即购买
登录 后留言

全部留言(12)

  • 最新
  • 精选
  • Joe
    一直有个问题为什么协方差是除以m-1,而不是m。方差,均方根等公式也是除m-1。好奇怪。

    作者回复: 这是个很好的问题,涉及的内容比较多,我可以放在后面答疑来解释

    2019-03-22
    4
  • !null
    是不是只有方阵才能求特征值和特征向量?特征值和特征向量的个数与矩阵的维度有关系吗?特征向量的维度和矩阵的维度有关系吗?

    作者回复: 是的,如果是非方阵,可以使用SVD奇异值分解

    2021-08-23
    2
  • yaya
    所以上只是讲解pca的步骤吗?非常赞同要明白他是为什么被提出的,怎么来的观点,但是pca如果只是记步骤很容易忘记,觉得还是从如何建模,然后推导而来更有印象。

    作者回复: 非常同意,我会在下一篇解释为什么PCA要这么做

    2019-03-22
    2
  • 牛奶
    请问,在解释协方差公式的时候,xbar是不是应该表示的是“m个样本x这个属性的平均值”?还有一个问题就是,关于这句“协方差是用于衡量两个变量的总体误差”,对于协方差的意义我只能理解到,协方差表示的是两个变量之间的相关性,为什么是两个变量的总体误差呢?

    作者回复: 对,xbar是平均值。你说的相关性和协方差类似,但不同。类似之处在于,它们都是研究两个变量之间的关系。不同在于,两个变量的相关系数是看它们是否同时往一个方向变化。如果变量A变大,B也变大,A变小B也变小,那么就是正相关,用正数。反之,A变大B变小,A变小B变大,那么就是负相关,用负数表示。而两者的协方差永远是正的

    2021-03-12
    1
  • 骑行的掌柜J
    这里Xn,1+...... 后面的括号是不是写错了?还是写掉了一部分?黄老师 (x1,1​−λ)(x2,2​−λ)…(xn,n​−λ)+x1,2​x2,3​…xn−1,n​xn,1​+…)−(xn,1​xn−1,2​…x2,n−1​x1,n​)=0 谢谢 因为有点没看懂😂

    作者回复: 应该是排版的格式问题,我查了一下自己的原稿,式子最左边还有一个左括号

    2020-07-06
    1
  • !null
    |(X-λI)| 那个竖线是什么意思?行列式是什么意思?怎么算的

    作者回复: 从几何的角度来理解,行列式的计算是为了求解n维空间中平行体的体积

    2020-10-10
  • qinggeouye
    markdown 语法支持不是很好 (1) 标准化原始数据 $$ x' = \frac{x-μ}{σ} $$ 第一列 均值 $μ_1 = 0$ , 方差 ${σ_1}^2 = [(1-0)^2 + (2-0)^2 + (-3-0)^2]/3 = 14/3$ 第二列 均值 $μ_2 =1/3 $ , 方差 ${σ_2}^2 = [(3-1/3)^2 + (5-1/3)^2 + (-7-1/3)^2]/3 = 248/9$ 第三列 均值 $μ_3 =-19/3 $ , 方差 ${σ_3}^2 = [(-7+19/3)^2 + (-14+19/3)^2 + (2+19/3)^2]/3 = 386/9$ 则, $$ \mathbf{X'} = \begin{vmatrix} 0.46291005&0.50800051&-0.10179732\\0.9258201&0.88900089&-1.17066918\\-1.38873015&-1.3970014&1.2724665\\\end{vmatrix} $$ (2)协方差矩阵 $$ \mathbf{cov(X_{,i}, X_{,j})} = \frac{\sum_{k=1}^m(x_{k,i} - \bar{X_{,i}})(x_{k,j} - \bar{X_{,j}})}{m-1} $$ $$ \mathbf{X'}.mean(asix=0) = [0,0, -7.401486830834377e-17] $$ $$ \mathbf{cov(X_{,i}, X_{,j})} = \frac{(\mathbf{X'[:,i-1]} - \mathbf{X'[:,i-1]}.mean()).transpose().dot(\mathbf{X'[:,j-1]} - \mathbf{X'[:,j-1]}.mean())} {m-1} $$ 协方差矩阵(对角线上是各维特征的方差): $$ \mathbf{COV} = \begin{vmatrix} \mathbf{cov(X_{,1}, X_{,1})} & \mathbf{cov(X_{,1}, X_{,2})} & \mathbf{cov(X_{,1}, X_{,3})} \\ \mathbf{cov(X_{,2}, X_{,1})} & \mathbf{cov(X_{,2}, X_{,2})} & \mathbf{cov(X_{,2}, X_{,3})} \\ \mathbf{cov(X_{,3}, X_{,1})} &\mathbf{cov(X_{,3}, X_{,2})} &\mathbf{cov(X_{,3}, X_{,3})}\\\end{vmatrix} = \begin{vmatrix} 1.5 & 1.4991357 & -1.44903232 \\ 1.4991357 & 1.5 & -1.43503825 \\ -1.44903232 & -1.43503825 & 1.5 \\\end{vmatrix} $$
    2019-03-31
    2
    4
  • 余泽锋
    import numpy as np import pandas as pd from sklearn.preprocessing import scale array = np.array([[1, 3, -7], [2, 5, -14], [-3, -7, 2]]) array = scale(array) df = pd.DataFrame(array) df.corr()
    2019-04-11
    1
    3
  • 建强
    1.标准化 第一步:计算每列平均值: E(X1) = 0, E(X2) = 1/3, E(X3) = -19/3 第二步:计算每列方差: D(X1) = 14/3, D(X2) = 248/9, D(X3) = 386/9 第三步:根据标准化公式:[X - E(X)] / SQRT[D(X)]做标准化处理,结果: X11 = 0.4628, X12 = 0.508, X13 = -0.1018 X21 = 0.9258, X22 = 0.889, X23 = -1.1707 X31 = -1.389, X32 = -1,397, X33 = 1.2725 2.协方差矩阵 [[ 7. , 17. , -20.5 ], [ 17. , 41.33333333, -49.33333333], [-20.5 , -49.33333333, 64.33333333]]
    2020-11-01
    1
    2
  • piboye
    最重要的数学推导没有啊
    2023-12-17归属地:广东
收起评论
显示
设置
留言
12
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部