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 基础知识梳理( ...
随机推荐
- mongotemplate 简单使用
怎么说呢,工作需要,不可能给你慢慢学的时间,一切以先解决当前jira为前提, mondb 安装不说了网上一搜就有,推荐图形管理界面 robo3t 比较直观 1.多条件查询这个比较简单 有两种方法 1C ...
- VUE(vue对象的简单属性)
一:全局过滤器和局部过滤器 ps:不管是局部过滤器还是全局过滤器,一定都要有renturn 返回 <!DOCTYPE html> <html lang="en"& ...
- 阶段1 语言基础+高级_1-3-Java语言高级_06-File类与IO流_07 缓冲流_7_练习_对文本的内容进行排序
出师表,按照12345678进行排序 使用Map集合进行排序 把内容都写到一行里面去了
- 阶段1 语言基础+高级_1-3-Java语言高级_06-File类与IO流_05 IO字符流_8_使用try_catch_finally处理流中的异常
变量没有初始化的赋值 变量可能赋值会失败.设置fw为null.close报错 把close也用try catch捕获异常 修改写入w盘.实际盘符没有这个 上面异常是这里打印的 继续优化代码
- 发邮件--yagmail模块
准备工作:1.在你的邮箱设置里面打开smtp服务(若有的话)2.开启邮箱授权码,记住这个授权码(连接邮箱服务时用) 1.安装yagmail模块pip install yagmail2.举例:impor ...
- delphi开发实例:保存字体设置的方法
http://blog.csdn.net/delphi308/article/details/9906147 delphi开发实例:保存字体设置的方法 2013-08-11 22:37 446人阅读 ...
- java通过HtmlUnit工具和J4L实现模拟带验证码登录
1.HtmlUnit 1.1介绍 HtmlUnit是一个用java编写的无界面浏览器,建模html文档,通过API调用页面,填充表单,点击链接等等.如同正常浏览器一样操作.典型应用于测试以及从网页抓取 ...
- Vue.js 组件中data的使用
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- 一些基础的ES6 语法
<script> window.onload = function () { //---------------------------let----------------------- ...
- 多线程06-Lock
; i < ; i++) { c.Increment(); c.Decrement(); ...