PCA算法

2023-11-04

https://www.cnblogs.com/dengdan890730/p/5495078.html

PCA算法是怎么跟协方差矩阵/特征值/特征向量勾搭起来的?

PCA, Principle Component Analysis, 主成份分析, 是使用最广泛的降维算法.
......
(关于PCA的算法步骤和应用场景随便一搜就能找到了, 所以这里就不说了. )


假如你要处理一个数据集, 数据集中的每条记录都是一个d

维列向量. 但是这个 d

太大了, 所以你希望把数据维度给降下来, 既可以去除一些冗余信息, 又可以降低处理数据时消耗的计算资源(用computation budget 来描述可能更形象).

用稍微正式点的语言描述:

  • 已知:一个数据集D
, 记录(或者样本, 或input pattern) xiD d
维列向量.目标:将每个 xD 映射到另一个 p 维空间, p<d (虽然等于也是可以的, 但没什么意义). 得到一个新的数据集 Z , 对 Z 的要求是 尽量保存D
  • 中的有效信息.

那么, 问题就来了. 如何将一个d

维向量映射成一个 p 维向量? 答案是基变换. 然而基变换方式不是唯一的, 如何确保变换是最优的? 这就由优化目标"尽量保存原数据集中的信息" 决定了: 最好的基变换能保存最多的信息. 注意了, 这里的比较都是在同一个 p 下进行的, 也就是说, 参与竞争的基集(basis set)们, 都把 d D 映射到了一个新的 p Z

.

那么, (不好意思, 又一个那么. 这不是第一个, 当然也不是最后一个. 是的, 我喜欢用这个词.), 现在面临的问题是, 如何衡量信息的多少? 我并不懂信息科学, 只知道一点, 信息在差异中存在. 如果全是相同的东西, 量再多,它的信息量也没有多少. PCA算法采用方差(variance)来度量信息量.

那么, 如何用variance来度量数据集D

包含的信息量呢? 一个基(basis)一个基地衡量. 数据集在某个基上的投影值(也是在这个基上的坐标值)越分散, 方差越大, 这个基保留的信息也就越多. 不严格的来一句, 一个基集保留下的信息量是每个基保留下的信息量的和.

基于上面的理念, 或者说假设, 我们已经有一种可以有效地找出最优基集的方法了: 贪心算法---先找出保留信息量最大的基向量, 然后是第二大的, 然后然后, 直到找满p

个基向量.

接下来, 将上面的分析用数学语言描述出来.
v

为一个用于变换的基. D 中的某一条记录 x v 上的投影长度(即坐标值)为:
proj(x,v)=vTx||v||

假如 v 为单位向量, 则:
proj(x,v)=vTx

所以, 为了方便计算, 我们对 v 有了一个约束条件: v

为单位向量. 这个太好说了, normalize 一下就行了.

于是, 整个D

v 上的投影长度可以打包表示为: Xv , 其中, X 是一个 m×d 的矩阵, 每一行是一条记录, m D 中的记录总数目. 在数据预处理时, 我们先将 X 每一列的均值变为0: 先算出每一列的均值, 得到均值向量 μ , 然后从每一条记录 xi 中减去 μ : xixiμ . 最后用这些预处理后的 xi 组成 X .
现在, 我们来计算 D v 上的信息量, 即所有数据在 v 上的投影长度的方差:
μ(X,v)=0

info(D,v)=σ2(X,v)=1mi=1m(vTxiμ)2=1m(Xv)TXv=1mvTXTXv

仔细看 XTX 这个东西, 因为做过均值化处理, 1mXTX , 成为了原数据集 D 的协方差矩阵, 用 C 表示. 所以
info(D,v)=σ2(X,v)=vTCv

这就是我们需要最大化的目标函数. 不过, 再回想一下, 我们之前为了方便计算还加了一个条件进来: v 是一个单位向量, 即 vTv=1 . 把这个条件也加到目标函数里去:
f(v)=vTCvλ(vTv1)

所以, 这才是我们最终需要优化的目标函数.
now, 求使 f(v) 最大的 v . f(v) 取得条件极值的 必要条件为:
(这个矢量函数求偏导的过程类似于神经网络BP算法求偏导过程, 以后在另一篇文章单独推导.)
fv=2Cv2λv=0

Cv=λv

所以, v C 的特征向量. 它保存的信息量为:
info(D,v)=vTCv=vTλv=λvTv=λ

于是, 奇迹就这么出现了: 信息量保存能力最大的基向量一定是D

的协方差矩阵的特征向量, 并且这个特征向量保存的信息量就是它对应的特征值.

接下来的戏码你们应该都知道了: 用单位正交阵将C

对角化( C 是对称矩阵, 天生如此);特征值降序排列, 以排名前 p

个特征值对应的特征向量作为新的基集. (这个做法看起来很自然, 但若细细思量, 会发现这一步是PCA算法里水最深的一步, 至少我现在还没真正理解为何要这么做, 听qw学长说要用什么Rayleigh商).

剩下的问题, 比如降维后损失了多少信息, 也很明白了, 就不多讲了.

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

PCA算法 的相关文章

  • 基于GRU的时间序列预测及matlab代码实现

    基于GRU的时间序列预测及matlab代码实现 时间序列预测在实际应用中非常重要 如股票市场预测 气象预报 交通流量预测等 门控循环单元 Gated Recurrent Unit GRU 是一种比较新的循环神经网络结构 具有快速训练和处理长
  • 详解“辗转相除法”(如何求最大公约数)

    本篇博客来讲一讲学习C语言过程中遇到的一种解法 辗转相除法 首先我会介绍辗转相除法的概念 然后会用一道例题进行运用 最后会进行总结 一 辗转相除法的概念 辗转相除法又称欧几里得算法辗转相除法 是指用于计算两个非负整数a b的最大公约数 应用
  • spring中bean的生命周期

    1 spring中bean的生命周期 1 概念 在spring框架中 所有的bean对象都有生命周期 就是指bean的创建 初始化 服务 销毁的一个过程 2 bean的生命周期 bean的定义 在spring中通常是通过配置文档的方式来定义

随机推荐

  • matlab里有没有大气模型,[转载]VB+ACCESS+MATLAB大气污染模型系统(毕业论文+文

    VB ACCESS MATLAB大气污染模型系统 毕业论文 文献综述 外文翻译 可执行程序 源代码 如有需要请联系 目录 中文摘要 3 英文摘要 4 第一章 模糊概念 5 1 1模糊集合论的基本原理 5 1 1 1模糊的产生 5 1 1 2
  • Google Cloud,越来越「接地气」

    在 Kurian 的带领下 谷歌云业务更加扎实了 在主力业务广告营收增长疲乏的处境下 被赋予成为下一个经济增长点的希望 受疫情的影响 谷歌不仅直接取消了 Google I O 开发者大会 将另一个同等重要的 Google Cloud Nex
  • 网络基本知识【数据传输流程】

    文章目录 一 网络基础 1 IP地址 2 子网掩码 3 MAC地址 二 网络设备及相关技术 集线器 主机 路由器 ARP缓存表 ARP寻址 交换机 路由器 路由 NAPT 三 网路数据传输流程 1 局域网传输流程 集线器 交换机 交换机 路
  • VC++判断CheckBox控件是否被勾选

    图示为CheckBox控件 控件重映射为m timed send 控件默认状态为未勾选 0 状态 所以勾选时取反即可 代码如下 void CHCCOMDlg OnTimedSend TODO Add your control notific
  • 御见安全态势感知:“哈里男孩”水坑攻击“脚本小子”

    欢迎大家前往腾讯云社区 获取更多腾讯海量技术实践干货哦 作者 cocoyan odaywang 导语 水坑攻击是一种常见的高级攻击方法 电脑管家安全感知系统最近捕获到一例 分析如下 门前大桥下 游过一群鸭 快来快来数一数 二四六七八 Duc
  • OpenCL快速入门教程

    OpenCL快速入门教程 OpenCL快速入门教程 原文地址 http opencl codeplex com wikipage title OpenCL 20Tutorials 20 201 翻译日期 2012年6月4日星期一 这是第一篇
  • web服务中API接口响应过慢问题排查

    2019独角兽企业重金招聘Python工程师标准 gt gt gt 使用Nginx uWSGI搭建web服务已经有半年时间了 最近经常会出现在某些时间段接口响应过慢的问题 一般要10几秒才能返回 有时候甚至是20 30s 这对前端APP来说
  • Activiti 工作流引擎 详解

    Activiti 工作流引擎 详解 1 Activiti工作流概述 1 1 工作流概述 1 2 工作流系统 1 3 Activiti概述 1 4 BPM 2 Activiti工作流环境搭建 3 Activiti 类 配置文件之间的关系 3
  • 操作系统——文件的基本操作

    创建文件 create系统调用 进行Create系统调用时 需要提供的几个主要参数 1 所需的外存空间大小 如 一个盘块 即1KB 2 文件存放路径 D Demo 3 文件名 这个地方默认为 新建文本文档 txt 操作系统在处理Create
  • 【华为OD机试】荒岛求生【2023 B卷

    华为OD机试 真题 点这里 华为OD机试 真题考点分类 点这里 题目描述 有一个荒岛 只有左右两个港口 只有一座桥连接这两个港口 现在有一群人需要从两个港口逃生 有的人往右逃生 有的往左逃生 如果两个人相遇 则PK 体力值大的能够打赢体力值
  • html中hover有静止的命令,我可以通过JavaScript禁用CSS:hover效果吗?

    恐怕没有一个纯JavaScript的通用解决scheme JavaScript不能closuresCSS hover状态本身 不过你可以尝试下面的替代方法 如果您不介意在HTML和CSS中进行一些操作 则无需通过JavaScript手动重置
  • linux分区方案 1t,linux CentOS WEB服务器分区方案

    分区类型 分区的实际大小 解析 SWAP分区 2G 内存为1G 一般为内存的2倍 1G 2G 最少要150 250MB boot 32M 100M 启动分区 最多只要100M左右 opt 100M 1G 附加应用程序 tmp 40M 100
  • APT组织Lazarus近期攻击变化阐述

    Lazarus是来自朝鲜的APT组织 该组织长期对韩国 美国进行渗透攻击 此外还对全球的金融机构进行攻击 堪称全球金融机构的最大威胁 下面为近半年该组织的一些最新动态以及所使用的技术手段 Manuscrypt是该组织最常用的恶意软件家族 此
  • OpenCV VideoCapture.get()参数详解

    param define cv2 VideoCapture get 0 视频文件的当前位置 播放 以毫秒为单位 cv2 VideoCapture get 1 基于以0开始的被捕获或解码的帧索引 cv2 VideoCapture get 2
  • 4个点让你彻底明白Redis的各项功能

    4个点让你彻底明白Redis的各项功能 前言 先看一下Redis是一个什么东西 官方简介解释到 Redis是一个基于BSD开源的项目 是一个把结构化的数据放在内存中的一个存储系统 你可以把它作为数据库 缓存和消息中间件来使用 同时支持str
  • SIGPIPE的设计意图

    SIGPIPE的设计意图 SIGPIPE 是为以下这种情况设计的 grep pattern lt reallyhugefile head grep可能会输出成千上万行文本 但 head 只会读取前10行然后就退出 一旦head退出 grep
  • 《Pytorch深度学习和图神经网络(卷 1)》学习笔记——第八章

    本书之后的内容与当前需求不符合不再学习 信息熵与概率的计算关系 联合熵 条件熵 交叉熵 相对熵 KL散度 JS散度 互信息 无监督学习 监督训练中 模型能根据预测结果与标签差值来计算损失 并向损失最小的方向进行收敛 无监督训练中 无法通过样
  • 如何添加PYNQ-Z2板文件到Vivado

    添加板文件到vivado 先下载pynq z2板文件 PYNQZ2板文件 含约束文件 原理图 zip 下载后将文件复制到 Vivado安装目录 2018 3 data boards board files 重启vivado 完成
  • 重磅!AI与区块链技术知识分享交流会!特邀贾志刚老师、双一流211高校研究生!

    重磅 AI与区块链技术第一次知识交流分享会即将拉开帷幕 本交流会旨在分享交流人工智能 区块链相关内容 包括基础知识分享 前沿论文分享 具体项目实战 提供一个相同领域学者 工作人员在线交流机会 更多精彩内容 尽在微信公众号 AI与区块链技术
  • PCA算法

    https www cnblogs com dengdan890730 p 5495078 html PCA算法是怎么跟协方差矩阵 特征值 特征向量勾搭起来的 PCA Principle Component Analysis 主成份分析 是