在灵巧手与假手理论中,为了研究人手的运动协同关系,需要采集各个关节的运动学量或者多个采集点的肌电信号,然而由于人手关节数目或者EMG采集点数量较多,加上多次采样,导致需要过多的数据需要处理。然而事实上,这些数据存在相关性,换一种说法就是人手的某一运动被这些数据重复表达了,为了简化数据维度并尽可能的表征原始数据的特征,引入我们今天的主题-主成分分析(PCA)

 

Ⅰ. 主成分分析(PCA)

主成分分析是一种处理过多维度数据的线性方法,该方法采用组合特征的方法来降维。从本质上来讲就是把高维的数据投影到低维空间中。这里又引出另一种线性分析方法-多重判别分析(MDA),其与主成分分析均是在最小均方意义下的处理方法,区别在于前者目的是尽量区别开来各类数据,而主成分分析则是寻找最能代表原始数据的方法。


 Ⅱ. 推导

首先考虑将n个d维的样本(X1,X2,...Xn)投影到1维的情况。为了方便后面的推导,定义一个d维的向量X0,为了使得X0能够最好的代表这n个样本,我们用均方误差来衡量这个"最好"的程度,定义平方误差准则函数J0(X0)如下:

$$ J_0(X_0)=\sum_{k=1}^n||X_0-X_k||^2 \tag{1} $$

易证明得,X0等于样本均值m时平方误差J0(X0)达到最小值,其中样本均值m为:

$$ m=\frac{1}{n}\sum_{k=1}^nX_k \tag{2} $$

证明如下:

$$ J_0(X_0)=\sum_{k=1}^n||(X_0-m)-(X_k-m)||^2=\sum_{k=1}^n||X_0-m||^2-2(X_0-m)^T\sum_{k=1}^n(X_k-m)+\sum_{k=1}^n||X_k-m||^2 \tag{3} $$

上式中第二项为0,第三项是与X0无关的常数,故X0等于m时,平方误差最小,得证。

得到样本均值后,样本均值可以理解为样本数据集的零维表达,为了得到能够表达全部数据的一维数据(一个数),我们定义一个单位向量e,该向量位于一条通过样本均值点的直线上,其它数据点X1,X2,...Xn可以表示为:

$$ X=m+ae \tag{4} $$

上式(4)中,a为向量对应与基于基底e的系数,被成为主成分(principal component),由此,对于每一个原本为d维的样本点,在确定了样本均值m和基底e后,我们都可以用一个一维的数据a表示我们新的样本点,如Xk对应于m+ake,要注意的是两者并不相等,后文中我们会通过确定一个最优的基底e使得两者的距离和最小。经过以上步骤,我们就把n个d维的样本点X1,X2,...Xn降维成了n个1维的数据a1,a2,...an,这本质上就是重新确定了一个数量更小的坐标轴来确定空间上的点,a表示每个数据点在该基底上的投影大小,只不过我们这个例子只有一个基底,即d维降维成1维。

我们需要确定最优的ak和基底e的方向使得式(5)中平方误差准则函数最小,注意到这是关于ak(k=1,2...n)和基底e的函数:

$$ J_1(a_1,a_2,...a_n,e)=\sum_{k=1}^n||(m+a_ke)-X_k||^2=\sum_{k=1}^n(a_k^2||e||^2-2a_ke^T(X_k-m))+\sum_{k=1}^n||X_k-m||^2 \tag{5} $$

首先关于式(5)对ak求偏导,并令结果为0,得到:

$$ \frac{\partial J_1}{\partial a_k}=2a_k||e||^2-2e^T(X_k-m)=0 \tag{6} $$

由式(6)可得最优的ak为:

$$ a_k=\frac{e^T(X_k-m)}{||e||^2}=e^T(X_k-m) \tag{7} $$

几何上的意义为ak可由向量(Xk-m)向通过样本均值的直线e做垂直投影得到。在得到ak后,我们再来考虑如何选择基底e使得平方误差准则函数最小,同理,我们关于式(5)对e求偏导令结果为0即可,不过在此之前需要对式(5)做一些处理,将ak式(7)代入式(5)中得到:

$$ J_1(e)=-\sum_{k=1}^ne^T(X_k-m)(X_k-m)^Te+\sum_{k=1}^n||X_k-m||^2=-e^TSe+\sum_{k=1}^n||X_k-m||^2 \tag{8} $$

上式中称S为离散度矩阵或者散布矩阵,其形式为:

$$ S=\sum_{k=1}^n(X_k-m)(X_k-m)^T \tag{9} $$

由式(8)显然我们可以得出,为使得J1(e)最小,需要使eTSe最大,我们这里使用拉格朗日乘子法来最大化eTSe,约束条件为等式||e||=1,用λ来表示拉格朗日乘子有:

$$ u=e^TSe-\lambda(e^Te-1) \tag{10} $$

对式(10)对e求偏导并令其为0我们可以得到:

$$ Se=\lambda e \tag{11} $$

由式(11)我们可以很明显的看到,e的解为离散度矩阵的特征向量,λ为与之对应的特征值,同时可以得出eTSe=eTλe=λeTe=λ,由此,为了最大化eTSe,只需找出该离散度矩阵S的最大的特征值,再得出相应的特征向量作为基底e即可。

至此,d维降1维的问题已经得到解决,我们再把问题扩展到d维降d'维的问题,即求解下式(12)中的a和e:

$$ X=m+\sum_{i=1}^{d'}a_ie_i \tag{12} $$

这里不再给出证明,结论如下:最优的基底e1,e2,...ed'分别为离散度矩阵S对应的d'个最大特征值所对应的特征向量,另外由于离散度矩阵S为实对称矩阵,所以各个基底互相正交,而主成分aki同理可以得出是样本向量在各个基底上的垂直投影。


 Ⅲ. 计算步骤总结

我们可以对比看一看维基百科上关于计算PCA的步骤,如下图,与我上文中说到的步骤不同之处在于wikipedia上的方法计算的是协方差矩阵,如果仔细算一算就会发现上文中讲到的离散度矩阵或者散布矩阵事实上是该协方差矩阵的(n-1)倍。其它步骤原理是一致的:

多维数据处理之主成分分析(PCA)的更多相关文章

  1. 05-03 主成分分析(PCA)

    目录 主成分分析(PCA) 一.维数灾难和降维 二.主成分分析学习目标 三.主成分分析详解 3.1 主成分分析两个条件 3.2 基于最近重构性推导PCA 3.2.1 主成分分析目标函数 3.2.2 主 ...

  2. 深度学习入门教程UFLDL学习实验笔记三:主成分分析PCA与白化whitening

    主成分分析与白化是在做深度学习训练时最常见的两种预处理的方法,主成分分析是一种我们用的很多的降维的一种手段,通过PCA降维,我们能够有效的降低数据的维度,加快运算速度.而白化就是为了使得每个特征能有同 ...

  3. 线性判别分析(LDA), 主成分分析(PCA)及其推导【转】

    前言: 如果学习分类算法,最好从线性的入手,线性分类器最简单的就是LDA,它可以看做是简化版的SVM,如果想理解SVM这种分类器,那理解LDA就是很有必要的了. 谈到LDA,就不得不谈谈PCA,PCA ...

  4. 降维(一)----说说主成分分析(PCA)的源头

    降维(一)----说说主成分分析(PCA)的源头 降维系列: 降维(一)----说说主成分分析(PCA)的源头 降维(二)----Laplacian Eigenmaps --------------- ...

  5. 主成分分析PCA(转载)

    主成分分析PCA 降维的必要性 1.多重共线性--预测变量之间相互关联.多重共线性会导致解空间的不稳定,从而可能导致结果的不连贯. 2.高维空间本身具有稀疏性.一维正态分布有68%的值落于正负标准差之 ...

  6. 机器学习 —— 基础整理(四)特征提取之线性方法:主成分分析PCA、独立成分分析ICA、线性判别分析LDA

    本文简单整理了以下内容: (一)维数灾难 (二)特征提取--线性方法 1. 主成分分析PCA 2. 独立成分分析ICA 3. 线性判别分析LDA (一)维数灾难(Curse of dimensiona ...

  7. 一步步教你轻松学主成分分析PCA降维算法

    一步步教你轻松学主成分分析PCA降维算法 (白宁超 2018年10月22日10:14:18) 摘要:主成分分析(英语:Principal components analysis,PCA)是一种分析.简 ...

  8. 机器学习课程-第8周-降维(Dimensionality Reduction)—主成分分析(PCA)

    1. 动机一:数据压缩 第二种类型的 无监督学习问题,称为 降维.有几个不同的的原因使你可能想要做降维.一是数据压缩,数据压缩不仅允许我们压缩数据,因而使用较少的计算机内存或磁盘空间,但它也让我们加快 ...

  9. 主成分分析(PCA)原理及推导

    原文:http://blog.csdn.net/zhongkejingwang/article/details/42264479 什么是PCA? 在数据挖掘或者图像处理等领域经常会用到主成分分析,这样 ...

随机推荐

  1. Vuex理解与使用

    1.Vuex是什么 Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式,用于管理页面的数据状态.提供统一数据操作的生态系统.在组件中可以任意获取仓库中的数据.和Vuex类似的还有redux ...

  2. Python flask-restful框架讲解

    Restful 是 Flask 的扩展,增加了对快速构建 REST api 的支持.它是一个轻量级的概念,与您现有的 ORM/librarie 一起工作.Restful 鼓励最小化设置的最佳实践.如果 ...

  3. 确保某个BeanDefinitionRegistryPostProcessor Bean被最后执行的几种实现方式

    目录 一.事出有因 二.解决方案困境 三.柳暗花明,终级解决方案 第一种实现方案 第二种实现方案 第三种实现方案 四.引发的思考 一.事出有因 ​ 最近有一个场景,因同一个项目中不同JAR包依赖同一个 ...

  4. 【Git】敏感信息保护

    保护Git仓库敏感信息 代码中无可避免有一些敏感信息,包含但不限于,数据库信息,密钥,账号信息等等.通常我们会把这些信息放在配置文件,这些信息若泄露会造成安全问题. 以前我们做法,是把配置文件通过.g ...

  5. FHRP - 网关冗余协议

    通常情况下,在终端设备进入网络前,都会有一个 Router 充当网络,作为第一跳的网络地址.但假设路由器发生故障,此时终端设备就无法再接入互联网. 为了防止这样的问题,一般会再加入一台路由器充当备份. ...

  6. 高精地图技术专栏 | 基于空间连续性的异常3D点云修复技术

    1.背景 1.1 高精资料采集 高精采集车是集成了测绘激光.高性能惯导.高分辨率相机等传感器为一体的移动测绘系统.高德高精团队经过多年深耕打造的采集车,具有精度高.速度快.数据产生周期短.自动化程度高 ...

  7. ArrayList这篇就够了

    提起ArrayList,相信很多小伙伴都用过,而且还不少用.但在几年之前,我在一场面试中,面试官要求说出ArrayList的扩容机制.很显然,那个时候的我并没有关注这些,从而错过了一次机会.不过好在我 ...

  8. DNS 缓存中毒--Kaminsky 攻击复现

    0x00 搭建实验环境 使用3台Ubuntu 16.04虚拟机,可到下面的参考链接下载 攻击的服务是BIND9,由于条件限制,这里使用本地的一台虚拟机当作远程DNS解析器,关闭了DNSSEC服务,其中 ...

  9. oCPC中转化率模型与校准

    翻看日历时间已经来到了2021年,也是共同战役的第二年,许久没有更新文章了,在与懒惰进行过几次斗争都失利之后,今天拿出打工人最后的倔强,终于收获了一场胜利.闲话不多说,今天咱们重点聊聊oCPC中转化率 ...

  10. 源码级深挖AQS队列同步器

    我们知道,在java中提供了两类锁的实现,一种是在jvm层级上实现的synchrinized隐式锁,另一类是jdk在代码层级实现的,juc包下的Lock显示锁,而提到Lock就不得不提一下它的核心队列 ...