统计机器学习---主成分分析(PCA)

2023-10-26

主成分分析的基本了解

主成分分析方法,是一种使用最广泛的数据降维算法,PCA的主要思想是将高维的特征映射到k维上。这k维就是主成分,并能保留原始变量的大部分信息,这里的信息是指原始变量的方差。

如果用坐标系进行直观解释,一个坐标系表示一个变量,对原坐标系中的数据进行主成分分析等价于进行坐标系旋转变换,将数据投影到新坐标系的坐标轴上。新坐标轴表示的变量是原来多个变量的线性组合。

什么是方差?
数据在每一轴上的坐标值的平方表示相应变量的方差。

什么是第一主成分?
第一主成分就是新坐标系的第一坐标轴,为旋转变换中坐标值的平方和最大的轴,即方差最大的轴。需要注意第一主成分,第二主成分。。。第 k 主成分是相互正交的。

主成分分析求解

如何得到包含最大差异性的主成分方向?
通过计算数据矩阵的协方差矩阵,然后得到协方差矩阵的特征值特征向量,选择特征值最大的K个特征所对应的特征向量组成的矩阵。那么就可以将数据矩阵转换到新的空间当中,实现数据特征的降维。

得到协方差矩阵的特征值向量有两种方法:特征值分解协方差矩阵、奇异值分解协方差矩阵。

PCA算法有两种实现方法:

基于特征值分解协方差矩阵:
A = Q Σ Q − 1 A = Q \Sigma Q^{-1} A=QΣQ1
基于SVD分解协方差矩阵:
A = U Σ V T A = U \Sigma V^{T} A=UΣVT
关于奇异值分解的相关内容请参考: https://blog.csdn.net/leemusk/article/details/107149297

基于特征值分解协方差矩阵:
输入:数据集 X = { x 1 , x 2 , . . . , x n } X = \{x_1, x_2, ..., x_n\} X={x1,x2,...,xn},需要降到 k 维
1) 去平均值(即去中心化),即每一位特征减去各自的平均值
2)计算协方差矩阵 1 ( n − 1 ) X X T \frac 1 {(n-1)} XX^T (n1)1XXT,这里除或不除样本数量 n 或 n-1 ,其实对求出的特征向量没有影响
3) 用特征值分解方法求协方差矩阵 1 ( n − 1 ) X X T \frac 1 {(n-1)} XX^T (n1)1XXT 的特征值或特征向量。
4)对特征值从小到大排序,选择其中最大的 k 个,然后对其对应的 k 个特征向量分别作为列向量组成特征向量矩阵P
4)将数据转换到 k 个特征向量构建的新空间中,即 Y=PX。

基于SVD分解协方差矩阵:
输入:数据集 X = { x 1 , x 2 , . . . , x n } X = \{x_1, x_2, ..., x_n\} X={x1,x2,...,xn},需要降到 k 维
1) 去平均值(即去中心化),即每一位特征减去各自的平均值
2). 构造新的 n*m 矩阵:
X ′ = 1 n − 1 X T X' = \frac 1 {\sqrt{n-1}} X^T X=n1 1XT
X’ 的每一列的均值为零。因为 X ′ T X ′ = 1 n − 1 X X T X'^TX' = \frac 1 {n-1}XX^T XTX=n11XXT,即等于X的协方差矩阵,而主成分分析归结于求协方差矩阵的特征值和对应的单位特征向量,那么问题转化为求矩阵 X ′ T X ′ X'^TX' XTX 的特征值和对应的单位特征向量,即对 X ′ X' X 进行SVD分解求得的 V k T V^T_k VkT 为所需的 K 个主成分。

这里我们需要注意奇异值分解中求解是 X T X X^TX XTX的特征值特征向量。

3). 对矩阵X’ 进行截断奇异值分解,得到
X ′ = U Σ V T X' = U\Sigma V^T X=UΣVT
有k个奇异值、奇异向量。矩阵V 的前 k 列构成 k 个样本主成分。
4). 求 k * n 样本主成分矩阵
Y = V k T X Y = V_k^T X Y=VkTX

SVD分解协方差矩阵有两个优点:

  1. 有些SVD的实现算法可以先不求出协方差矩阵也能求出右奇异矩阵V。
    也就是说,PCA算法可以不通过做特征分解而是通过SVD来完成,这个方法在样本量很大的时候很有效。实际是,scikit-learn的PCA算法的背后真正的实现就是用的SVD,而不是特征值分解。

  2. 注意到PCA仅仅使用了SVD的右奇异矩阵,没有使用的左奇异矩阵。
    假设样本是 m ∗ n m*n mn 的矩阵 X, 如果我们通过了SVD找到了矩阵 X T X X^TX XTX 最大的 k 个特征向量组成的 k * n 的矩阵 V T V^T VT ,则可以做如下处理:可以得到一个 m * k 的矩阵 X m ∗ k ′ = X m ∗ n V n ∗ k T X'_{m*k} = X _{m*n}V_{n*k}^T Xmk=XmnVnkT

    这个矩阵原来 m * n 的矩阵 X 相比,列数从 n 见到了 k,可见对列数进行了压缩,也就是说,左奇异矩阵可以用于对行数的压缩;右奇异矩阵可以用于对列(即特征维度)的压缩。这就是我们用SVD分解协方差矩阵实现PCA可以得到两个方向的 PCA 降维(即行和列两个方向)

总体与样本主成分分析

总体主成分:在数据总体上进行的主成分分析
样本主成分: 在有限样本上进行的主成分分析

区别:
样本主成分用样本的均值向量 Z ‾ \overline{Z} Z 代替总体主成分均值向量 μ \mu μ
用协方差矩阵 S 代替总体方差矩阵 Σ \Sigma Σ
Z ‾ = 1 n ∑ j = 1 n z j = ( z ‾ 1 , z ‾ 2 , . . . , z ‾ m ) S = [ s i j ] s i j = 1 n − 1 ∑ k = 1 n ( z i k − z ‾ i ) ( z j k − z ‾ j ) , i , j = 1 , 2 , . . . m / \overline{Z} = \frac 1 n \sum_{j=1}^n z_j = (\overline{z}_1,\overline{z}_2,...,\overline{z}_m)\\ S = [s_{ij}]\\ s_{ij} = \frac 1 {n-1} \sum_{k=1}^n (z_{ik} - \overline{z}_i) (z_{jk} - \overline{z}_j), i,j = 1,2,...m/ Z=n1j=1nzj=(z1,z2,...,zm)S=[sij]sij=n11k=1n(zikzi)(zjkzj),i,j=1,2,...m/

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

统计机器学习---主成分分析(PCA) 的相关文章

  • mybatis 的mapper接口注入到spring 容器的源码解析

    一 环境准备 1 创建一个maven 项目 其POM文件如下
  • pytorch笔记12--无监督的AutoEncoder(自编码)

    1 AutoEncoder 给特征属性降维 2 Data gt 压缩 提取Data的关键信息 减小网络的运算压力 gt data 具有代表性的特征 gt 解压 还原数据信息 gt Pred Data 3 使用Mnist数据集训练 将数据先压
  • CentOS7安装wps

    第一步 首先到wps官网 http linux wps cn 下载 wps for linux 选择合适自己的系统位数的rpm包 如下图所示 第二步 打开终端 cd进入文件下载的路径 我下载的存放路径是 home zjh Downloads
  • 大数据课程L4——网站流量项目的Hive离线批处理

    文章作者邮箱 yugongshiye sina cn 地址 广东惠州 本章节目的 掌握网站流量项目的 Hive 的占位符与文件的调用 掌握网站流量项目的 Hive 离线批处理过程 掌握网站流量项目的定时任务改造Hive离线处理过程 一 Hi
  • 数据库设计——关系数据理论(超详细)

    问题 什么是一个好的数据库逻辑设计 关系型数据库逻辑设计 针对一个具体问题应如何构造一个适合于它的数据模式 即应构造几个关系 每个关系由哪些属性组成等 eg 这样的设计是一个好的设计吗 观察这个表所对应的一个实例 在某个时刻student模
  • 域名服务器中存放主机的什么位置,域名服务器中存放主机的域名

    域名服务器中存放主机的域名 内容精选 换一换 本文档重点介绍在CCE容器中如何配置域名解析 在创建相应的后端工作负载 Deployment或ReplicaSet 以及在需要访问它的任何工作负载之前创建服务 当Kubernetes启动容器时
  • 基于Python的淘宝自动回复助手

    前言 看到有人从blink上发需要用python做一个类似于淘宝自动回复助手的作业 好久没玩python了 就写了一下 实现了 1 退货 2 查库存 3 商品查看 这三个功能 整理一下心路历程 搞到一份源码 def find answer
  • 安装 Django1.11

    Django1 11 安装Django的步骤 联网 在命令行窗口中直接运行 pip install django 1 11 i https pypi tuna tsinghua edu cn simple 或使用离线方式安装 执行命令 pi
  • 初级(上) 二维码的生成

    吼吼 阳仔的第一篇博客开写啦 以下的内容都是我从imooc上面听课的总结 当然是只针对二维码 作为一个初级程序媛 也是要坚持学习的 首先 谢谢imooc网上的老师发放的免费视频 让我自己有了一些简单的了解 接下来 就把我的总结贴出来吧 第一
  • 微信公众号开发之绑定微信开发者

    第一步 登录微信公众号 绑定网页开发者 在登录后的界面中 我们向下拉在左侧会看到有一个 开发者工具 点击 这时在开发者工具中 会看到有好几个工具 其中有一个 web开发者工具 我们点击进入 在这里 我们就会看到有一个 绑定开发者微信号 按钮
  • LDO的原理及应用

    01 LDO定义 LDO即lowdropoutregulator 是一种低压差线性稳压器 这是相对于传统的线性稳压器来说的 传统的线性稳压器 如78XX系列的芯片都要求输入电压要比输出电压至少高出2V 3V 否则就不能正常工作 但是在一些情
  • Javascript:window.close()不起作用?

    一般的窗口关闭的JS如下写法 window close 但是呢 chrome firefox等中有时候会不起作用 改为下面的写法 window open about blank self close 或者 window open self
  • 服务端 TCP 连接的 TIME_WAIT 过多问题的分析与解决

    https blog csdn net zxlyx article details 120397006 本文给出一个 TIME WAIT 状态的 TCP 连接过多的问题的解决思路 非常典型 大家可以好好看看 以后遇到这个问题就不会束手无策了
  • ubuntu安装anaconda及创建桌面快捷启动图标

    第一步 下载anaconda 1 因为跑代码的原因 我要下载python3 6的anaconda 如果大家也有版本的要求 首先需要查看python与anaconda的版本对应关系 详细可见https blog csdn net yuejis
  • verilog实例-仲裁(Arbiter)

    目录 1 仲裁 2 仲裁方案 3 严格优先级轮询 1 design detil 2 time 3 code 4 公平轮询 1 design detil 2 time 3 code 5 公平轮询 仲裁w o死周期 1 design detil
  • 【Arduino实验05 基于环境光的LED灯亮度感应控制】

    目录 一 实验目的 二 实验设备与环境 三 实验重点 四 实验难点 五 实验内容 5 1实验任务 5 2实验原理 5 3实验内容 5 4实验结果 5 5思考题 一 实验目的 1熟悉光敏传感器原理与功能 2理解串联电路获取传感器数据原理 3
  • 基于烟花算法的单目标优化问题求解及Matlab实现

    基于烟花算法的单目标优化问题求解及Matlab实现 烟花算法 Fireworks Algorithm 是一种新型的群智能算法 模拟了烟花爆炸时颜色花火 噪声花火等不同类别的行为特征 通过对爆炸位置 高度 数量等参数进行调整来求解单目标优化问
  • CRC校验流程

    通常我们在涉及到传输指令或者命令行的时候 为了保证数据传输的正确性和准确性 会涉及到校验码的问题 而我们通常会采用CRC校验 CRC是比较常用的对命令行和指令行的校验方法 一般会放在指令的后面 用以核对数据的正确性 其实如果是比较简单的指令

随机推荐

  • js使用mqtt的示例代码

    浏览器如果要使用mqtt 需要引用js包 基本使用 Create a client instance var options mqtt客户端的id 这里面应该还可以加上其他参数 具体看官方文档 clientId mqttjs Math ra
  • 数字IC手撕代码-数据位宽转换器(宽-窄,窄-宽转换)

    前言 本专栏旨在记录高频笔面试手撕代码题 以备数字前端秋招 本专栏所有文章提供原理分析 代码及波形 所有代码均经过本人验证 目录如下 1 数字IC手撕代码 分频器 任意偶数分频 2 数字IC手撕代码 分频器 任意奇数分频 3 数字IC手撕代
  • 数组转化为list

    1 Arrays asList strArray 方式 将数组转换List后 不能对List增删 只能查改 否 则抛异常 此时是java util Arrays ArrayList 这里面有java util Arrays里面的内部类 里面
  • [pycharm]添加环境变量

    1 问题描述 当import第三方库时 例如自己定义的rosmsg 可能会出现无法索引的情况 2 解决方案 2 1 方法1 在pycharm解释器里面添加路径 File gt Setting gt Project xxxx gt Pytho
  • java开发环境搭建参考网址整理【全】

    前言 大家每次换本儿是不是和我一样头疼需要重新把开发环境重新搭建一遍 我本人主要是通过百度参考别人的网址跟着搭建的 慢慢我就想为啥不专门写一篇文章整理一下从头至尾比较全面的步骤呢 这样方便自己 也方便大家哈 ps 以下有关的文章链接是参考优
  • python中dtypes_Dataframe创建及index,columns,values,dtypes等属性介绍

    DataFrame概念 可以通俗理解为excel中一片数据 表格型数据结构 带有标签的二维数组 有行标签 index 和列标签 columns 其值可以是数值 字符串 布尔值等 1 index 行标签 2 columns 列标签 3 val
  • Layui之动态选项卡&iframe使用

    目录 tab选项卡 方法层 实体类 User web层 登录界面代码 tab选项卡 我们顺着上篇的博客内容 在那个基础上加一个选项卡 首先我们打开Layui的在线文档 网址如下 Tab选项卡 在线演示 Layuihttp layui org
  • LeetCode之螺旋矩阵 II 简单易懂与晦涩难懂两种方法解决

    目录 题目 方法一 简单易懂 四方步步紧逼法 代码 方法二 复杂一点 上下法 代码 题目 给你一个正整数 n 生成一个包含 1 到 n2 所有元素 且元素按顺时针顺序螺旋排列的 n x n 正方形矩阵 matrix 示例 1 输入 n 3
  • ptv服务器系统,红狮PTV安灯管理服务器系统有效提升国内某知名车企生产效率

    国内某知名汽车企业 在其以往的日常生产管理中 由于汽车生产各产线设备间没有实现互联 工位间信息不流通 每天都需要安排设备管理员定时巡视各个工位 检查设备运行状况 记录生产现状 这不仅造成了时间 人力成本的浪费 更制约了该企业生产效率的提升
  • 修改远程桌面登陆端口的方法

    Windows系统中的远程终端服务是一项功能非常强大的服务 其默认的端口号3839很容易成为入侵者长驻主机的通道 使用户电脑成为通常称为的 肉鸡 受入侵者远程操控 盗取用户重要资料和隐私信息 是非常严重的网络安全隐患 因此 在使用远程终端服
  • 小程序的开放能力、分享及组件的传参

    一 小程序开放功能 1 获取网络状态wx getNetworkType 2 从网络上下载文档wx downloadFile 3 下载成功之后进行预览文档wx openDocument Page 点击 预览文档 的按钮 触发tap回调 tap
  • python解析xml

    import xml dom minidom dom xml dom minidom parse r K identify voc to coco cache annotations 0 xml 打开xml文件 送到dom解析
  • 【网络基础】通俗易懂的搞明白什么是子网掩码(大白话版)

    目录 前言 什么是子网掩码 子网 如何判断是否在同一个子网 子网掩码的功能总结 子网掩码的分类 可变长子网掩码 总结 前言 本次的文章内容均为个人在网络上搜罗知识点并梳理而来 尽量用浅显易懂的方式讲解 但不会讲的很深入 因为只想给刚入行的人
  • webrtc.lib(m74) 链接的 obj 文件[应该与编译选项有关,备忘]

    01F68076 0 obj test fake video codecs fake vp8 encoder obj 01F680A6 48 obj test fake video codecs fake vp8 decoder obj 0
  • Android监听程序的安装和卸载

    在android系统中 安装和卸载都会发送广播 当应用安装完成后系统会发android intent action PACKAGE ADDED广播 可以通过intent getDataString 获得所安装的包名 当卸载程序时系统发and
  • 数据库——SQL语句(其它)

    目录 1 数据类型 2 查询条件 1 数据类型 数据类型 含义 CHAR n CHARACTER n 长度为n的定长字符串 VARCHAR n CHARACTERVARYING n 最大长度为n的变长字符串 CLOB 字符串大对象 BLOB
  • 基于体系结构架构设计-架构真题(十五)

    基于体系结构开发设计 Architecture Base Software Design ABSD 是指构成体系结构的 组合驱动 ABSC方法是一个自项向下 递归细化的方法 软件系统的体系结构通过该方法细化 直到能产生 产品 功能需求和设计
  • CSS实现悬浮提示(通用)

    没有废话 先看效果 为id选择器 如果有id可以直接确认到指定控件最好 如果class固定也可以只通过class选择器指向控件 不会取的也可以通过浏览器检查页面找到 代码如下 deep xmly ant select selection r
  • matlab 集成学习方法,集成学习(ensemble learning)

    本章参考西瓜书第八章编写 从个体和集成之间的关系出发 引出了集成学习的遵循的两大标准 基学习器的准确定和多样性 然后开始介绍具体的集成学习算法 串行的Boosting和并行的Bagging 前者通过对错判训练样本重新赋权来重复训练 以提高基
  • 统计机器学习---主成分分析(PCA)

    主成分分析的基本了解 主成分分析方法 是一种使用最广泛的数据降维算法 PCA的主要思想是将高维的特征映射到k维上 这k维就是主成分 并能保留原始变量的大部分信息 这里的信息是指原始变量的方差 如果用坐标系进行直观解释 一个坐标系表示一个变量