jjzjj

PCA主成分分析法浅理解

u小鬼 2024-02-27 原文

ML课刚学,发现更多是对线性代数的回顾。更进一步说,统计机器学习方法就是以高数、线代和概率论为基石构筑的“一栋大厦”。下面主要沿着老师ppt的思路讲讲对PCA方法的个人理解。



这里 u 1 T x ( i ) u_1^Tx^{(i)} u1Tx(i) x ( i ) x^{(i)} x(i)在单位方向向量 u 1 u_1 u1上的投影长度,实际上 u 1 ⋅ x ( i ) ∣ u 1 ∣ = u 1 ⋅ x ( i ) = u 1 T x ( i ) \frac{u_1\cdot x^{(i)}}{|u_1|}=u_1\cdot x^{(i)}=u_1^Tx^{(i)} u1u1x(i)=u1x(i)=u1Tx(i).


求取投影后数据的方差,并通过协方差矩阵的形式表达:
1 N ∑ i = 1 N ( u 1 T x ( i ) − u 1 T μ ) 2 = 1 N ∑ i = 1 N ( ( x ( i ) ) T u 1 − μ T u 1 ) 2 = 1 N ∑ i = 1 N ( ( x ( i ) ) T u 1 − μ T u 1 ) T ( ( x ( i ) ) T u 1 − μ T u 1 ) = 1 N ∑ i = 1 N u 1 T ( ( x ( i ) ) T − μ T ) T ( ( x ( i ) ) T − μ T ) u 1 = 1 N ∑ i = 1 N u 1 T ( x ( i ) − μ ) ( x ( i ) − μ ) T u 1 = u 1 T [ 1 N ∑ i = 1 N ( x ( i ) − μ ) ( x ( i ) − μ ) T ] u 1 = u 1 T S u 1 \frac{1}{N}\sum_{i=1}^{N}(u_1^Tx^{(i)}-u_1^T\mu)^2\\ =\frac{1}{N}\sum_{i=1}^{N}((x^{(i)})^Tu_1-\mu^Tu_1)^2\\ =\frac{1}{N}\sum_{i=1}^{N}((x^{(i)})^Tu_1-\mu^Tu_1)^T((x^{(i)})^Tu_1-\mu^Tu_1)\\ =\frac{1}{N}\sum_{i=1}^{N}u_1^T((x^{(i)})^T-\mu^T)^T((x^{(i)})^T-\mu^T)u_1\\ =\frac{1}{N}\sum_{i=1}^{N}u_1^T(x^{(i)}-\mu)(x^{(i)}-\mu)^Tu_1\\ =u_1^T[\frac{1}{N}\sum_{i=1}^{N}(x^{(i)}-\mu)(x^{(i)}-\mu)^T]u_1\\ =u_1^TSu_1 N1i=1N(u1Tx(i)u1Tμ)2=N1i=1N((x(i))Tu1μTu1)2=N1i=1N((x(i))Tu1μTu1)T((x(i))Tu1μTu1)=N1i=1Nu1T((x(i))TμT)T((x(i))TμT)u1=N1i=1Nu1T(x(i)μ)(x(i)μ)Tu1=u1T[N1i=1N(x(i)μ)(x(i)μ)T]u1=u1TSu1
第一步变换,将点积表达为 u 1 T x ( i ) u_1^Tx^{(i)} u1Tx(i) ( x ( i ) ) T u 1 (x^{(i)})^Tu_1 (x(i))Tu1是等价的。


优化目标为使投影数据的方差最大,根据最大方差理论:方差越大,信息量越大。以此为目标使投影保留的数据信息量最大,损失最小。使用拉格朗日乘子法求解:
这里要用到矩阵求导公式: ∇ X X T A X = ( A + A T ) X \nabla_{X} X^TAX=(A+A^T)X XXTAX=(A+AT)X.

求导后我们发现极值处 λ 1 \lambda_1 λ1不就是协方差矩阵 S S S的特征值, u 1 u_1 u1不就是对应的特征向量!左右同时乘上 u 1 T u_1^T u1T,得到 u 1 T S u 1 = λ 1 u_1^TSu_1=\lambda_1 u1TSu1=λ1,等式左侧正是我们的优化目标,特征值 λ 1 \lambda_1 λ1就是数据投影至向量 u 1 u_1 u1上的方差。
因此,在算法步骤中,对 S S S进行特征值分解,将特征值从大到小排序 λ 1 , λ 2 , . . . λ n \lambda_1,\lambda_2,...\lambda_n λ1,λ2,...λn,对应的特征向量为 u 1 , u 2 , . . . u n u_1,u_2,...u_n u1,u2,...un,取前 K K K个作投影,将数据降至 K K K维。

PCA算法步骤:



前面提到损失最小,如何量化说明这点?通过降维后的数据重构原数据 x ~ ( i ) \widetilde{x}^{(i)} x (i),看损失了多少,是不是最小。


∣ ∣ x ( i ) − u u T x ( i ) ∣ ∣ 2 = ( x ( i ) − u u T x ( i ) ) T ( x ( i ) − u u T x ( i ) ) = ( ( x ( i ) ) T − ( x ( i ) ) T u u T ) ( x ( i ) − u u T x ( i ) ) = ( x ( i ) ) T x ( i ) − 2 ( x ( i ) ) T u u T x ( i ) + ( x ( i ) ) T u u T u u T x ( i ) = ( x ( i ) ) T x ( i ) − 2 ( x ( i ) ) T u u T x ( i ) + ( x ( i ) ) T u u T x ( i ) = ( x ( i ) ) T x ( i ) − ( x ( i ) ) T u u T x ( i ) ||x^{(i)}-uu^Tx^{(i)}||^2\\ =(x^{(i)}-uu^Tx^{(i)})^T(x^{(i)}-uu^Tx^{(i)})\\ =((x^{(i)})^T-(x^{(i)})^Tuu^T)(x^{(i)}-uu^Tx^{(i)})\\ =(x^{(i)})^Tx^{(i)}-2(x^{(i)})^Tuu^Tx^{(i)}+(x^{(i)})^Tuu^Tuu^Tx^{(i)}\\ =(x^{(i)})^Tx^{(i)}-2(x^{(i)})^Tuu^Tx^{(i)}+(x^{(i)})^Tuu^Tx^{(i)}\\ =(x^{(i)})^Tx^{(i)}-(x^{(i)})^Tuu^Tx^{(i)} x(i)uuTx(i)2=(x(i)uuTx(i))T(x(i)uuTx(i))=((x(i))T(x(i))TuuT)(x(i)uuTx(i))=(x(i))Tx(i)2(x(i))TuuTx(i)+(x(i))TuuTuuTx(i)=(x(i))Tx(i)2(x(i))TuuTx(i)+(x(i))TuuTx(i)=(x(i))Tx(i)(x(i))TuuTx(i)

m i n ∑ ( ( x ( i ) ) T x ( i ) − ( x ( i ) ) T u u T x ( i ) )    ⟺    m a x ∑ ( ( x ( i ) ) T u u T x ( i ) ) min\sum((x^{(i)})^Tx^{(i)}-(x^{(i)})^Tuu^Tx^{(i)})\\ \iff max\sum((x^{(i)})^Tuu^Tx^{(i)}) min((x(i))Tx(i)(x(i))TuuTx(i))max((x(i))TuuTx(i))
进一步变换,利用 u T x ( i ) = ( x ( i ) ) T u u^Tx^{(i)}=(x^{(i)})^Tu uTx(i)=(x(i))Tu
   ⟺    m a x ∑ ( ( ( x ( i ) ) T u ) ( u T x ( i ) ) )    ⟺    m a x ∑ ( ( u T x ( i ) ) ( ( x ( i ) ) T u ) )    ⟺    m a x ∑ ( u T x ( i ) ( x ( i ) ) T u )    ⟺    m a x   u T ∑ ( x ( i ) ( x ( i ) ) T ) u \iff max\sum(((x^{(i)})^Tu)(u^Tx^{(i)}))\\ \iff max\sum((u^Tx^{(i)})((x^{(i)})^Tu))\\ \iff max\sum(u^Tx^{(i)}(x^{(i)})^Tu)\\ \iff max\ u^T\sum(x^{(i)}(x^{(i)})^T)u max(((x(i))Tu)(uTx(i)))max((uTx(i))((x(i))Tu))max(uTx(i)(x(i))Tu)max uT(x(i)(x(i))T)u
最后发现这和前面方差最大的优化目标时相等价,印证了最大方差理论。

有关PCA主成分分析法浅理解的更多相关文章

  1. CAN协议的学习与理解 - 2

    最近在学习CAN,记录一下,也供大家参考交流。推荐几个我觉得很好的CAN学习,本文也是在看了他们的好文之后做的笔记首先是瑞萨的CAN入门,真的通透;秀!靠这篇我竟然2天理解了CAN协议!实战STM32F4CAN!原文链接:https://blog.csdn.net/XiaoXiaoPengBo/article/details/116206252CAN详解(小白教程)原文链接:https://blog.csdn.net/xwwwj/article/details/105372234一篇易懂的CAN通讯协议指南1一篇易懂的CAN通讯协议指南1-知乎(zhihu.com)视频推荐CAN总线个人知识总

  2. TimeSformer:抛弃CNN的Transformer视频理解框架 - 2

    Transformers开始在视频识别领域的“猪突猛进”,各种改进和魔改层出不穷。由此作者将开启VideoTransformer系列的讲解,本篇主要介绍了FBAI团队的TimeSformer,这也是第一篇使用纯Transformer结构在视频识别上的文章。如果觉得有用,就请点赞、收藏、关注!paper:https://arxiv.org/abs/2102.05095code(offical):https://github.com/facebookresearch/TimeSformeraccept:ICML2021author:FacebookAI一、前言Transformers(VIT)在图

  3. ruby - 易于初学者理解的 Ruby 库 - 2

    关闭。这个问题不符合StackOverflowguidelines.它目前不接受答案。我们不允许提问寻求书籍、工具、软件库等的推荐。您可以编辑问题,以便用事实和引用来回答。关闭3年前。Improvethisquestion我正处于学习Ruby的阶段,我想查看一些小型库的源代码以了解它们是如何构建的。我不知道什么是小型图书馆,但希望SO能推荐一些易于理解的图书馆来学习。因此,如果有人知道一两个非常小的库,这是新手Rubyists学习的好例子,请推荐!我想使用Manveru'sInnatelib,因为它试图保持在2000LOC以下,但我还不熟悉其中经常使用的Ruby速记。也许大约100-5

  4. ruby - 无法理解 `puts{}.class` 和 `puts({}.class)` 之间的区别 - 2

    由于匿名block和散列block看起来大致相同。我正在玩它。我做了一些严肃的观察,如下所示:{}.class#=>Hash好的,这很酷。空block被视为Hash。print{}.class#=>NilClassputs{}.class#=>NilClass为什么上面的代码和NilClass一样,下面的代码又显示了Hash?puts({}.class)#Hash#=>nilprint({}.class)#Hash=>nil谁能帮我理解上面发生了什么?我完全不同意@Lindydancer的观点你如何解释下面几行:print{}.class#NilClassprint[].class#A

  5. ruby - 如何理解 Ruby 中的发送者和接收者? - 2

    我很难理解Ruby中sender和receiver的实际含义。它们一般是什么意思?到目前为止,我只是将它们理解为方法调用和获取其返回值的调用。但是,我知道我的理解还远远不够。谁能给我一个Ruby中发送者和接收者的具体解释? 最佳答案 面向对象中的一个核心概念是消息传递和早期概念化,这在很大程度上借鉴了计算的Actor模型。艾伦·凯(AlanKay)创造了面向对象一词并发明了最早的OO语言之一SmallTalk,他拥有voicedregretatusingatermwhichputthefocusonobjectsinsteadofo

  6. ruby-on-rails - Rails - 理解 application.js 和 application.css - 2

    rails新手。只是想了解\assests目录中的这两个文件。例如,application.js文件有如下行://=requirejquery//=requirejquery_ujs//=require_tree.我理解require_tree。只是将所有JS文件添加到当前目录中。根据上下文,我可以看出requirejquery添加了jQuery库。但是它从哪里得到这些jQuery库呢?我没有在我的Assets文件夹中看到任何jquery.js文件——或者直接在我的整个应用程序中没有看到任何jquery.js文件?同样,我正在按照一些说明安装TwitterBootstrap(http:

  7. 建模分析 | 平面2R机器人(二连杆)运动学与动力学建模(附Matlab仿真) - 2

    目录0专栏介绍1平面2R机器人概述2运动学建模2.1正运动学模型2.2逆运动学模型2.3机器人运动学仿真3动力学建模3.1计算动能3.2势能计算与动力学方程3.3动力学仿真0专栏介绍?附C++/Python/Matlab全套代码?课程设计、毕业设计、创新竞赛必备!详细介绍全局规划(图搜索、采样法、智能算法等);局部规划(DWA、APF等);曲线优化(贝塞尔曲线、B样条曲线等)。?详情:图解自动驾驶中的运动规划(MotionPlanning),附几十种规划算法1平面2R机器人概述如图1所示为本文的研究本体——平面2R机器人。对参数进行如下定义:机器人广义坐标

  8. 网站日志分析软件--让网站日志分析工作变得更简单 - 2

    网站的日志分析,是seo优化不可忽视的一门功课,但网站越大,每天产生的日志就越大,大站一天都可以产生几个G的网站日志,如果光靠肉眼去分析,那可能看到猴年马月都看不完,因此借助网站日志分析工具去分析网站日志,那将会使网站日志分析工作变得更简单。下面推荐两款网站日志分析软件。第一款:逆火网站日志分析器逆火网站日志分析器是一款功能全面的网站服务器日志分析软件。通过分析网站的日志文件,不仅能够精准的知道网站的访问量、网站的访问来源,网站的广告点击,访客的地区统计,搜索引擎关键字查询等,还能够一次性分析多个网站的日志文件,让你轻松管理网站。逆火网站日志分析器下载地址:https://pan.baidu.

  9. ABB-IRB-1200运动学分析MATLAB RVC工具分析+Simulink-Adams联合仿真 - 2

    一、机器人介绍        此处是基于MATLABRVC工具箱,对ABB-IRB-1200型号的微型机械臂进行正逆向运动学分析,并利Simulink工具实现对机械臂进行具有动力学参数的末端轨迹规划仿真,最后根据机械模型设计Simulink-Adams联合仿真。 图1.ABBIRB 1200尺寸参数示意图ABBIRB 1200提供的两种型号广泛适用于各作业,且两者间零部件通用,两种型号的工作范围分别为700 mm 和 900 mm,大有效负载分别为 7 kg 和5 kg。 IRB 1200 能够在狭小空间内能发挥其工作范围与性能优势,具有全新的设计、小型化的体积、高效的性能、易于集成、便捷的接

  10. 关于Qt程序打包后运行库依赖的常见问题分析及解决方法 - 2

    目录一.大致如下常见问题:(1)找不到程序所依赖的Qt库version`Qt_5'notfound(requiredby(2)CouldnotLoadtheQtplatformplugin"xcb"in""eventhoughitwasfound(3)打包到在不同的linux系统下,或者打包到高版本的相同系统下,运行程序时,直接提示段错误即segmentationfault,或者Illegalinstruction(coredumped)非法指令(4)ldd应用程序或者库,查看运行所依赖的库时,直接报段错误二.问题逐个分析,得出解决方法:(1)找不到程序所依赖的Qt库version`Qt_5'

随机推荐