PCA和自动编码器:每个人都能理解的算法

news2024/12/27 0:46:37

一、说明

        本文的主要重点是提供主成分分析 (PCA) 和自动编码器数据转换技术的直观信息。我不打算深入研究支撑这些模型的数学理论,因为已经有大量的资源可用。

二、pca降维和自编码

2.1 pca和自编码的共同点

        自动编码器通过组合数据最重要的特征,将馈送的数据映射到低维空间。他们将原始数据编码为更紧凑的表示形式,并决定如何组合数据,因此自动编码器中的自动。这些编码特征通常称为潜在变量。

        这样做可能有用的有几个原因:

        1. 降维可以减少训练时间

        2. 使用潜在特征表示可以增强模型性能

        像机器学习中的许多概念一样,自动编码器似乎很深奥。如果您不熟悉潜在变量,则潜在变量本质上是某些数据的隐式特征。这是一个不直接观察或测量的变量。例如,幸福是一个潜在的变量。我们必须使用像问卷这样的方法来推断个人幸福的程度。

        与自动编码器模型一样,主成分分析(PCA)也被广泛用作降维技术。但是,PCA 算法映射输入数据的方式与自动编码器不同。

2.2 直觉 

        假设您有一个很棒的跑车乐高套装,您想在朋友生日时送给他们,但您拥有的盒子不够大,无法容纳所有乐高积木。与其根本不发送,不如决定打包最重要的乐高积木——对制造汽车贡献最大的积木。所以,你扔掉一些琐碎的部件,如门把手和挡风玻璃刮水器,并打包一些像车轮和框架这样的部件。然后,您将盒子运送给您的朋友。收到包裹后,您的朋友对没有说明的杂七杂八的乐高积木感到困惑。尽管如此,他们还是组装了这套设备,并能够识别出它是一辆可驾驶的车辆。它可能是沙丘越野车,赛车或轿车 - 他们不知道。

        上面的类比是有损数据压缩算法的一个例子。数据的质量没有得到完全保留。这是一种有损算法,因为一些原始数据(即乐高积木)已经丢失。虽然使用PCA和Autoencoders进行降维是有损的,但这个例子并没有完全描述这些算法——它描述了一种特征选择算法。特征选择算法会丢弃数据的某些特征并保留显著特征。选择它们保留的要素通常是出于统计原因,例如属性与目标标签之间的相关性。

三、主成分分析

        假设一年过去了,你朋友的生日又快到了。你决定给他们买另一套乐高汽车,因为他们去年告诉你他们有多喜欢他们的礼物。你也因为购买了一个太小的盒子而再次犯了错误。这一次,您认为可以通过系统地将它们切成更小的碎片来更好地利用乐高积木。乐高积木的粒度更精细,让您比上次更多地填充盒子。以前,无线电天线太高,无法放入盒子,但现在您将其切成三份,包括三部分中的两部分。当您的朋友收到邮件中的礼物时,他们会通过将某些部件粘合在一起来组装汽车。他们能够将扰流板和一些轮毂盖粘在一起,因此汽车更容易识别。接下来,我们将探讨这个类比背后的数学概念。

乐高克洛德瑟©2015 乐高/帕勒彼得·斯科夫P 1

阐述

        PCA 的工作原理是将输入数据投影到数据协方差矩阵的特征向量上。协方差矩阵量化数据的方差以及每个变量彼此之间的差异程度。特征向量只是通过线性变换保持其跨度的向量;也就是说,它们在转换之前和之后指向相同的方向。协方差矩阵将原始基向量变换为朝向每个变量之间的协方差方向。简单来说,特征向量允许我们重新构建原始数据的方向,以不同的角度查看它,而无需实际转换数据。我们本质上是在提取每个变量的分量,当我们将数据投影到这些向量上时,这些分量会导致最大的方差。然后,我们可以使用协方差矩阵的特征值选择主轴,因为它们反映了相应特征向量方向上的方差大小。

原始数据(左)第一主成分和数据(右)

        这些投影产生了一个新的空间,其中每个基向量封装了最大的方差(即,具有最大特征值的特征向量的投影具有最大的方差,第二个特征向量上的投影具有第二大方差,依此类推)。这些新的基向量被称为主分量。我们希望主成分朝最大方差方向定向,因为属性值的方差越大,预测能力越好。例如,假设您正在尝试预测给定两个属性的汽车价格:颜色和品牌。假设所有的汽车都有相同的颜色,但其中有很多品牌。在这个例子中,根据汽车的颜色(一个零方差的特征)猜测汽车的价格是不可能的。但是,如果我们考虑一个差异更大的功能——品牌——我们将能够提出更好的价格估计,因为奥迪和法拉利的价格往往高于本田和丰田。由 PCA 产生的主成分是输入变量的线性组合——就像粘合的乐高积木是原始积木的线性组合一样。这些主成分的线性性质也使我们能够解释转换后的数据。

数据预测到第一主成分(来源:作者)

PCA 优点:

  • 降低维度
  • 解释
  • 快速运行时间

PCA 缺点:

  • 无法学习非线性特征表示

四、自动编码器

自动编码器架构

        自动编码器的事情变得有点奇怪。您不只是切割零件,而是开始完全融化、拉长和弯曲乐高积木,以便最终的零件代表汽车最重要的特征,但又符合盒子的限制。这样做不仅可以让您在盒子中放入更多乐高积木,还可以创建自定义积木。这很好,但是您的好友不知道包裹到达时如何处理。对他们来说,它看起来像一堆随机操纵的乐高积木。事实上,这些部件是如此不同,以至于您需要在几辆车上重复这个过程无数次,以系统的方式将原始部件转化为可以由您的朋友组装到汽车中的部件。

阐述

        希望上面的类比有助于理解自动编码器与PCA的相似之处。在自动编码器的上下文中,您是编码器,您的朋友是解码器。您的工作是以解码器可以解释和重建的方式转换数据,并且误差最小。

        自动编码器只是一个重新利用的前馈神经网络。我不打算在这里深入研究细节,但请随时查看 Piotr Skalski 的精彩文章或深度学习书籍,以更全面地了解神经网络。

        虽然它们能够学习复杂的特征表示,但自动编码器的最大缺陷在于它们的可解释性。就像您的朋友在收到扭曲的乐高积木时毫无头绪一样,我们不可能可视化和理解非视觉数据的潜在特征。接下来,我们将研究稀疏自动编码器。

自动编码器优点

  • 能够学习非线性特征表示
  • 降低维度

自动编码器缺点

  • 训练计算成本高
  • 无法解释
  • 更复杂
  • 容易过度拟合,尽管这可以通过正则化来缓解

稀疏自动编码器

稀疏自动编码器损失函数(来源:Andrew Ng)

        人类未充分利用大脑力量的观点是基于神经科学研究的误解,该研究表明最多有1-4%的神经元在大脑中同时放电。人脑中神经元的稀疏放电可能有几个很好的进化原因。如果所有神经元同时放电,我们能够“释放大脑的真正潜力”,它可能看起来像这样。我希望你喜欢题外话。回到神经网络。大脑中突触的稀疏性可能是稀疏自动编码器的灵感来源。神经网络中的隐藏神经元学习输入数据的分层特征表示。当神经元看到它正在寻找的输入数据的特征时,我们可以认为它“放电”。原版自动编码器通过其不完整的架构(不完整意味着隐藏层包含的单元少于输入层)强制学习潜在特征。稀疏自动编码器背后的想法是,我们可以强制模型通过与架构无关的约束(稀疏性约束)来学习潜在特征表示。

        稀疏性约束是我们希望的平均隐藏层激活,通常是接近零的浮点值。稀疏性约束超高计在上面的函数中用希腊字母 rho 表示。Rho hat j 表示隐藏单元 j 的平均激活。

        我们使用KL散度将此约束强加于模型,并通过β加权。简而言之,KL 散度衡量两个分布的相异性。将此项添加到我们的损失函数中可激励模型优化参数,从而使激活值分布与稀疏性参数均匀分布之间的KL分歧最小化。

        限制接近零的激活意味着神经元只会在优化准确性最关键的时候触发。KL发散项意味着神经元也将因过于频繁地放电而受到惩罚。如果您有兴趣了解有关稀疏自动编码器的更多信息,我强烈建议您阅读本文。吴恩达的这些讲座(讲座1,讲座2)也是一个很好的资源,帮助我更好地理解了支撑自动编码器的理论。

五、结论

        在本文中,我们深入研究了PCA和自动编码器背后的概念。不幸的是,没有灵药。PCA和自动编码器模型之间的决定是间接的。在许多情况下,PCA 是优越的 - 它更快,更易于解释,并且可以像自动编码器一样降低数据的维度。如果你可以使用PCA,你应该这样做。但是,如果您处理的数据需要高度非线性的特征表示才能获得足够的性能或可视化效果,则 PCA 可能达不到要求。在这种情况下,训练自动编码器可能是值得的。再说一次,即使自动编码器产生的潜在特征提高了模型性能,这些特征的模糊性也会对知识发现构成障碍。

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

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

相关文章

VMWare虚拟机设置固定ip

1、在主机上刷新并重新获取ip 1、输入以下命令以释放原先的 ip 地址 #windows命令 ipconfig /release #linux/macos命令 sudo dhclient -r2、再输入以下命令以重新获取 ip 地址 #windows命令 windows:ipconfig /renew #linux/macos命令 sudo dhclient2、设置虚拟…

Linux 下设置开机自启动的方法

文章目录 事先准备对于普通的 Linux对于 RedHat Enterprise Linux 9 笔者的运行环境: 设置成功过的 Linux: RedHat Enterprise Linux 9 x86_64 CentOS 8 x86_64 事先准备 进行这个教程之前,必须要先安装好一个 Linux 操作系统。这个 Linux…

windows永久关闭更新

windows图形化页面做的很好,就是一直强制你更新,不管你用不用得到,而且每次更新,电脑就会变慢。看下面多少更新的功能是用不到的。 打开注册表 winr,输入regedit打开注册表 找位置 计算机\HKEY_LOCAL_MACHINE\SOFTWARE\Microso…

基于 Emscripten + WebAssembly 实现浏览器操作 Excel

一、为什么要造这个轮子 【C】使用WebAssembly在浏览器端操作Excel_wasm文件用什么打开_你的薄荷醇的博客-CSDN博客使用WebAssembly在浏览器端操作Excel_wasm文件用什么打开https://blog.csdn.net/weixin_44305576/article/details/125545900?ops_request_misc%257B%2522requ…

夜骑,需要注意些什么?

晚上骑行相较于白天骑行,存在着更多的危险和挑战。那么,在夜骑时需要注意些什么呢?接下来我将从以下几个方面进行探讨。 首先,我们需要关注夜间骑行的安全问题。由于夜间视线不好,路面状况也难以掌握,因此需…

回归预测 | MATLAB实现POA-CNN-LSTM鹈鹕算法优化卷积长短期记忆神经网络多输入单输出回归预测

回归预测 | MATLAB实现POA-CNN-LSTM鹈鹕算法优化卷积长短期记忆神经网络多输入单输出回归预测 目录 回归预测 | MATLAB实现POA-CNN-LSTM鹈鹕算法优化卷积长短期记忆神经网络多输入单输出回归预测预测效果基本介绍模型描述程序设计参考资料 预测效果 基本介绍 MATLAB实现POA-CNN…

聚观早报|iPhone 15预计9月22日上市;一加Open渲染图曝光

【聚观365】8月7日消息 iPhone 15预计9月22日上市一加Open渲染图曝光Redmi K60至尊版细节曝光小米14 Pro屏幕细节曝光vivo V3正式发布,执着自研“影像芯片” iPhone 15预计9月22日上市 上周有多位消息人士透露,多家合作的电信运营商已要求员工不要在9月…

自动驾驶传感器选型

360的场景,避免有盲区,长距离 Lidar(激光雷达) 典型特点一圈一圈的,轮廓和很高的位置精度 禾赛的机械雷达 速腾的固态雷达 固态雷达是车规级的,车规级的意思是可以装到量产车上 Radar(毫米…

Containerd的两种安装方式

1. 轻量级容器管理工具 Containerd 2. Containerd的两种安装方式 3. Containerd容器镜像管理 4. Containerd数据持久化和网络管理 操作系统环境为centos7u6 1. YUM方式安装 1.1 获取YUM源 获取阿里云YUM源 # wget -O /etc/yum.repos.d/docker-ce.repo https://mirrors.aliyun…

vsocde里面远程连接服务器报could not esatablish connection xxxx

我在vscode里面远程连接服务器编辑代码时,正常我按F1选择了服务器IP地址,然后让我选在Linux,然后我再输入服务器密码,但是当我选择Linux系统之后直接没出让我输入服务器密码的输入框,而是直接报错 could not esatablis…

node上传文件 + vue3 + elementPlus 组件封装

一、node 1.在node环境中安装multer(node.js中间件)包,用于处理 multipart/form-data 类型的表单数据 npm install --save multer 2.userRouter var express require(express); const multer require(multer) const upload multer({ dest: public/avataruplo…

Unity制作护盾——1、闪电护盾

Unity引擎制作闪电护盾效果 大家好,我是阿赵。   这期做一个闪电护盾的效果。 一、效果说明 可以改变闪电的颜色 可以改变范围 改变贴图的平铺次数,也可以做出各种不同感觉的护盾。 二、原理 这个效果看着很复杂,其实只是用了一张N…

我们来谈谈数据链路层

"啊,其实触手可及!" 谈到网络层IP,有很多说法都是说,"IP是决定到达对端主机的能力"。而在实际的网络世界中,在各个节点路由器上,游走的报文也是IP报文! 但是&#xff0c…

C++入门之stl六大组件--List源码深度剖析及模拟实现

文章目录 前言 一、List源码阅读 二、List常用接口模拟实现 1.定义一个list节点 2.实现一个迭代器 2.2const迭代器 3.定义一个链表,以及实现链表的常用接口 三、List和Vector 总结 前言 本文中出现的模拟实现经过本地vs测试无误,文件已上传gite…

AI大模型来袭,智能客服变天?

配图来自Canva可画 自ChatGPT爆火“出圈”之后,国内外就掀起了一波AI大模型风潮。越来越多的企业都开始布局AI大模型领域,其中不少企业已经推出了自家的AI大模型产品,试图在这股AI浪潮中拔得头筹。而在众多AI大模型中,既有通用大…

Python爬虫如何更换ip防封

作为一名长期扎根在爬虫行业动态ip解决方案的技术员,我发现很多人常常在使用Python爬虫时遇到一个困扰,那就是如何更换IP地址。别担心,今天我就来教你如何在Python爬虫中更换IP,让你的爬虫不再受到IP封锁的困扰。废话不多说&#…

LVS负载均衡(DR)

文章目录 LVS-DR模式配置原理注DR配置添加VIP下载ipvsadm在DR上管理LVS Real-Server RS配置绑定VIP到环回网卡添加访问VIP的路由配置ARP抑制测试: LVS-DR模式配置 原理 当客户端发起请求后由DR处理,通过算法将流量转发至Real-Server中的某一个处理。然后…

8.16CAS

1.CAS 2. 原子类的原理 3.原子类的使用 import java.util.concurrent.atomic.AtomicInteger;public class Test {public static AtomicInteger atomicInteger new AtomicInteger();public static void main(String[] args) throws InterruptedException {System.out.println(…

Python读取及生成pb文件,pb与jsonStr互转,pb与dictJson互转,打包.exe/.sh并转换,很完美跨平台

Python读取及生成pb文件,pb与jsonStr互转,pb与dictJson互转,打包.exe/.sh并转换,很完美跨平台 1. 效果图2. 命令行:proto文件转.class(绝对路径或相对路径)3. 序列化、反序列化api4. pb转json&a…

搭建MyBatis开发环境

hi,大家好,今天来学习一下MyBatis的相关知识 文章目录 🧊1.MyBatis定义🧊2.为什么要学习MyBatis🧊3.搭建MyBatis开发环境🍐3.1前置工作--创建数据库和表🍐3.2在新项目中添加MyBatis的框架🍐3.3设置MyBatis…