一、一些概念

线性相关:其中一个向量可以由其他向量线性表出。

线性无关:其中一个向量不可以由其他向量线性表出,或者另一种说法是找不到一个X不等于0,能够使得AX=0。如果对于一个矩阵A来说它的列是线性无关的,则AX=0,只有0解,此时矩阵A可逆。

秩:线性无关向量个数。

基:

特征向量:向量X经过矩阵A旋转后,与原来的X共线,即为特征值,表示向量的伸缩。如果把矩阵看成进行线性变化的矩阵(旋转,拉伸),那么特征向量就是这样一种向量,它经过这种特定的变换后保持方向不变,只是进行长度上的伸缩而已。反过来,特征向量组成的正交底恰恰也是一种变换,将矩阵从一个空间映射到另一个空间。

特征分解:

如果矩阵A是对称矩阵,那会得到一个更强的特征分解,A可实现U对角化,即正交对角化。特征向量U正交:

二、PCA的本质(协方差矩阵对角化,对称矩阵特征分解)

数据量太大的时候,需要降维。怎么降呢?需要保证维度减少,但同时信息量保留的最多,转换成数学术语就是每个行向量的方差尽可能大(方差代表信息),行向量间的协方差为0(让行与行之间尽量不相关,信息尽量转移到某几个单独的变量上,从而实现降维)。下面以矩阵X为例进行讲解,假设拿到的数据是矩阵X ,

它的协方差矩阵则为(标准化数据以后):

有两步需要做1.现在希望的是降维后的协方差矩阵对角元尽可能大(信息量足够多),非对角元尽可能为0(行与行之间无关,如果相关说明没有降维成功),即变成一个对角矩阵。因此我们需要对X做一个线性变换,使得做线性变换后的矩阵的协方差矩阵变成对角矩阵(相当于变化新的坐标)。而怎么线性变换呢?具体如下图,使得Q=Ut时,Cy就会变成一个对角矩阵,这时候需要用到前面的特征值分解,因为Cx是对称矩阵,所以可以进行特征分解:

2.Cy变成对角矩阵后,我们如何降维呢?此时需要将对角元上的特征值进行排序,此时可以把特征值小的那部分对应的信息丢掉,此时就达到了降维的目的。特征值此时代表的就是信息量的大小。具体如下图中的例子:

Python中用到的代码:

http://scikit-learn.org/stable/modules/generated/sklearn.decomposition.PCA.html

pca就是寻找协方差矩阵的特征值,特征向量,找到方向最大的变异方向(特征向量),再找到跟它正交的,如此下去找到n个主成分。需要先标准化,因为是通过最大化线性组合方差得到,所以对变量的测量尺度敏感。

三、SVD分解(奇异矩阵分解)

前面讲到的对称矩阵的分解才能实现正交对角化(UT=U-),而对称矩阵是建立在Rn*n的空间,而对于任意秩为R的矩阵A属于Rm*n的空间时,能不能找到类似的分解呢?答案是可以滴,这就是SVD分解了, 为奇异值,且大于0。

SVD与特征分解有没有什么关系呢?

奇异值就是A*AT非零的特征值开根号。在PCA应用中,协方差矩阵是正定矩阵,而正定矩阵(一定是对称矩阵)的奇异分解实质等价于特征分解。

SVD同样可以进行降维。

PCA本质和SVD的更多相关文章

  1. 机器学习实战基础(二十三):sklearn中的降维算法PCA和SVD(四) PCA与SVD 之 PCA中的SVD

    PCA中的SVD 1 PCA中的SVD哪里来? 细心的小伙伴可能注意到了,svd_solver是奇异值分解器的意思,为什么PCA算法下面会有有关奇异值分解的参数?不是两种算法么?我们之前曾经提到过,P ...

  2. PCA算法和SVD

    如果矩阵对某一个向量或某些向量只发生伸缩变换,不对这些向量产生旋转的效果,那么这些向量就称为这个矩阵的特征向量,伸缩的比例就是特征值.这里可以将特征值为负,特征向量旋转180度,也可看成方向不变,伸缩 ...

  3. 主成分分析(PCA)与SVD奇异值分解

      主要参考:https://www.zhihu.com/question/38417101/answer/94338598 http://blog.jobbole.com/88208/ 先说下PCA ...

  4. K-L变换和 主成分分析PCA

    一.K-L变换 说PCA的话,必须先介绍一下K-L变换了. K-L变换是Karhunen-Loeve变换的简称,是一种特殊的正交变换.它是建立在统计特性基础上的一种变换,有的文献也称其为霍特林(Hot ...

  5. 特征向量、特征值以及降维方法(PCA、SVD、LDA)

    一.特征向量/特征值 Av = λv 如果把矩阵看作是一个运动,运动的方向叫做特征向量,运动的速度叫做特征值.对于上式,v为A矩阵的特征向量,λ为A矩阵的特征值. 假设:v不是A的速度(方向) 结果如 ...

  6. PCA, SVD以及代码示例

    本文是对PCA和SVD学习的整理笔记,为了避免很多重复内容的工作,我会在介绍概念的时候引用其他童鞋的工作和内容,具体来源我会标记在参考资料中. 一.PCA (Principle component a ...

  7. PCA算法详解——本质上就是投影后使得数据尽可能分散(方差最大),PCA可以被定义为数据在低维线性空间上的正交投影,这个线性空间被称为主⼦空间(principal subspace),使得投影数据的⽅差被最⼤化(Hotelling, 1933),即最大方差理论。

    PCA PCA(Principal Component Analysis,主成分分析)是一种常用的数据分析方法.PCA通过线性变换将原始数据变换为一组各维度线性无关的表示,可用于提取数据的主要特征分量 ...

  8. PCA降维的原理、方法、以及python实现。

    PCA(主成分分析法) 1. PCA(最大化方差定义或者最小化投影误差定义)是一种无监督算法,也就是我们不需要标签也能对数据做降维,这就使得其应用范围更加广泛了.那么PCA的核心思想是什么呢? 例如D ...

  9. 数据降维技术(1)—PCA的数据原理

    PCA(Principal Component Analysis)是一种常用的数据分析方法.PCA通过线性变换将原始数据变换为一组各维度线性无关的表示,可用于提取数据的主要特征分量,常用于高维数据的降 ...

随机推荐

  1. 洛谷P1280 尼克的任务[DP]

    题目描述 尼克每天上班之前都连接上英特网,接收他的上司发来的邮件,这些邮件包含了尼克主管的部门当天要完成的全部任务,每个任务由一个开始时刻与一个持续时间构成. 尼克的一个工作日为N分钟,从第一分钟开始 ...

  2. ajax实现下拉菜单无刷新加载更多

    $(function() { var page = 1; var discount = $('#discount'); var innerHeight = window.innerHeight; va ...

  3. C#.NET 大型企业信息化系统集成快速开发平台 4.2 版本 - 几十套业务系统集中统一授权管理实现经验分享

    由于这几年互联网电商的快速发展,快递公司也进入了快速发展的绝好快速成长期.随着社会的强劲需求公司的业绩年年攀新高.快速发展的公司都需要有强大的IT信息系统,硬件设备基本上款到了货也可以到了,但是软件系 ...

  4. phabricator在mac上的搭建

    环境:OS X Yosemite 10.10.5 前提:phabricator主要是由php写的,而且是以website方式运行的,所以mac上要先安装好 php + nginx(或apache) + ...

  5. Dell xps 13 9350待机时总是关机的处理方法

    现象: 年初买的dell xps13 9350,最近可能是由于win10做了一些更新,每次睡眠就自动关机了,重启很多次,修改电源选项都没用, 原因分析: 在网上搜了一下,有人发现xps15 9350也 ...

  6. LeetCode:Subsets I II

    求集合的所有子集问题 LeetCode:Subsets Given a set of distinct integers, S, return all possible subsets. Note: ...

  7. 【原】Learning Spark (Python版) 学习笔记(二)----键值对、数据读取与保存、共享特性

    本来应该上周更新的,结果碰上五一,懒癌发作,就推迟了 = =.以后还是要按时完成任务.废话不多说,第四章-第六章主要讲了三个内容:键值对.数据读取与保存与Spark的两个共享特性(累加器和广播变量). ...

  8. 显式意图启动一个Activity

    显式意图主要是通过指定包名和类名开启一个组件,主要用于安全性要求高的,且不想被其他应用开启,可以不配置应用过滤器. 1.创建意图对象 Intent intent = new Intent(); 2.指 ...

  9. mysql-批量修改表字段中的某一部分内容

    MySQL批量替换指定字段字符串语句(1)updat 表名 set 字段名=replac(字段名,'原来的内容','替换后的内容') 举一个例子,就是我实际操作的时候的命令: update cpg14 ...

  10. PHP处理0e开头md5哈希字符串缺陷/bug

    PHP在处理哈希字符串时,会利用”!=”或”==”来对哈希值进行比较,它把每一个以”0E”开头的哈希值都解释为0,所以如果两个不同的密码经过哈希以后,其哈希值都是以”0E”开头的,那么PHP将会认为他 ...