在灵巧手与假手理论中,为了研究人手的运动协同关系,需要采集各个关节的运动学量或者多个采集点的肌电信号,然而由于人手关节数目或者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. Java(JDK/Tomcat/Maven)运行环境配置及工具(idea/eclipse)安装

    Java (计算机编程语言) Java是一门面向对象编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承.指针等概念,因此Java语言具有功能强大和简单易用两个特征. Java语 ...

  2. Kubernetes-6.Service

    docker version:20.10.2 kubernetes version:1.20.1 本文概述Kubernetes Service的基本原理和使用. 服务 Service是将运行在一组Po ...

  3. 后端程序员之路 16、信息熵 、决策树、ID3

    信息论的熵 - guisu,程序人生. 逆水行舟,不进则退. - 博客频道 - CSDN.NEThttp://blog.csdn.net/hguisu/article/details/27305435 ...

  4. HDOJ-1560(迭代加深搜索问题)

    DNA sequence HDOJ-1560 *本题是迭代加深搜索问题,主要是要理解题目,题目中一定是有解的,所以为了找最小的解,可以从小的搜索深度开始逐渐增加. *这里有个技巧就是,如果本次指定开始 ...

  5. LNMP配置——PHP安装

    一.下载 #cd /usr/local/src //软件包都放在这里方便管理 #wget http://cn2.php.net/distributions/php-5.6.30.tar.gz 二.解压 ...

  6. HDU_6693 Valentine's Day 【概率问题】

    一.题目 Valentine's Day 二.分析 假设$ s_0 $代表不开心的概率,$ s_1 $代表开心一次的概率. 那么随便取一个物品,那么它的开心概率为$ p _i $,可以推导加入之后使女 ...

  7. Mysql之锁机制

    全局锁 全局锁就是对整个数据库实例加锁.MySQL 提供了一个加全局读锁的方法FTWRL Flush tables with read lock 全局锁的典型使用场景是,做全库逻辑备份,也就是把整库每 ...

  8. Java程序中的代理作用和应用场景及实现

    body { margin: 0 auto; font: 13px / 1 Helvetica, Arial, sans-serif; color: rgba(68, 68, 68, 1); padd ...

  9. Java中的面向切面编程(AOP)

    一.什么是AOP? Aspect Oriented Programming ,即面向切面编程. AOP是对面向对象编程的一个补充. 它的目的是将复杂的需求分解为不同的切面,将散布在系统中的公共功能集中 ...

  10. 对于api接口的爬虫,通常的解决方法

    对于api接口的爬虫,通常的解决方法: 依靠爬虫功能的IP库 SDK 源站用不同的状态码进行打标,用户登录账号,登录成功返回200,登录失败返回其他状态码.