(笔记)深度理解-主成分分析PCA

news2024/12/20 19:13:22

主成分分析

PCA(Principal Component Analysis),即主成分分析方法,是一种使用最广泛的数据降维算法。PCA的主要思想是将n维特征映射到k维上,这k维是全新的正交特征也被称为主成分,是在原有n维特征的基础上重新构造出来的k维特征。PCA的工作就是从原始的空间中顺序地找一组相互正交的坐标轴,新的坐标轴的选择与数据本身是密切相关的。其中,第一个新坐标轴选择是原始数据中方差最大的方向,第二个新坐标轴选取是与第一个坐标轴正交的平面中使得方差最大的,第三个轴是与第1,2个轴正交的平面中方差最大的。依次类推,可以得到n个这样的坐标轴。通过这种方式获得的新的坐标轴,我们发现,大部分方差都包含在前面k个坐标轴中,后面的坐标轴所含的方差几乎为0。于是,我们可以忽略余下的坐标轴,只保留前面k个含有绝大部分方差的坐标轴。事实上,这相当于只保留包含绝大部分方差的维度特征,而忽略包含方差几乎为0的特征维度,实现对数据特征的降维处理。

(协方差矩阵详细解释:协方差矩阵与相关性分析 - 知乎 (zhihu.com))

那么我们如何得这个方差最大的主成分方向呢,最经典的方法是特征值分解协方差矩阵,得到协方差矩阵的特征值和特征向量,选择特征值最大(即方差最大的)k个特征向量组成的矩阵。这样就实现了从n维到k维的数据降维。

这里先证明一下为什么协方差矩阵中特征值最大的方向对应的方差最大。

协方差矩阵特征值的几何意义 - 知乎 (zhihu.com)

知道这一点之后就可以很容易的得到基于特征值分解的PCA算法流程了。

输入:数据集X需要降到k维。

1) 去平均值(即去中心化),即每一位特征减去各自的平均值。

2) 计算协方差矩阵S(X)=\frac{1}{n-1}XX^{T} 注:这里除或不除样本数量n或n-1,其实对求出的特征向量没有影响。

3) 用特征值分解方法求协方差矩阵S(X)=\frac{1}{n-1}XX^{T}  的特征值与特征向量。

4) 对特征值从大到小排序,选择其中最大的k个。然后将其对应的k个特征向量分别作为行向量组成特征向量矩阵P。

5) 将数据转换到k个特征向量构建的新空间中,即Y=PX

参考:主成分分析(PCA)原理详解 - 知乎 (zhihu.com)

举个例子,对一个二维高斯分布的数据:

显然X_{1}轴方差更大,所以如果要选一个特征作为划分标准的话,那么用X1的信息更加丰富,在X_{1}上做类别划分效果更好。

对于一个不是标准垂直与坐标轴分布的数据, 那么为了像上面一样直观的区分特征,需要对坐标轴旋转变成Y_{1}Y_{2}(这里做了一个平移到原点的处理,不影响分析),就变成了上面的情况。

那么如何将X_{1}Y_{2}旋转到Y_{1}Y_{2}呢? 

设原本的散点数据协方差矩阵为:

S(X)=\frac{1}{n-1}XX^{T}  ,

对其做旋转变换Y=PX可以得到

S(Y)=\frac{1}{n-1}YY^{T}

此时YY^{T}=(PX)(PX)^{T}=PXX^{T}P^{T},其中XX^{T}=QDQ^{T}

由上式可知:

S(Y)=\frac{1}{n-1}PXX^{T}P^{T}=(PQ)D(PQ)^{T}

显然S(Y)S(X)特征值相同,令PQ为单位矩阵且PQ均正交,则:

P=Q^{-1}=Q^{T}

此时该旋转变化为Y=Q^{T}XQ^{T}就是X特征向量组成的矩阵。Y_{1}Y_{2}就是包含信息最多的两个特征维度,这个过程其实就是主成分分析。

那么为什么Y_{1}Y_{2}是包含信息最多的特征维度呢?

首先对于这个二维平面来说,我们任意划两个相互垂直的轴都可以作为这堆点数据的特征,将数据降维映射到特征轴上就是亮化后的信息,如图所示,散点映射到特征轴上后就可以沿着特征轴做进一步操作。

根据特征选择的原理,我们认为方差越大对应的信息越丰富,换句话说,我们需要找到一个合适的特征使得映射在这个特征上的数据信息损失尽可能的少。比如在下图将数据映射到v和映射到u上信息损失的程度是明显不一样的。 

我们需要找到信息损失最少的特征, 设数据中某个散点向量x_{k}在向量e上的投影为x{_{k}}^{'},e是任意一个特征轴的单位向量。

 

j(e)=\sum ||x{_{k}}^{'}-x_{k}||^{2},为了使得信息损失最少,我们需要最小化j(e)

S=\sum x_{k}x{_{k}}{^{T}},最小化j(e)就可以看成:

 我们用拉格朗日乘数法解这个约束函数:

Se=\lambda e可知,e和\lambda分别为矩阵S的特征向量和特征值。

此时max e^{t}Se = max e^{t}\lambda e=\lambda

所以为了最小化j(e),我们需要使得\lambda值最大。 所以我们需要将数据投影到特征值\lambda最大的特征向量e上,这就是PCA主成分分析的原理。

参考视频:15.2.6.1 主成分分析_哔哩哔哩_bilibili

 

 

 

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/788805.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

蛋白质分子结构设计

paper read 1 Created by: 银晗 张 Created time: May 27, 2023 3:47 PM Tags: Product 补充了解蛋白质的生物学知识学习一下Diffusion的原理 💡 Method & Innovations Framework Summary: first deep learning models to perform antibody sequence-stru…

随笔--更改已经启动中的容器的配置文件

文章目录 docker 容器的配置信息地址修改文件映射 docker 容器的配置信息地址 # 一般在 sudo su cd /cd /var/lib/docker/containers/{容器id}/ # 查看容器的id,CONTAINER ID就是容器id的前部分 docker ps修改文件映射 进入容器的配置文件位置一般包含这些文件 # 先stop容器…

0基础学习VR全景平台篇 第69篇:VR直播-如何设置广告

直播间可以插入轮播广告,并且支持外链跳转,能够有效地提升VR直播活动的转化率。 1、点击,添加广告 2、广告图展现形式分为两种:普通广告和全屏广告,普通广告在非全屏播放的直播间显示,全屏广告在全屏播放的…

特征选择策略:为检测乳腺癌生物标志物寻找新出口

内容一览:microRNA(小分子核糖核酸)是一类短小的单链非编码 RNA 转录体。这些分子在多种恶性肿瘤中呈现失控性生长,因此近年来被诸多研究确定为确诊癌症的可靠的生物标志物 (biomarker)。在多种病理分析中,差异表达分析…

在 “小小容器” WasmEdge 里运行小小羊驼 llama 2

昨天,特斯拉前 AI 总监、OpenAI 联合创始人 Andrej Karpathy 开源了 llama2.c 。 只用 500 行纯 C 语言就能训练和推理 llama 2 模型的框架,没有任何繁杂的 python 依赖。这个项目一推出就受到大家的追捧,24 小时内 GitHub 收获 4000 颗星&am…

AI学习笔记三:编写检测的yolov5测试代码

若该文为原创文章,转载请注明原文出处。 通过detect.py代码测试通过后,阅读detect.py代码发现,有些难以看懂,看得有点蒙蒙的, 所以编写了一个简单的测试程序。 代码如下: import cv2 import numpy as np…

工业自动化编程与数字图像处理技术

编程是计算机领域的基础技能,对于从事软件开发和工程的人来说至关重要。在工业自动化领域,C/C仍然是主流的编程语言,特别是用于工业界面(GUI)编程。工业界面是供车间操作员使用的,使用诸如Halcon或OpenCV等软件单独无法完成项目&a…

mysql 第八章

1.主从复制 主服务器: 从服务器: 检测结果: 2.读写分离 amoeba 机器: 客户端机器: 检测结果: 3.总结 在企业应用中,业务通常数据量都比较大。单台 mysql 在安全性、 高可用性、高并发方面都&am…

走好职业生涯第一步 中科驭数2023校招生培训“芯星计划” 落幕

校招生作为公司发展的新鲜血液,是公司在人才储备和人才梯队建设上的重要投资。近日,中科驭数在北京、武汉两地组织开展了2023年校招生培训项目——“芯星计划”,旨在帮助2023届校招新员工快速了解公司文化、融入驭数团队,顺利迈过…

字节抖音小程序,使用 uniapp 调起内置支付

字节抖音小程序,使用 uniapp 调起内置支付 第一步:提交订单 后端通过抖音预下单接口,提交支付订单信息。 预下单接口_小程序_抖音开放平台预下单接口 提交支付订单信息。 ## 使用限制 无 ## 接口说明 预下单接口需要保证同一app_id下每笔订…

中国剩余定理讲解及例题

凡有所学&#xff0c;皆成性格。 凡有所学&#xff0c;皆成性格。 目录&#x1f352; &#x1f349;中国剩余定理维基百科<font colorgreen>:cherries:形式描述&#xff1a; <font colorred>:pear: 解法:strawberry:<font colorgreen>求解方法&#xff1a;:…

集成学习——Bagging算法和随机森林算法

1、集成学习 集成学习是将多个机器学习的算法结合起来的一种方法&#xff0c;即实现将多个弱学习器通过组成一个整体来实现强学习的效果&#xff0c;俗语里&#xff1a;三个臭皮匠赛过一个诸葛亮。 2、Bagging算法 2.1 Bootstrap自助采样 在样本集D(样本数为m)中进行有放回…

51单片机--LCD1602

LCD1602的介绍 LCD1602是一种字符型液晶显示模块&#xff0c;通常用于嵌入式系统、单片机等领域。它由LCD&#xff08;液晶显示屏&#xff09;、HD44780控制驱动主电路及其扩展驱动电路、少量电阻、电容元件等组成。 LCD1602具有以下特点和功能&#xff1a; 显示能力&#xf…

使用sftp

一、背景 新项目组前端部署方式是Build打包生成dist文件&#xff0c;交由后端部署。后来知道了vscode安装sftp前端可以自行部署。 二、实操 1、vscode安装sftp 2、 配置 ①F1 / ctrlshiftp ②命令行输入sftp -> 选择 sftp: Config ③配置信息介绍 {"name"…

liteflow overall笔记

偶然看到liteflow的介绍&#xff0c;感觉是一个local单机版本的conductor。 核心代码的注释非常好&#xff0c;在我看过的开源代码里面数一数二单元测试完备&#xff0c;要学习用法基本都可以在单元测试看到相关代码核心基于阿里的ElExpress&#xff0c;使用方式值得学习监控稍…

网络编程八股文

文章目录 tcp粘包问题&#xff1f;BIO,NIO,AIO是什么&#xff1f;零拷贝是什么&#xff1f;浏览器发出一个请求到收到响应的具体步骤&#xff1f;select, poll, epoll区别是什么&#xff1f;https是如何保证安全传输的&#xff1f;tcp的三次握手和四次挥手&#xff1a;tcp网络分…

LZ77算法理论

发布时间&#xff1a;2023-07-25 14:58:28 英文介绍文档&#xff1a;https://archive.ph/F4pg7 很短&#xff0c;看一遍10&#xff5e;20分钟应该够了。 1. 算法用到的术语&#xff1a; Input stream 要被压缩的字符序列 Character 输入流中的基本数据元素 Coding position…

RealsenseD455 + ubuntu18.04 + ROS-Melodic的使用

系统&#xff1a;Ubuntu18.04 ros: melodic 相机&#xff1a;intel RealSense D455一、安装依赖和 Realsense SDK sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-key F6E65AC044F831AC80A06380C8B3A55A6F3EFCDE || sudo apt-key adv --keyserver hkp://keyserver…

机器人导航(3):导航相关消息

文章目录 地图nav_msgs/MapMetaDatanav_msgs/OccupancyGrid 里程计坐标变换定位目标点与路径规划激光雷达相机深度图像转激光数据depthimage_to_laserscan简介depthimage_to_laserscan节点说明depthimage_to_laserscan使用 地图 地图相关的消息主要有两个: nav_msgs/MapMetaD…

【雕爷学编程】Arduino动手做(171)---micro:bit 开发板

37款传感器与模块的提法&#xff0c;在网络上广泛流传&#xff0c;其实Arduino能够兼容的传感器模块肯定是不止37种的。鉴于本人手头积累了一些传感器和模块&#xff0c;依照实践出真知&#xff08;一定要动手做&#xff09;的理念&#xff0c;以学习和交流为目的&#xff0c;这…