PCA主成分分析

2023-11-18

 PCA主成分分析

优点:降低数据的复杂性,识别最重要的多个特征。

缺点:不一定需要, 且可能损失有用信息。

适用数据类型:数值型数据。

PCA背景知识:

移动坐标轴

考虑上图中的大量数据点。如果要求我们画出一条直线,这条线要尽可能覆盖这些点, 那么最长的线可能是哪条?我做过多次尝试。在上中 , 3条直线中B 最长 。在PCA中,我们对数据的坐标进行了旋转,该旋转的过程取决于数据的本身。第一条坐标轴旋转到覆盖数据的最大方差位置,即图中的直线B 。数据的最大方差给出了数据的最重要的信息。

在选择了覆盖数据最大差异性的坐标轴之后,我们选择了第二条坐标轴。假如该坐标轴与第一条坐标轴垂直, 它就是覆盖数据次大差异性的坐标轴。这里更严谨的说法就是正交(orthogonal)。当然,在二维平面下, 垂直和正交是一回事。在上图中, 直线 C 就是第二条坐标轴。利用PCA,我们将数据坐标轴旋转至数据角度上的那些最重要的方向。

***************************************************************************************************************************************************

我们已经实现了坐标轴的旋转,接下来开始讨论降维。 坐标轴的旋转并没有减少数据的维度。



考虑上图,其中包含着3个不同的类别。要区分这3个 类 别 , 可以使用决策树。决策树每次都是基于一个特征来做决策的。我们会发现,在 x 轴上可以找到一些值,这些值能够很好地将这3个类别分开。这 样 ,我们就可能得到一些规则,比 如 当 ( x < 4 ) 时 ,数据属于类别0 。如果使用 SVM 这样稍微复杂一点的分类器,我们就会得到更好的分类面和分类规则,比如当( w0 * x + w1 * y + b)  >  0 时 ,数据也属于类别0 。SVM 可能比决策树得到更好的分类间隔,但是分类超平面却很难解释。

通过 PCA 进行降维处理,我们就可以同时获得 SVM 和决策树的优点: 一方面,得到了和决策树一样简单的分类器,同时分类间隔和S V M — 样 好。 考察上图中下面的一副图,其中的数据来自于上面的图并经 PCA 转换之后绘制而成的。如果仅使用原始数据,那么这里的间隔会比决策树的间隔更大。 另 外 , 由于只需要考虑一维信息, 因此数据就可以通过比SVM 简单得多的很容易采用的规则进行区分。

在上图中,我们只需要一维信息即可,因为另一维信息只是对分类缺乏贡献的噪声数据。在二维平面下,这一点看上去微不足道, 但是如果在高维空间下则意义重大。

***************************************************************************************************************************************************

我们已经对 PCA 的基本过程做出了简单的阐述, 接下来就可以通过代码来实现 PCA 过程。前面我曾提到的第一个主成分就是从数据差异性最大( 即方差最大)的方向提取出来的,第二个主成分则来自于数据差异性次大的方向, 并且该方向与第一个主成分方向正交。通过数据集的协方差矩阵及其特征值分析,我们就可以求得这些主成分的值。

一旦得到了协方差矩阵的特征向量,我们就可以保留最大的外个值。这些特征向量也给出了N个最重要特征的真实结构。我们可以通过将数据乘上这况个特征向量而将它转换到新的空间。

注意:

特征值分析是线性代数中的一个领域,它能够通过数据的一般格式来揭示数据的“ 真实” 结构,即我们常说的特征向量和特征值。 . 在 等 式 如 A v = t v中,v 是特征向量,t  是特征值。特征值都是简单的标量值,因 此  A v = t v 代表的是:如果特征向量 v 被某个矩阵A 左乘,那么它就等于某个标量 x 乘以 v 。


将数据转换成前 N 个主成分的伪码大致如下:

去除平均值

计算协方差矩阵(http://zipperary.com/2014/01/12/covariance/)

计算协方差矩阵的特征值和特征向量

将特征值从大到小排序

保留最上面的 N 个特征向量

将数据转换到上述 N 个特征向量构建的新空间中

具体计算过程举例:

http://www.cnblogs.com/jerrylead/archive/2011/04/18/2020209.html


本博客没有解释:

1:为什么用协方差矩阵来计算特征向量,从而构建新的正交向量空间。(协方差用来来度量各个维度偏离其均值的程度)

2:为什么特征值越大,该特征向量方向上的数值越离散。

*********************************************************************************************************************************************************************

                                                                     帮助文档:

2.1实对称阵属于不同特征值的的特征向量正交的。


2.2:线性代数中方阵的一条性质:

*********************************************************************************************************************************************************************

3:协方差矩阵,协方差和协方差系数:

协方差:


协方差和相关系数的意义:
	1、协方差是一个用于测量投资组合中某一具体投资项目相对于另一投资项目风险的统计指标,通俗点就是投资组合中两个项目间收益率的相关程度,正数说明两个项目一个收益率上升,另一个也上升,收益率呈同方向变化。如果是负数,则一个上升另一个下降,表明收益率是反方向变化。协方差的绝对值越大,表示这两种资产收益率关系越密切;绝对值越小表明这两种资产收益率的关系越疏远。
	2、由于协方差比较难理解,所以将协方差除以两个投资方案投资收益率的标准差之积,得出一个与协方差具有相同性质却没有量化的数。这个数就是相关系数。计算公式为相关系数=协方差/两个项目标准差之积。
特征值和特征向量的几何意义:
特征向量确实有很明确的几何意义,矩阵(既然讨论特征向量的问题,当然是方阵,这里不讨论广义特征向量的概念,就是一般的特征向量)乘以一个向量的结果仍 是同维数的一个向量,因此,矩阵乘法对应了一个变换,把一个向量变成同维数的另一个向量,那么变换的效果是什么呢?这当然与方阵的构造有密切关系,比如可 以取适当的二维方阵,使得这个变换的效果就是将平面上的二维向量逆时针旋转30度,这时我们可以问一个问题,有没有向量在这个变换下不改变方向呢?可以想 一下,除了零向量,没有其他向量可以在平面上旋转30度而不改变方向的,所以这个变换对应的矩阵(或者说这个变换自身)没有特征向量(注意:特征向量不能 是零向量),所以一个变换的特征向量是这样一种向量,它经过这种特定的变换后保持方向不变,只是进行长度上的伸缩而已(再想想特征向量的原始定义Ax= cx,你就恍然大悟了,看到了吗?cx是方阵A对向量x进行变换后的结果,但显然cx和x的方向相同),而且x是特征向量的话,ax也是特征向量(a是标 量且不为零),所以所谓的特征向量不是一个向量而是一个向量族, 另外,特征值只不过反映了特征向量在变换时的伸缩倍数而已,对一个变换而言,特征向量指明的方向才是很重要的,特征值不是那么重要,虽然我们求这两个量时 先求出特征值,但特征向量才是更本质的东西!

比如平面上的一个变换,把一个向量关于横轴做镜像对称变换,即保持一个向量的横坐标不变,但纵坐标取相反数,把这个变换表示为矩阵就是[1 0;0 -1],其中分号表示换行,显然[1 0;0 -1]*[a b]'=[a -b]',其中上标'表示取转置,这正是我们想要的效果,那么现在可以猜一下了,这个矩阵的特征向量是什么?想想什么向量在这个变换下保持方向不变,显 然,横轴上的向量在这个变换下保持方向不变(记住这个变换是镜像对称变换,那镜子表面上(横轴上)的向量当然不会变化),所以可以直接猜测其特征向量是 [a 0]'(a不为0),还有其他的吗?有,那就是纵轴上的向量,这时经过变换后,其方向反向,但仍在同一条轴上,所以也被认为是方向没有变化,所以[0 b]'(b不为0)也是其特征向量,去求求矩阵[1 0;0 -1]的特征向量就知道对不对了!
矩阵就是刻画变换的,特征值和特征向量的几何意义是变换中的不变量

参考:

【1】:概率论与数理统计

【2】:机器学习实战

【3】:协方差公式及计算方法  http://blog.csdn.net/goodshot/article/details/8611178

【4】:http://zhidao.baidu.com/link?url=ndoQcswp4p-3lWgksQk1IyEWVtQGchlx0-hfBiA5JowKgVLc0S5aPUH

            3226huxueC_lE8FNecWFRNev-395wa

【5】:http://blog.sina.com.cn/s/blog_89cac57e01012uji.html

【6】:线性代数

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

PCA主成分分析 的相关文章

  • 数组和指针笔试题解析之【数组】

    目录 前言 1 一维数组 2 字符数组 2 1题型一 2 2题型二 2 3题型三 3 二维数组 前言 1 数组名的意义 sizeof 数组名 这里的数组名表示整个数组 计算的是整个数组的大小 单位是字节 数组名 这里的数组名表示整个数组 取

随机推荐

  • win10连接蓝牙耳机_蓝牙耳机兼容性是什么?哪个牌子蓝牙耳机连接稳定续航高_...

    2020年10月21日 10 08 作者 网络 编辑 王动 不论我们何时走在街上 总能看到有人佩戴着耳机摇头晃脑 似乎沉浸在音乐的世界里无法自拔 但在众多手机去掉的耳机接口后 大多数人开始将目光投向蓝牙耳机 希望能够重获快乐 只是 并非所有
  • pyltp的本地安装

    0 电脑配置 win 8 1 64位操作系统 python 2 7 1 使用pip安装pyltp 运行安装命令 pip install pyltp 第一次失败 缺少Visual C 9 0 参考资料 https blog csdn net
  • Android,页面3秒自东跳转和点击跳转显示

    先打开ADT程序创建 创建文件 如图 命名为Day01 注意大小写 注意改名字不要重复 在res layout中找到 下面第一个是视图 第二个是对视图进行编辑点击第二个进行编辑 把
  • 多线程面试总结

    总结 每个对象有一个监视器锁monitor 线程进入同步方法时尝试获取monitor的所有权 其他线程进入阻塞状态 该线程释放monitor的所有权后其他线程重新尝试获取monitor的所有权 只能有一个线程对同步监视器加锁 1 多线程的问
  • React报错误及其解决方案

    1 Import in body of module reorder to top import first 解决方案 import开头代码写在最前面
  • 微信支付之扫码支付相关代码(Java)(转载)

    最近开发网站过程 需要引入支付过程 第三方支付中最火的莫过于支付宝支付和微信支付 下边借助微信支付官网上的文档 写一下接入微信支付之扫码支付的流程 相对支付宝支付而言 微信支付的开发文档写的相当的low demo写的一点都不简洁 下边写一下
  • 如何创建http端口监听_比Minikube更快,使用Kind快速创建K8S学习环境

    简述 K8S 如火如荼的发展着 越来越多人想学习和了解 K8S 但是由于 K8S 的入门曲线较高很多人望而却步 然而随着 K8S 生态的蓬勃发展 社区也呈现了越来越多的部署方案 光针对生产可用的环境就有好几种部署方案 对于用来测试和学习环境
  • PHP秒杀系统 高并发 高性能的极致挑战 下载

    第1章 课程介绍 秒杀系统在各种网站和应用中经常会用到 本课程从基本的系统设计和基础功能开始教导大家用PHP来设计和实现秒杀系统 并且为海量并发提供更高级的技术方案和实现手段 第2章 系统技术选型分析 本章节需要大家掌握基础的LNMP平台的
  • RAC Failover三种方式

    1 Client Side Connect Time Failover 1 1 在用户端tnsname中配置了多个地址 用户发起连接请求时 会先尝试连接地址表中的第一个地址 如果这个连接尝试失败 则继续尝试使用第二个地址 直至连接成功或者遍
  • CSAPP——2.2整数表示

    两种整数 1 非负数 unsigned 2 负数 0 正数 T 补码 B 二进制 U 无符号数 1 整数数据类型 unsigned char short int long int32 t int64 t 2 无符号数的编码 假设位向量 x
  • 【Unity】2D太空登录小游戏开发入门教程(下)

    Unity 是一款非常流行且用途广泛的游戏引擎 拥有一长串受支持的平台和设备 3D 游戏可能是您谈到 Unity 时的第一个想法 该引擎甚至曾经被称为Unity 3D 但是 大部分移动 主机和桌面游戏都是以 2D 形式呈现的 因此了解 Un
  • 考研政治——选择题判断原则

    博主个人感觉政治的选择题答案真的不用背诵 而且付出与收获完全是绝对失衡的 大家做选择题时如果明确知道答案最好 但若不确定 这里博主分享一些个人总结的做题经验或可以说是筛选原则 练习时单选题尽量不要错 多选题保持在7个以内 文章目录 马原 毛
  • Inno Setup 系列之安装、卸载时调用bat

    需求 想在安装的时候调用install bat 在卸载的时候调用uninstall bat 解决 可以这样写 Inno Setup 的脚本 Setup NOTE The value of AppId uniquely identifies
  • Java中的OOP

    OOP Object Oriented Programming 是面向对象编程 OOP特征分别是封装 继承 多态 1 封装 保护内部的操作不被破坏 2 继承 在原本的基础之上继续进行扩充 3 多态 在一个指定的范围之内进行概念的转换 Jav
  • C++ 重载、覆盖、隐藏

    C 重载 覆盖 隐藏 重载 覆盖和隐藏是C 中容易混淆的概念 作为C 研发人员有必要了解其区别和实现 以下结合概念和源码加以说明 1 重载 重载指同一个类或者范围内 被声明的同名函数其参数数量或者类型不同 使用时根据函数参数列表确定调用哪个
  • 使用ifconfig结合awk提取主机的IP地址方法

    ifconfig是用来配置或者显示网卡信息的工具 可以提供与ip a类似的功能 在CentOS7以后的版本里 ifconfig是默认没有安装的 需要安装net tools工具 我们可以借助ifconfig工具 使用下面简单的脚本来完成主机I
  • 如何使用cd命令

    转自http jingyan baidu com article 8cdccae99f3d46315513cd47 html 以下适用于windows环境 cd就是change directory的缩写 即改变目录 讲cd命令之前 先来看看
  • 【Linux】Systemd+rc.local设置开机自启动

    1 问题描述 ubuntu18 04不再使用 inited 管理系统 改用 systemd 启动时 默认不再使用调用 etc rc local 如果想开机时调用 etc rc local 需要修改systemd的配置 2 解决方法 2 1
  • 任意进制之间的转换(C++实现)

    任意进制之间的转换 C 实现 题目描述 输入格式 第一行输入两个整数 n 和 m 2 lt n m lt 16 n 代表的是第二行输入的数的进制 m 代表的是输出的数字的进制 第二行输入一个x 如果有字母 输入大写字母 输出格式 输出一个
  • PCA主成分分析

    PCA主成分分析 优点 降低数据的复杂性 识别最重要的多个特征 缺点 不一定需要 且可能损失有用信息 适用数据类型 数值型数据 PCA背景知识 移动坐标轴 考虑上图中的大量数据点 如果要求我们画出一条直线 这条线要尽可能覆盖这些点 那么最长