PCA(基础知识)
参考:http://blog.csdn.net/wangjian1204/article/details/50642732
参考:https://www.zhihu.com/question/38319536
对角化的概念:
已知n x n的矩阵M,如果对于i≠j,Mij=0,则该矩阵为对角矩阵,如果存在一个矩阵A,使得A-1MA的结果为对角矩阵,则称矩阵A将矩阵M对角化。对一个矩阵来说,不一定存在将其对角化的矩阵,但是对于任意一个n x n的矩阵如果存在n个线性不相关的特征向量,则该矩阵可以被对角化。
定理:
令M为n x n矩阵,其特征值为λ1,λ2,...,λn,特征向量为V1,V2,...,Vn,形成线性无关组合,以每个特征向量为列构成矩阵A=[V1,V2,...,Vn],矩阵A可以将矩阵M对角化,乘积矩阵 A-1MA的主对角元素是矩阵M的特征值:

反之,如果存在可逆矩阵A,使得A-1MA为对角矩阵,则矩阵A的列等于矩阵M的特征向量,A-1MA的主对角元素为矩阵M的特征值,即M=AΛA-1。
若M为实对称矩阵,那么M也可以表示为:
,其中Λ为特征值组成的特征矩阵。因为A为正交矩阵,所以AT=A-1
PCA
也称为主成分分析,用于降维和去噪,PCA选取包含信息量最多的方向对数据进行投影,其投影方向可以从最大化方差和最小化投影误差来理解。
假设有n x d矩阵X,每一行是一个d维矩阵xi,寻找投影方向vj以最大化投影误差:
该式子同样可以表示成:
,左式的X为样本矩阵
上面第一个式子的右边的推导是基于X已经经过0均值化处理,即
为0,vj是数据的投影方向
从式子可以发现,xivj为样本点xi在映射维度的坐标,目的就是为了使得投影方差最大化,也即当
为0时,求
最大化。
那么d x d协方差矩阵C满足
,由于C是实对称矩阵,可以进行对角化处理:

d x d正交矩阵V的每一列是特征向量,d x d矩阵L对角线上的每一个元素是特征值,且特征值按递减顺序排列,将C代回最上式子
:

其中λj是特征向量vj对应的特征值,可以发现当投影方向是C的最大特征值对应的特征向量时,投影方向上数据的方差最大,所以用PCA进行降维时选取最大的n个特征值对应的特征向量作为投影方向:XVk,Vk是最大的k个特征值对应的特征向量矩阵,也就是我们所需要的投影矩阵。
PCA过程与SVD分解的联系在于:
若对X作奇异值分解(SVD):

对角矩阵S对角线上的元素是奇异值,U和V是正交矩阵:
,把X的奇异值分解代入协方差矩阵:

d x d正交矩阵V的每一列是特征向量,特征值和奇异值之间存在对应关系:
,对X主成份方向进行投影:

Uk包含U的前k列,Sk包含S左上角的k x k个元素
区别和联系
SVD可以获取另一个方向上的主成分,而PCA只能获取单个方向上的主成分:

通过SVD可以得到和PCA相同的结果,但是通常SVD比直接使用PCA更加稳定,因为PCA需要计算XTX的值。
PCA(基础知识)的更多相关文章
- matlab pca基础知识
PCA的一些基本资料 最近因为最人脸表情识别,提取的gabor特征太多了,所以需要用PCA进行对提取的特征进行降维. 本来最早的时候我没有打算对提取的gabor特征进行降维,但是如果一个图像时64*6 ...
- .NET面试题系列[1] - .NET框架基础知识(1)
很明显,CLS是CTS的一个子集,而且是最小的子集. - 张子阳 .NET框架基础知识(1) 参考资料: http://www.tracefact.net/CLR-and-Framework/DotN ...
- RabbitMQ基础知识
RabbitMQ基础知识 一.背景 RabbitMQ是一个由erlang开发的AMQP(Advanced Message Queue )的开源实现.AMQP 的出现其实也是应了广大人民群众的需求,虽然 ...
- Java基础知识(壹)
写在前面的话 这篇博客,是很早之前自己的学习Java基础知识的,所记录的内容,仅仅是当时学习的一个总结随笔.现在分享出来,希望能帮助大家,如有不足的,希望大家支出. 后续会继续分享基础知识手记.希望能 ...
- selenium自动化基础知识
什么是自动化测试? 自动化测试分为:功能自动化和性能自动化 功能自动化即使用计算机通过编码的方式来替代手工测试,完成一些重复性比较高的测试,解放测试人员的测试压力.同时,如果系统有不份模块更改后,只要 ...
- [SQL] SQL 基础知识梳理(一)- 数据库与 SQL
SQL 基础知识梳理(一)- 数据库与 SQL [博主]反骨仔 [原文地址]http://www.cnblogs.com/liqingwen/p/5902856.html 目录 What's 数据库 ...
- [SQL] SQL 基础知识梳理(二) - 查询基础
SQL 基础知识梳理(二) - 查询基础 [博主]反骨仔 [原文]http://www.cnblogs.com/liqingwen/p/5904824.html 序 这是<SQL 基础知识梳理( ...
- [SQL] SQL 基础知识梳理(三) - 聚合和排序
SQL 基础知识梳理(三) - 聚合和排序 [博主]反骨仔 [原文]http://www.cnblogs.com/liqingwen/p/5926689.html 序 这是<SQL 基础知识梳理 ...
- [SQL] SQL 基础知识梳理(四) - 数据更新
SQL 基础知识梳理(四) - 数据更新 [博主]反骨仔 [原文]http://www.cnblogs.com/liqingwen/p/5929786.html 序 这是<SQL 基础知识梳理( ...
随机推荐
- Retrofit RestAdapter 配置说明
RestAdapter.Builder builder = new RestAdapter.Builder(); builder.setEndpoint(ip地址 ...
- python使用__new__创建一个单例模式(单例对象)
#单例模式:使一个类只产生一个对象.他们的id地址都指向同一个内存地址 第一步:理解谁创建了对象 # 单例模式# 首先明白,我们在创建一个类的对象的时候,其实是调用的这个类的父类,即继承object, ...
- MVC 源码系列之控制器激活(二)之GetControllerType和GetcontrollerInstance
GetControllerType和GetcontrollerInstance GetControllerType protected internal virtual Type GetControl ...
- Java课堂笔记(三):抽象类和接口
在面向对象一文中,我们说了多态的一个功能是将“做什么”和“怎么做”分离开来,所采用的方法是将不同的具体实现放在不同的子类中,然后向接口中传入一个父类对象的引用.而本篇博客要说的内容则为接口(此处&qu ...
- 应用安全-CTF-格式串漏洞
主要影响c库中print家族函数 - > printf,sprintf,fprintf等 利用: SIP请求URI中格式串
- MethodBase.GetCurrentMethod 方法
如果当前正在执行的方法定义泛型类型上MethodInfo返回GetCurrentMethod通过泛型类型定义 (即,MethodInfo.ContainsGenericParameters返回true ...
- Java相关面试题总结+答案(七)
[Hibernate] 113. 为什么要使用 hibernate? hibernate 是对 jdbc 的封装,大大简化了数据访问层的繁琐的重复性代码. hibernate 是一个优秀的 ORM 实 ...
- CentOS7 iptables安装及操作
添加规则时的考量点: (1)要实现哪种功能:判断添加在哪张表上: (2)报文流经的路径:判断添加在哪个链上: 链上规则的次序: (1)同类规则(访问同一应用),匹配范围小的放上面: (2)不同类规则( ...
- Java中的容器(集合)之ArrayList源码解析
1.ArrayList源码解析 源码解析: 如下源码来自JDK8(如需查看ArrayList扩容源码解析请跳转至<Java中的容器(集合)>第十条):. package java.util ...
- 中标麒麟系统安装rpm文件
打开终端,获得su权限. cd到rpm所在文件夹,输入指令,rpm -ivh rpm的名称