Note sth about PCA(Principal Component Analysis)
  ML6月20日就要考试了,准备日更博客,来记录复习一下这次ML课所学习的一些方法。

博客是在参考老师的ppt,以及戳这里,学习播客之后完成的,主要运用ppt的公式,因为博客公式自己链过去就可以看了(;_;)。
  看学习博客的时候,发现它内附了另一篇作者自己的文章,和我微信公众号看到的几乎一模一样。???可是作者不是同一个人

动机:
  PCA的中文名字——主成分分析。顾名思义,是分析主成分的,何为主成分?那是一个事物组成部分里面为主的成分,至少从我的角度来说开始离题,我区分PCA和LDA(之后会更)的方法就是如此。PCA本身不能做分类(当然可以拿它降维完的特征再进一步进行分类),而LDA最直观的直接分类就是在两类的时候,LDA转换完的特征值可以直接分类(一正一负)。离题结束PCA能的最主要的事情大概就是降维了,这也就是PCA的动机。

PCA算法:
  首先,需要明确的是,PCA是根据方差来降维的,假设我们有个N维的向量,我们想降维到k维(k<=N),那么我们应该如何操作?降维至k,其实就是拿k个轴去表示目前的N维特征,显然不一定能够完全表示,但是丢失少量的信息是我们完全可以接受的(参考Subsampling)。那我们是不是第一次应该求出方差最大的轴,那第二次呢?我们应该求出方差次次大的轴!没错,但是约束条件是,第二次的轴必须和第一次的正交(参考XOY坐标系),那么第三个其实就是在垂直前两个轴所组成平面的平面上,方差最大的轴。显然,操作k次之后便得到了k个特征。这里有一种直观感受——如果样本是二维的,并且空间分布为一个椭圆,那么第一次的轴就是实轴,如果还要求第二次的话就是虚轴。
  其次,考虑一下方差,方差其实是一维特征的东西,推到高维,计算的应该是协方差。思考一下,互不相关的轴、从大到小的(协)方差。是否可以求出样本的协方差矩阵,最后求得这个矩阵的特征值与特征向量,然后取k个,就是所求答案?答案是肯定的。
算法公式概述:
$$ X \in R^{N * m} $$
$$ \overline{x} = \frac{1}{m} \sum_{i=1}^{m} x_i $$
$$ \Sigma = \frac{1}{m} \sum_{i=1}^{m} (x_i-\overline{x})(x_i-\overline{x})^T $$
$ {\lambda_i, \mu_i} $ the top k principle components(eigenvalue, eigenvector) and i = 1,2,......,k

问题:
  我们不难发现,将N维特征降至k维的方法很好,但也有一个很容易考虑到的问题,k是多少?显然,k越大,我们提取的特征就越接近原来的样本,可是这样就失去了降维的意义;而如果k过小,这样一来我们抓住了重点,可却也只抓住了重点,如果大家在重点上都表现得很好,那么又失去了区分度(类似于考试重点题,大家都会做)。于是乎我看到了老师与博客的不同,先说博客的:试,调节一个阈值去尝试然后评估,最后确定k之。显然可行,也非常符合我的考虑。但是我瞄到了老师的处理方法,发现老师运用了一个很寻常,但是式子很好看的方法——拉格朗日乘子法。为什么可以用拉格朗日乘子法?其实这需要将问题做一些转化,描述如下。
用拉格朗日乘子法解决找k的问题
$$ x \in R^N $$
$$ X = [x_1,x_2,......,x_m] \in R^{N * m} $$
$$ U = (\mu_1,\mu_2,......,\mu_n) \in R^{N * N} $$
$$ y = Ux $$
$$ x = U^Ty = \sum_{i=1}^{N} \mu_i y_i $$
$$ \widehat{x} = \sum_{i=1}^{M} \mu_i y_i, (M \leq N) $$
$$ \epsilon = E{ || x - \widehat{x} ||^2 } = \frac{1}{m} \sum_{j=1}^{m} || x_j - \widehat{x_j} || $$
GOAL:
$$ arg min \epsilon^2, s.t U^T U = I_N $$
  从这里我们可以看出,我们得到了一个优化目标argmin也得到了一个约束条件s.t,那么接下来就是拉格朗日乘子法的过程了。将$\epsilon$展开会发现,$\epsilon^2 = \sum_{i=M+1}^{N} \mu_i^T\Sigma\mu_i$,之后结合约束以及拉格朗日乘子法的过程,我们得到:$$ L = \epsilon^2 - \sum_{i=M+1}^{N} \lambda_i(\mu_i^T\mu_i-1) $$
  之后用L对$\mu$求偏导,得到:$ \frac{\partial L}{\partial\mu_i} = [2\Sigma\mu_i-2\lambda_i\mu_i] = 0 $
  现在形式就非常明显了——$ \Sigma\mu_i = \lambda\mu_i $,解出特征值,特征向量就结束了。
  其实,PCA在我看来说白了就是一句话:在方差最大的方向上(信号学相信样本是方差大的,而噪声是方差小的为什么???),选择一根轴,使得样本到轴的投影距离之和最小。

转载于:https://www.cnblogs.com/FormerAutumn/p/11017880.html

ML_Review_PCA(Ch4)相关推荐

  1. stm32 TIM1的CH1N~CH3N、CH1~CH4基本配置

    TIM1的CH1.CH1N.CH2.CH2N.CH3.CH3N.CH4基本配置输出PWM tim.h #ifndef __TIM_H #define __TIM_H #include "st ...

  2. [SLAM]高博视觉SLAM十四讲ch4中useSophus报错

    问题描述 在正常安装了Sophus库后,运行高博的代码,发现如下错误 #### #### Running command: "make -j16 -l16" in "/h ...

  3. GEE:快速下载NO2、O3、SO2、 HCHO、CH4、CO和气溶胶数据(Sentinel-5P数据集)

    Sentinel-5P数据集: Sentinel-5P是欧空局(Europe Space Agency, ESA)于2017年10月13日发射的一颗全球大气污染监测卫星.卫星搭载了对流层观测仪(Tro ...

  4. 《图解机器学习-杉山将著》读书笔记---CH4

    CH4 带有约束条件的最小二乘法 重点提炼 提出带有约束条件的最小二乘学习法的缘故:   左图中可见:一般的最小二乘学习法有个缺点----对于包含噪声的学习过程经常会过拟合 右图:有了空间约束之后,学 ...

  5. 用DP-GEN跑个简单的例子吧——CH4

    一个完整的DP-GEN过程包括构建初始数据集init_bulk和main step: run.刚开始上手的时候就直奔run过程去了,所以在看他param.json例子里面的参数时一直在疑惑他的init ...

  6. 《视觉slam十四讲》ch4学习笔记——sophus库使用的问题及解决方法

    在看完<视觉slam十四讲>第四章李群和李代数后,准备调试相应的代码,但是出现了各种各样的问题,但最后还是万幸,成功完成了调试.在这里记录一下期间遇到的问题和相应的解决方法以及最后的感想. ...

  7. STM32F10x TIM1 CH3/CH4 的重映射PWM输出

    事情经过 最近做项目,由于板子的布局以及芯片资源紧缺的原因,不得不想办法把偏僻的PE口的 高级定时器TIM1的PWM利用起来,我做的是TIM1_CH3.TIM1_CH4 的 重映射 两路PWM输出(P ...

  8. Google Earth Engine ——(COPERNICUS/S5P/OFFL/L3系列——CH4/CO/CLOUD/CO/HCHO/NO2/O3/SO2)数据集

    数据目录合集: COPERNICUS_S5P_OFFL_L3_CH4 COPERNICUS_S5P_OFFL_L3_CLOUD COPERNICUS_S5P_OFFL_L3_CO COPERNICUS ...

  9. 河工大氮化硼材料研究中心北航集成计算材料科学中心,CEJ:打破MXenes电催化CO2还原中的线性关系以实现高效制CH4

    背景介绍 在常温常压下,电催化CO2还原(CO2RR)为有价值的化学品和燃料倍受人们的关注,被认为是缓解温室效应和能源短缺.实现碳中和的一种有效的方法.然而,催化CO2还原面临着诸多挑战:第一,线性C ...

最新文章

  1. PLsql连接centos7上的Oracle的连接超时的解决方发
  2. 算法题题目集合一,欢迎评论留言
  3. 走出囚徒困境的方法_囚徒困境的一种计算方法
  4. 双击treeView的节点时使不展开不折叠子节点
  5. 如何自己去写一个鼠标驱动_为什么要用哈密顿采样器(Hamiltonian Monte Carlo),以及如何自己写一个...
  6. 零窗口探测怎么抓包_Linux服务器下的HTTP抓包分析
  7. MongoDB 查询 (转) 仅限于C++开发
  8. socket read time out解决方法_深入浅出讲解:php的socket通信
  9. Entity Framework表拆分
  10. Element-Ui 双重el-tabs组件选中第二层时,刷新导致第一层选中样式丢失问题以及解决方法
  11. itunes下载的app在哪里及如何查看iTunes下载的软件
  12. LiveData vs EventBus?不,他们其实可以一起
  13. java json去掉反斜杠,如何去掉Json字符串中反斜杠
  14. API NetUserChangePassword Did yer sd1
  15. Python三国华容道程序-广度优先
  16. HashMap扩容为什么是2的倍数
  17. C语言数据类型及其大小计算
  18. Couldn't find include 'Atk-1.0.gir'
  19. virtualbox虚拟机内安装增强功能未能加载虚拟光盘
  20. iOS AppStore上架流程图文详解

热门文章

  1. 和push的区别_RocketMQ的消息订阅push和pull的区别
  2. golang 类型说明
  3. ant编译无法依赖rt.jar
  4. java连接Oracle数据库
  5. mysql环境变量的配置
  6. leetcode 144. Binary Tree Preorder Traversal ----- java
  7. Android中使用logwrapper来重定向应用程序的标准输出
  8. 自己写一个java.lang.reflect.Proxy代理的实现
  9. (4)ISE14.7 ChipScope使用流程(FPGA不积跬步101)
  10. (72)Verilog HDL系统函数和任务:$display