[无监督学习] 10.详细图解PCA

PCA
在众多降维算法中,PCA(Principal Component Analysis,主成分分析)历史悠久,被广泛应用于各个领域。
使用 PCA 可以将相关的多变量数据以主成分简洁地表现出来。


概述
PCA 是一种用于减少数据中的变量的算法。它对变量之间存在相关性的数据很有效,是一种具有代表性的降维算法。降维是指在保留数据特征的前提下,以少量的变量表示有许多变量的数据,这有助于降低多变量数据分析的复杂度。比如在分析有 100 个变量的数据时,与其直接分析数据,不如使用 5 个变量表示数据,这样可以使后续分析比较容易。
减少数据变量的方法有两种:一种是只选择重要的变量,不使用其余变量;另一种是基于原来的变量构造新的变量。PCA 使用的是后一种方法。
也就是说,PCA 可以使用低维变量表示高维空间中的数据。这个低维的轴叫作主成分,以原来的变量的线性和的形式组成。
下面的“算法说明”部分将介绍寻找主成分的具体算法。下面结合示意图来介绍 PCA。
PCA 可发现对象数据的方向重要度。对图 3-1a 的散点图应用 PCA,可以画出正交的两条线,线的方向表示数据的方向,长度表示重要度。方向由构成新变量时对象数据变量的权重决定,而重要度与变量的偏差有关。在每个数据点取相同值的变量并不重要,但是在每个数据点取不同值的变量能很好地体现数据整体的特点。
图 3-1b 是以这两条线为新轴对原始数据进行变换后得到的图形,变换后的数据称为主成分得分。按主成分轴的重要度的值从高到低排序,依次称它们为第一主成分、第二主成分。从转换后的图来看,第一主成分方向的方差大,第二主成分方向的方差不大。通过 PCA 计算得到的第一主成分在方差最大的轴上,所以这个新的轴包含了更多的原始数据的特点。

▲图 3-1 PCA 的示意图


算法说明
PCA 采用以下步骤来寻找主成分(图 3-2)。
1 计算协方差矩阵。
2 对协方差矩阵求解特征值问题,求出特征向量和特征值。
3 以数据表示各主成分方向。

▲图 3-2 PCA 的算法


特征值问题是指对 N 维方形矩阵 A,寻找使得 的 λ 和 x 的问题。求解协方差矩阵的特征值问题在数学上等同于寻找使方差最大化的正交轴的问题。
让我们观察一下式 。左边是一个矩阵和向量的乘积。举个具体的例子,将下面的向量x1、x2 与矩阵 A 相乘。

与矩阵相乘后,x1、x2 分别变换为 (4, 4) 和 (5, 2),如图 3-3 所示。像这个例子一样,矩阵可以变换向量的大小和方向,但有的向量并不能通过这种变换改变方向,这样的向量叫作 A 的特征向量。这时向量的大小在该变换下缩放的比例叫作特征值。

▲图 3-3 通过矩阵变换向量


从图 3-3 来看,以红线表示的变换后的向量 (4, 4) 与原向量在一条直线上。这就意味着乘以矩阵 A 的变换与乘以常数 4 的变换是一样的。
在 PCA 中,矩阵A 就是协方差矩阵。PCA 对协方差矩阵求解特征值问题,并计算出特征值和特征向量的几种组合。这时按特征值大小排序的特征向量分别对应于第一主成分、第二主成分……照此类推。
“概述”部分介绍的方向和重要度与特征值问题的特征向量和特征值相关。
如果我们使用针对每个主成分计算出的特征值除以特征值的总和,就能够以百分比来表示主成分的重要度,这个比例叫作贡献率,它表示每个主成分对数据的解释能力。从第一主成分开始依次相加,得到的贡献率叫作累计贡献率


示例代码
下面是对 scikit-learn 内置的鸢尾花数据使用 PCA 的示例代码,用于将 4 个特征变量变换为 2 个主成分。

from sklearn.decomposition import PCA
from sklearn.datasets import load_iris
data = load_iris() # data是Bunch对象, data.data是二维数组
n_components = 2
model = PCA(n_components=n_components)
model = model.fit(data.data)
print(model.transform(data.data)) # 变化后的数据

结果:

[[-2.68420713 0.32660731]
 [-2.71539062 -0.16955685]
 [-2.88981954 -0.13734561]
  ~ 略~
 [ 1.76404594 0.07851919]
 [ 1.90162908 0.11587675]
 [ 1.38966613 -0.28288671]]
 

详细说明
主成分的选择方法
PCA 可以将原始数据中的变量表示为新的轴的主成分。这些主成分按照贡献率大小排序,分别为第一主成分、第二主成分……照此类推。这时通过计算累计贡献率,我们可以知道使用到第几个主成分为止可以包含原始数据多少比例的信息。
图 3-4 中的横轴为主成分,纵轴为累计贡献率,其中 A 为变量之间存在相关性的数据的 PCA 结果。这时的累计贡献率分别为 0.36、0.55、0.67、0.74、0.80……当根据累计贡献率选取主成分时,我们可以像“累计贡献率在 0.7 以上→ 4 个主成分”“累计贡献率在 0.8 以上→ 5 个主成分”这样,根据基准值决定主成分的数量。

▲图 3-4 主成分在各个数据集上的累计贡献率


而 B 是对变量之间没有相关性的数据进行 PCA 的结果,从图中可以看出,各个主成分的贡献率几乎相同。可以说这样的数据不适合用 PCA 进行降维,需要考虑其他方法。

———————————————————————————————————————————

文章来源:书籍《图解机器学习算法》

作者:秋庭伸也 杉山阿圣 寺田学

出版社:人民邮电出版社

ISBN:9787115563569

本篇文章仅用于学习和研究目的,不会用于任何商业用途。引用书籍《图解机器学习算法》的内容旨在分享知识和启发思考,尊重原著作者宫崎修一和石田保辉的知识产权。如有侵权或者版权纠纷,请及时联系作者。
———————————————————————————————————————————

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

11.3 指针和函数

11.3 指针和函数 本节必须掌握的知识点: 指针作为函数的参数 数组作为函数的参数 指针作为函数的返回值 在C语言中,指针的一个重要作用就是作为函数参数使用,本节将介绍这一重要作用。 11.3.1 指针作为函数的参数 实验一百一十三&#xff…

从功能性磁共振成像(fMRI)数据重建音频

听觉是人类最重要的感官之一,它负责接收外部的听觉刺激,并将这些信息传递给大脑进行处理和理解。研究人员正致力于从神经科学和计算机科学两个领域探索人脑的听觉感知机制。一个关键目标是从人脑中解码神经信息,并重建原始的刺激。常见的大脑…

深入解析 YOLOv8 中的 `conv.py`(代码图文全解析-下)

😎 作者介绍:我是程序员行者孙,一个热爱分享技术的制能工人。计算机本硕,人工制能研究生。公众号:AI Sun,视频号:AI-行者Sun 🎈 本文专栏:本文收录于《yolov8》系列专栏&…

快速排序详讲(两种方法)

目录 原理 实现方式 正常实现 理由 先从右到左,在从左到右 先从左到右,先从右到左 挖坑法 效率 优化 测试 代码 原理 快速排序是将最左侧的数字当作关键数字,将关键数字放在对应位置,且关键数字左侧均大于它&#xff…

【深度学习】【STWave】时空图预测,车流量预测,Efficient Spectral Graph Attention Network

Spatio-Temporal meets Wavelet: Disentangled Traffic Flow Forecasting via Efficient Spectral Graph Attention Network 代码:https://github.com/LMissher/STWave 论文:https://arxiv.org/abs/2112.02740 帮助: https://docs.qq.com/s…

使用pycharm+opencv进行视频抽帧(可以用来扩充数据集)+ labelimg的使用(数据标准)

一.视频抽帧 1.新创建一个空Pycharm项目文件,命名为streach zhen 注:然后要做一个前期工作 创建opencv环境 (1)我们在这个pycharm项目的终端里面输入下面的命令: pip install opencv-python --user -i https://pypi.t…

【Kubernetes】Pod理论详解

一、Pod基础概念: Pod是kubernetes中最小的资源管理组件,Pod也是最小化运行容器化应用的资源对象。一个Pod代表着集群中运行的一个进程。kubernetes中其他大多数组件都是围绕着Pod来进行支撑和扩展Pod功能的,例如,用于管理Pod运行…

网页音频提取在线工具有哪些 网页音频提取在线工具下载

别再到处去借会员账号啦。教你一招,无视版权和地区限制,直接下载网页中的音频文件。没有复杂的操作步骤,也不用学习任何代码。只要是网页中播放的音频文件,都可以把它下载到本地保存。 一、网页音频提取在线工具有哪些 市面上的…

python的元组

元组与列表的区别 元组和列表非常相似。不同之处在于,外观上:列表是被 方括号 包裹起来的,而元组是被 圆括号 包裹起来的。本质上:列表里的元素可修改,元组里的元素是 不可以“增删改” 。 还有一个微妙的地方要注意…

网络研究观-20240601

新战争时代的商业风险 美国人已经将战争视为遥远战场上发生的事件。然而,网络空间打破了这种看法,让全球战争的真正影响来到了美国家门口。 攻击不再局限于遥远的战场,而是在最意想不到的时间和地点发动袭击。 谁将主宰第五次工业革命&…

智慧校园的机遇与挑战

随着5G、物联网、大数据等技能的日渐老练,数字化正在渗透到各行各业中,为事务立异和价值增加供给支撑。在教育职业,运用智能化体系赋能教育办理越来越受欢迎,教育信息化方针一再出台,进一步加快了智慧校园落地的脚步。…

Dijkstra求最短路篇一(全网最详细讲解两种方法,适合小白)(python,其他语言也适用)

前言: Dijkstra算法博客讲解分为两篇讲解,这两篇博客对所有有难点的问题都会讲解,小白也能很好理解。看完这两篇博客后保证收获满满。 本篇博客讲解朴素Dijkstra算法,第二篇博客讲解堆优化Dijkstra算法Dijkstra求最短路篇二(全网…

联合和枚举(自定义类型)

1.枚举(关键字:enum) 1.1枚举类型的声明 把可能的值一一列举 赋的值是可能取值 1.2枚举类型的优点 1)增加代码的可读性和可维护性 2)和#define定义的标识符比较枚举有类型检查,更加严谨 3)便于调试&a…

【C++】list的使用(下)

🔥个人主页: Forcible Bug Maker 🔥专栏: STL || C 目录 前言🔥操作list对象的接口函数(opeartions)spliceremoveremove_ifuniquemergesortreverse 结语 前言 本篇博客主要内容:STL…

智能合约引领:探索Web3的商业革新之路

随着区块链技术的迅速发展,智能合约作为其重要应用之一,正在逐步改变着商业世界的格局。Web3作为下一代互联网的代表,正引领着智能合约在商业领域的广泛应用和创新。本文将深入探讨智能合约在Web3中的作用,以及智能合约如何引领着…

「计网」网络初识

🎇个人主页:Ice_Sugar_7 🎇所属专栏:计网 🎇欢迎点赞收藏加关注哦! 网络初识 🍉IP 地址 & 端口号🍉网络协议🍌TCP/IP 网络协议 🍉封装和分用&#x1f349…

Xcode设置cocoapods库的最低兼容版本

目录 前言 1.使用cocoapods遇到的问题 2.解决办法 1.用法解释 1. config.build_settings: 2.IPHONEOS_DEPLOYMENT_TARGET 2.使用实例 3.注意事项 1.一致性 2.pod版本 前言 这篇文章主要是介绍如何设置cocoapods三方库如何设置最低兼容的版本。 1.使用cocoapods遇到的…

小红书图片视频下载利器,无水印!

在刷小红书时,总能看到一些博主发的好看的壁纸或者视频,想下载下来做头像或者设置为手机电脑的桌面。不过众所周知,直接保存的图片和视频都是有水印的,那如何去掉水印呢? 有些朋友肯定说,我知道有去水印的…

如何区分解析亚马逊网站产品搜索结果页HTM代码中广告位( Sponsored)和自然位的产品ASIN及排名

在开发亚马逊产品广告排名插件的时候需要通过页面HTML代码分别找出属于广告位和自然搜索结果的产品ASIN及排名,所以需要找到区分广告位和自然搜索结果的HTML代码属性: 所有搜索结果页的产品不管是广告位还是自然位,都包括在 标签里&#xff…

服务器数据恢复—服务器raid常见故障表现原因解决方案

RAID(磁盘阵列)是一种将多块物理硬盘整合成一个虚拟存储的技术,raid模块相当于一个存储管理的中间层,上层接收并执行操作系统及文件系统的数据读写指令,下层管理数据在各个物理硬盘上的存储及读写。相对于单独的物理硬…