线性因子模型 - PCA的流形解释篇

news2024/9/21 20:33:30

序言

线性因子模型,作为数据降维与特征提取的重要工具,在机器学习和统计分析领域发挥着关键作用。其中,主成分分析( PCA \text{PCA} PCA)作为线性因子模型的一种经典形式,其流形解释为我们深入理解数据结构和特征变换提供了独特的视角。 PCA \text{PCA} PCA不仅能够有效降低数据的维度,还能在保留数据主要信息的同时,去除冗余和噪声,从而优化后续的数据处理和分析过程。

PCA的流形解释

  • 线性因子模型,包括 PCA \text{PCA} PCA和因子分析,可以理解为学习一个流形。

    • 我们可以将概率 PCA \text{PCA} PCA定义为高概率的薄饼状区域,即一个高斯分布,沿着某些轴非常窄,就像薄饼沿着其垂直轴非常平坦,但沿着其他轴是细长的,正如薄饼在其水平轴方向是很宽的一样。
    • 图例1解释了这种现象。
    • PCA \text{PCA} PCA可以理解为将该薄饼与更高维空间中的线性流形对准。
    • 这种解释不仅适用于传统 PCA \text{PCA} PCA,而且适用于学习矩阵 W \boldsymbol{W} W V \boldsymbol{V} V 的任何线性自编码器,其目的是使重构的 x \boldsymbol{x} x 尽可能接近于原始的 x \boldsymbol{x} x
  • 编码器表示为: h = f ( x ) = W ⊤ ( x − μ ) \boldsymbol{h}=f(\boldsymbol{x})=\boldsymbol{W}^\top(\boldsymbol{x}-\boldsymbol{\mu}) h=f(x)=W(xμ) — 公式1 \quad\textbf{---\footnotesize{公式1}} 公式1

  • 编码器计算 h \boldsymbol{h} h 的低维表示。从自编码器的角度来看, 解码器负责计算重构:
    x ^ = g ( h ) = b + V h \hat{\boldsymbol{x}}=g(\boldsymbol{h})=\boldsymbol{b}+\boldsymbol{Vh} x^=g(h)=b+Vh — 公式2 \quad\textbf{---\footnotesize{公式2}} 公式2

  • 能够最小化重构误差: E [ ∥ x − x ^ ∥ 2 ] \mathbb{E}[\Vert\boldsymbol{x}-\hat{\boldsymbol{x}}\Vert^2] E[xx^2] — 公式3 \quad\textbf{---\footnotesize{公式3}} 公式3
    的线性编码器和解码器的选择对应着 V = W , μ = b = E [ x ] \boldsymbol{V}=\boldsymbol{W},\boldsymbol{\mu}=\boldsymbol{b}=\mathbb{E}[\boldsymbol{x}] V=W,μ=b=E[x] W \boldsymbol{W} W的列形成一组正交基,这组基生成的子空间相同于协方差矩阵 C \boldsymbol{C} C
    C = E [ ( x − μ ) ( x − μ ) ⊤ ] \boldsymbol{C}=\mathbb{E}[(\boldsymbol{x}-\boldsymbol{\mu})(\boldsymbol{x}-\boldsymbol{\mu})^\top] C=E[(xμ)(xμ)] — 公式4 \quad\textbf{---\footnotesize{公式4}} 公式4
    的主特征向量所生成的空间。

  • PCA \text{PCA} PCA中, W \boldsymbol{W} W 的列是按照对应特征值(其全部是实数和非负数)幅度大小排序所对应的特征向量。

  • 我们还可以发现 C \boldsymbol{C} C 的特征值 λ i \lambda_i λi 对应了 x \boldsymbol{x} x 在特征向量 v ( i ) \boldsymbol{v}^{(i)} v(i) 方向上的方差。

    • 如果 x ∈ R D \boldsymbol{x}\in\mathbb{R}^D xRD h ∈ R d \boldsymbol{h}\in\mathbb{R}^d hRd 并且满足 d < D d \lt D d<D,则(给定上述的 W , V , μ , b \boldsymbol{W},\boldsymbol{V},\boldsymbol{\mu},\boldsymbol{b} W,V,μ,b 的情况下)最佳的重构误差是: min ⁡ E [ ∥ x − x ^ ∥ 2 ] = ∑ i = d + 1 D λ i \min\mathbb{E}[\Vert\boldsymbol{x}-\hat{\boldsymbol{x}}\Vert^2]=\sum\limits_{i=d+1}^D \lambda_i minE[xx^2]=i=d+1Dλi — 公式5 \quad\textbf{---\footnotesize{公式5}} 公式5
    • 因此,如果协方差矩阵的秩为 d d d,则特征值 λ d + 1 \lambda_{d+1} λd+1 λ D \lambda_D λD 都为 0 0 0,并且重构误差为 0 0 0
  • 此外,还可以证明上述解可以通过在给定正交矩阵 W \boldsymbol{W} W 的情况下最大化 h \boldsymbol{h} h 元素的方差而不是最小化重构误差来获得。

  • 某种程度上说,线性因子模型是最简单的生成模型和学习数据表示的最简单模型

  • 许多模型比如线性分类器和线性回归模型可以扩展到深度前馈网络,这些线性因子模型可以扩展到执行的是相同任务但具有更强大和更灵活的模型族,比如自编码器网络和深概率模型。


  • 图例1:平坦的高斯能够描述一个低维流形附近的概率密度。
    • 平坦的高斯能够描述一个低维流形附近的概率密度。
      在这里插入图片描述

    • 说明:

      • 此图表示了 “流形平面’’ 上 ‘‘馅饼’’的上半部分,并且这个平面穿过了馅饼的中心。
      • 正交于流形方向(指向平面外的箭头方向)的方差非常小,可以被视作是 ‘‘噪音’’,其他方向(平面内的箭头)的方差则很大,对应了 ‘‘信号’’ 以及低维数据的坐标系统。

总结

  • PCA \text{PCA} PCA的流形解释可以理解为将高维数据空间中的样本点映射到一个低维的线性流形上。这种映射过程通过最大化样本点在低维空间中的方差来实现,即尽可能保留数据的主要变化方向。具体来说, PCA \text{PCA} PCA通过计算数据的相关矩阵或协方差矩阵,找到数据的主要成分(主成分),这些主成分实际上是数据在高维空间中最大方差的投影方向。随后,通过将这些主成分作为新的坐标轴,原始数据被转换到一个新的低维空间中,实现了数据的降维和特征的提取。

  • PCA \text{PCA} PCA的流形解释不仅揭示了数据在低维空间中的内在结构,还为后续的数据分析和处理提供了便利。通过 PCA \text{PCA} PCA,我们可以更容易地发现数据中的隐藏模式和规律,进而在数据挖掘、机器学习、信号处理等领域发挥重要作用。

  • 总之, PCA \text{PCA} PCA的流形解释为我们提供了一个全新的视角来审视和理解数据,是线性因子模型中不可或缺的一部分。

往期内容回顾

应用数学与机器学习基础 - 无监督学习算法篇 - 主成分分析

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

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

相关文章

VBA V3高级视频行为分析系统(含源码)

项目介绍 VBA V3是一个高级的视频行为分析系统&#xff0c;旨在通过实时或离线视频流来检测和分析人类的行为模式。该系统可以识别多种行为&#xff0c;如入侵检测、跌倒检测、异常行为识别等&#xff0c;并能提供实时警报和详细的行为报告。系统的设计充分考虑了易用性和扩展…

3GPP协议入门——物理层基础(三)

1. 栅格 1.1 全局栅格 5G频段范围是0-100GHz,在这100GHz的范围内&#xff0c;划分出了3279165个栅格&#xff0c;这些栅格从0开始编号&#xff0c;一直到编号3279165&#xff0c;每一个编号都代表一个绝对的频域位置&#xff0c;这些编号就叫做NR-ARFCN。   编号和频率范围如…

汽车免拆诊断案例 | 2013款捷豹XF车偶尔无法起动

故障现象 一辆2013款捷豹XF车&#xff0c;搭载3.0 L机械增压发动机&#xff08;型号为AJ126&#xff09;&#xff0c;累计行驶里程约为20.6万km。车主反映&#xff0c;该车发动机偶尔无法起动&#xff0c;同时组合仪表上会提示很多故障信息&#xff1b;多按几次起动按钮或等待…

【GeekBand】C++设计模式笔记1_介绍

课程目标 理解松耦合设计思想掌握面向对象设计原则掌握重构技法改善设计掌握GOF核心设计模式 什么是设计模式 目标&#xff1a;复用&#xff0c;以不变应万变 GOF设计模式 从面向对象谈起 深入理解面向对象 向下&#xff1a;深入理解三大面向对象机制 封装&#xff1a;隐藏…

linux驱动开发-磁盘管理

在Linux系统中&#xff0c;mount命令是一种非常常见且有用的工具&#xff0c;用于将文件系统连接到指定的挂载点。通过使用mount命令&#xff0c;管理员可以访问和管理存储设备上的文件和目录&#xff0c;包括硬盘驱动器、CD或DVD驱动器、闪存驱动器等。 一、mount基本语法 mo…

非线性规划及其MATLAB实现

目录 引言 非线性规划的基本模型 非线性规划的求解方法 非线性规划的MATLAB实现 例子&#xff1a;多目标优化问题的非线性规划求解 表格总结&#xff1a;MATLAB常用非线性规划函数 实例&#xff1a;使用MATLAB求解非线性投资决策问题 结论 引言 非线性规划&#xff08;…

Haskell中的数据交换:通过http-conduit发送JSON请求

无论是客户端与服务器之间的通信&#xff0c;还是服务之间的API调用&#xff0c;都需要一种高效、可靠的方法来传输数据。在众多编程语言中&#xff0c;Haskell以其强大的类型系统和函数式编程特性&#xff0c;为构建可靠和高效的数据交换提供了坚实的基础。本文将介绍如何在Ha…

基于ssm+vue+uniapp的食堂线上预约点餐系统小程序

开发语言&#xff1a;Java框架&#xff1a;ssmuniappJDK版本&#xff1a;JDK1.8服务器&#xff1a;tomcat7数据库&#xff1a;mysql 5.7&#xff08;一定要5.7版本&#xff09;数据库工具&#xff1a;Navicat11开发软件&#xff1a;eclipse/myeclipse/ideaMaven包&#xff1a;M…

亚信安慧AntDB-M 只读事务提交优化

一、事务操作介绍 数据库系统一般有三种开启和提交事务方法&#xff1a; 配置autocommit1时&#xff0c;隐式开启事务&#xff0c;每执行一条DML的SQL语句&#xff0c;数据库系统会隐式的自动执行commit逻辑提交事务&#xff0c;不需要用户输入commit执行提交。 配置autocomm…

Qt第三课 ----------按钮的控件属性

作者前言 &#x1f382; ✨✨✨✨✨✨&#x1f367;&#x1f367;&#x1f367;&#x1f367;&#x1f367;&#x1f367;&#x1f367;&#x1f382; ​&#x1f382; 作者介绍&#xff1a; &#x1f382;&#x1f382; &#x1f382; &#x1f389;&#x1f389;&#x1f389…

视频推拉流/直播点播EasyDSS平台安装失败并报错“install mediaserver error”是什么原因?

TSINGSEE青犀视频推拉流/直播点播EasyDSS平台支持音视频采集、视频推拉流、播放H.265编码视频、存储、分发等视频能力服务&#xff0c;在应用场景中可实现视频直播、点播、转码、管理、录像、检索、时移回看等。此外&#xff0c;平台还支持用户自行上传视频文件&#xff0c;也可…

openeuler-无法dnf安装包问题

有个openEuler release 22.09系统机器&#xff0c;需要dnf安装些包等 [rootlydb ~]# more /etc/openEuler-release openEuler release 22.09 [rootlydb ~]# dnf -y install lrzsz OS …

【C++】Stack

个人主页~ Stack 一、Stack的介绍和使用1、stack的介绍2、stack的使用3、stack的模拟实现 二、容器适配器1、什么是适配器2、容器适配器的使用 三、deque1、原理介绍2、deque的使用3、deque的缺陷 一、Stack的介绍和使用 1、stack的介绍 stack详细解释 stack是一种容器适配器…

onlyoffice 使用记录(前端开发角度)

前端和Web文档生成器服务器交互 对于与 Web 文档生成器服务的交互&#xff0c;使用 POST 请求。 请求参数在请求正文中以 JSON 格式输入。 请求被发送到 https://documentserver/docbuilder 地址&#xff0c;其中 documentserver 是安装了 ONLYOFFICE 文档服务器的服务器的名称…

创新实验报告VC++案例开发十二生肖的俄罗斯方块智力游戏完整代码设计方案

一&#xff0e;项目名称 十二生肖俄罗斯方块 二&#xff0e;开发背景&#xff1a; 俄罗斯方块是一个很低古老的一个小游戏&#xff0c;到但今日它还有很大的魅力。 三&#xff0e;技术路线或工作原理&#xff1a; 采用的软件及开发平台 Micosoft Visual 6.0 项目的总体方…

1.安卓逆向-说明

免责声明&#xff1a;内容仅供学习参考&#xff0c;请合法利用知识&#xff0c;禁止进行违法犯罪活动&#xff01; 内容参考于&#xff1a;图灵Python学院 正常来爬一个app的数据&#xff0c;在没有加密的情况下&#xff0c;就不需要去逆向&#xff0c;app没有加密也就可以正…

SprinBoot+Vue高校就业管理系统的设计与实现

目录 1 项目介绍2 项目截图3 核心代码3.1 Controller3.2 Service3.3 Dao3.4 application.yml3.5 SpringbootApplication3.5 Vue 4 数据库表设计5 文档参考6 计算机毕设选题推荐7 源码获取 1 项目介绍 博主个人介绍&#xff1a;CSDN认证博客专家&#xff0c;CSDN平台Java领域优质…

RickdiculouslyEasy--CTF-综合靶场

废话不多说&#xff0c;一个靶机&#xff0c;好几个flag&#xff0c;开整&#xff01;&#xff01;&#xff01; 使用命令如下&#xff0c;来进行主机发现。 netdiscover -r 172.16.1.10 找到目标靶机 扫描端口 nmap 172.16.1.7 -p 1-65535 依次访问 第一个flag 9090端口 第…

使用CUBE_MX实现STM32 DMA 功能(存储器到存储器)

目录 一、使用DMA实现从存储器1发送数据到存储器2中 1.CUBE_MX配置 2.KEIL5配置 一、使用DMA实现从存储器1发送数据到存储器2中 1.CUBE_MX配置 1.在DMA选项中添加MEMORY TO MEMORY 选择数据宽度&#xff0c;并确保地址递增功能打开。 2.系统时钟72MHz 3.生成代码 2.KEIL5配…

创建Django 项目

创建一个新的 Django 项目&#xff1a; django-admin startproject myproject cd myproject 在 Django 项目中创建一个新的应用&#xff1a; python manage.py startapp myapp设置数据库 编辑 myproject/settings.py 文件中的数据库设置&#xff1a; DATABASES {default:…