【模式识别与机器学习】——PCA主成分分析
基本思想
其基本思想就是设法提取数据的主成分(或者说是主要信息),然后摒弃冗余信息(或次要信息),从而达到压缩的目的。本文将从更深的层次上讨论PCA的原理,以及Kernel化的PCA。
引子
首先我们来考察一下,这里的信息冗余是如何体现的。如下图所示,我们有一组二维数据点,从图上不难发现这组数据的两个维度之间具有很高的相关性。因为这种相关性,我们就可以认为其实有一个维度是冗余的,因为当已知其中一个维度时,便可以据此大致推断出另外一个维度的情况。

为了剔除信息冗余,我们设想把这些数据转换到另外一个坐标系下(或者说是把原坐标系进行旋转),例如像下图所示情况,当然这里通过平移设法把原数据的均值变成了零。

下图是经过坐标系旋转之后的数据点分布情况。你可以看出,原数据点的两个维度之间的相关性已经被大大削弱(就这个例子而言几乎已经被彻底抹消)。

同时你也会发现在新坐标系中,横轴这个维度x相比于纵轴那个维度y所表现出来的重要性更高,因为从横轴这个维度上更大程度地反应出了数据分布的特点。也就是说,本来需要用两个维度来描述的数据,现在也能够在很大程度地保留数据分布特点的情况下通过一个维度来表达。如果我们仅保留x这个维度,而舍弃y那个维度,其实就起到了数据压缩的效果。而且,舍弃y这个维度之后,我们再把数据集恢复到原坐标系上,你会发现关于数据分布情况的信息确实在很大程度上得以保留了(如下图所示)。

正式推导
上面所描述的也就是PCA要达到的目的。
但是,如何用数学的语言来描述这个目的呢?
或者说,我们要找到一个变换使得坐标系旋转的效果能够实现削弱相关性或将主要信息集中在少数几个维度上这一任务,应该如何确定所需之变换(或者坐标系旋转的角度)呢?
我们还是来看一个例子,假设现在有如下图所示的一些数据,它们形成了一个椭圆形状的点阵,那么这个椭圆有一个长轴和一个短轴。在短轴方向上,数据变化很少;相反,长轴的方向数据分散得更开,对数据点分布情况的解释力也就更强。

那么数学上如何定义数据“分散得更开”这一概念呢?没错,这里就需要用到方差这个概念。如下图所示,现在有5个点,假设有两个坐标轴w和v,它们的原点都位于O。然后,我们分别把这5个点向w和v做投影,投影后的点再计算相对于原点的方差,可知在v轴上的方差要大于w轴上的方差,所以如果把原坐标轴旋转到v轴的方向上,相比于旋转到w轴的方向上,数据点会分散得更开!


(动图链接:https://blog.csdn.net/baimafujinji/article/details/79376378)
假设训练样本的平均值为零。PCA的目标是在空间中找到一组包含最大方差量的向量。
上图中的一点 xj 向 v 轴做投影,所得之投影向量为
其中θ是向量Oxj与v的夹角。如果这里的向量v是单位向量,则有
这同时表明其系数其实就是内积
所有像素xj在该归一化方向v上的投影是

预测的方差是

其中,C是协方差矩阵.
因为vTCv 就是 variance,而我们的目标是最大化variance,因此 the first principal vector can be found by the following equation:

鉴于是带等式约束的优化问题,遂采用拉格朗日乘数法,写出拉格朗日乘数式如下:

然后将上式对v和λ求导,并令导数等于0,则有

于是我们知道,原来的argmax式子就等价于find the largest eigenvalue of the following eigenvalue problem:

注意我们前面的argmax式子要算的是使得vTCv 达到最大的v,而v可以由上式解出,据此再来计算vTCv ,则有

也就是说我们要做的就是求解Cv=λv,从而得到一个最大的λ,而这个λ对应特征向量v所指示的就是使得variance最大的方向。Projections of the data on the principal axes are called 主成分, also known as PC scores。注意因为v是单位向量,所以点 xj 向 v 轴做投影所得之 PC score 就是 vT·xj。而且这也是最大的主成分方向。如果要再多加的一个方向的话,则继续求一个次大的λ,而这个λ对应特征向量v所指示的就是使得variance第二大的方向,并以此类推。
更进一步,因为C是Covariance matrix,所以它是对称的,对于一个对称矩阵而言,如果它有N个不同的特征值,那么这些特征值对应的特征向量就会彼此正交。如果把Cv=λv,中的向量写成矩阵的形式,也就是采用矩阵对角化(特征值分解)的形式,则有C=VΛVT,其中V是特征向量的矩阵(每列是特征向量),并且Λ是对角矩阵,其特征值λi在对角线上以递减的顺序。 特征向量称为主轴或数据的主方向。
注意到Covariance matrix(这里使用了前面给定的零均值假设)

如果令,其中xi 表示一个列向量,则有

主轴上的数据投影称为主成分,也称为PC得分; 这些可以看作是新的,变换的变量。 第j个主要成分由XV的第j列给出。 新PC空间中第i个数据点的坐标由第i行XV给出。
---------------------
原文:https://blog.csdn.net/baimafujinji/article/details/79376378
---------------------
算法及实例
PCA算法
总结一下PCA的算法步骤:

实例
原始数据集矩阵X:

求均值后:

再求协方差矩阵:

特征值:

对应的特征向量:

标准化(其实不标准化也一样,只是稍显不专业)

选择较大特征值对应的特征向量:

执行PCA变换:Y=PX,得到的Y就是PCA降维后的值数据集矩阵:

【模式识别与机器学习】——PCA主成分分析的更多相关文章
- 机器学习之PCA主成分分析
前言 以下内容是个人学习之后的感悟,转载请注明出处~ 简介 在用统计分析方法研究多变量的课题时,变量个数太多就会增加课题的复杂性.人们自然希望变量个数较少而得到的 信息较多.在很 ...
- 机器学习 - 算法 - PCA 主成分分析
PCA 主成分分析 原理概述 用途 - 降维中最常用的手段 目标 - 提取最有价值的信息( 基于方差 ) 问题 - 降维后的数据的意义 ? 所需数学基础概念 向量的表示 基变换 协方差矩阵 协方差 优 ...
- Bishop的大作《模式识别与机器学习》Ready to read!
久仰Bishop的大作“Pattern Recognition and Machine Learning”已久,在我的硬盘里已经驻扎一年有余,怎奈惧其页数浩瀚,始终未敢入手.近日看文献,屡屡引用之.不 ...
- [机器学习]-PCA数据降维:从代码到原理的深入解析
&*&:2017/6/16update,最近几天发现阅读这篇文章的朋友比较多,自己阅读发现,部分内容出现了问题,进行了更新. 一.什么是PCA:摘用一下百度百科的解释 PCA(Prin ...
- paper 95:《模式识别和机器学习》资源
Bishop的<模式识别和机器学习>是该领域的经典教材,本文搜罗了有关的教程和读书笔记,供对比学习之用,主要搜索的资源包括CSDN:http://download.csdn.net/sea ...
- 模式识别与机器学习—bagging与boosting
声明:本文用到的代码均来自于PRTools(http://www.prtools.org)模式识别工具箱,并以matlab软件进行实验. (1)在介绍Bagging和Boosting算法之前,首先要简 ...
- 用PCA(主成分分析法)进行信号滤波
用PCA(主成分分析法)进行信号滤波 此文章从我之前的C博客上导入,代码什么的可以参考matlab官方帮助文档 现在网上大多是通过PCA对数据进行降维,其实PCA还有一个用处就是可以进行信号滤波.网上 ...
- 今天开始学模式识别与机器学习(PRML),章节5.1,Neural Networks神经网络-前向网络。
今天开始学模式识别与机器学习Pattern Recognition and Machine Learning (PRML),章节5.1,Neural Networks神经网络-前向网络. 话说上一次写 ...
- PCA主成分分析 ICA独立成分分析 LDA线性判别分析 SVD性质
机器学习(8) -- 降维 核心思想:将数据沿方差最大方向投影,数据更易于区分 简而言之:PCA算法其表现形式是降维,同时也是一种特征融合算法. 对于正交属性空间(对2维空间即为直角坐标系)中的样本点 ...
- PCA主成分分析Python实现
作者:拾毅者 出处:http://blog.csdn.net/Dream_angel_Z/article/details/50760130 Github源代码:https://github.com/c ...
随机推荐
- bzoj2157旅游
bzoj2157旅游 题意: 给定有权树,支持单边权修改,路径边权取相反数,路径边权求和,路径边权求最大最小值. 题解: 用link-cut tree link-cut tree与树链剖分有些类似,都 ...
- MYSQL 使用基础 - 这么用就对了
这篇文章主要梳理了 SQL 的基础用法,会涉及到以下方面内容: SQL大小写的规范 数据库的类型以及适用场景 SELECT 的执行过程 WHERE 使用规范 MySQL 中常见函数 子查询分类 如何选 ...
- sql中in和exists的原理及使用场景。
在我们的工作中可能会遇到这样的情形: 我们需要查询a表里面的数据,但是要以b表作为约束. 举个例子,比如我们需要查询订单表中的数据,但是要以用户表为约束,也就是查询出来的订单的user_id要在用户表 ...
- OSCP Learning Notes - Buffer Overflows(1)
Introduction to Buffer Overflows Anatomy of Memory Anatomy of the Stack Fuzzing Tools: Vulnserver - ...
- Ethical Hacking - GAINING ACCESS(24)
CLIENT SIDE ATTACKS - Detecting Trojan manually or using a sandbox Analyzing trojans Check the prope ...
- 深入了解PHP的生成器
在驾驶方面,速度并不会决定一切.但是在网络上,速度至关重要.你的应用程序越快,用户体验就越好.好吧,这时候有人就奇怪了,本文是关于PHP 生成器的,那么为什么我们要谈论速度呢?很快你就会发现,生成器在 ...
- 题解 CF51F 【Caterpillar】
根据毛毛虫的定义,我们不难发现在双连通分量中的点我们都需要进行合并操作,所以我们先进行\(tarjan\)缩边双连通分量,使原图变成一棵树,缩点对答案产生的贡献为每个双连通分量的\(size-1\) ...
- vue学习(一)初步了解 vue实例
//html:<div id="app"> <p>{{msg}}<p></div> //script 需要引入jar包vue-2.4 ...
- Spring Security系列之极速入门与实践教程
@ 目录 1. Spring Security 2. 实验环境准备 3. 日志级别修改 4. 配置用户名/密码 5. 数据库方式校验 6. 不拦截静态资源 7. 自定义登录页面 8. Remember ...
- Redis网络模型的源码分析
Redis的网络模型是基于I/O多路复用程序来实现的.源码中包含四种多路复用函数库epoll.select.evport.kqueue.在程序编译时会根据系统自动选择这四种库其中之一.下面以epoll ...