机器学习之主成分分析(Principal Component Analysis)

news2024/11/26 18:23:40

1 主成分分析介绍

1.1 什么是主成分分析

主成分分析(Principal Component Analysis)简称PCA,是一个非监督学习的机器学习算法,主要用于数据的降维,对于高维数据,通过降维,可以发现更便于人类理解的特征。

PCA是实现数据降维的一种算法。正如其名,假设有一份数据集,每条数据的维度是D,PCA通过分析这D个维度的前K个主要特征(这K个维度在原有D维特征的基础上重新构造出来,且是全新的正交特征),将D维的数据映射到这K个主要维度上进而实现对高维数据的降维处理。 PCA算法所要达到的目标是,降维后的数据所损失的信息量应该尽可能的少,即这K个维度的选取应该尽可能的符合原始D维数据的特征。

47fce58d3d34407392859b52bd74fe45.png

 

1.2 为什么需要PCA算法

在许多领域的研究与应用中,往往需要对反映事物的多个变量进行大量的观测,收集大量数据以便进行分析寻找规律。多变量大样本无疑会为研究和应用提供了丰富的信息,但也在一定程度上增加了数据采集的工作量,更重要的是在多数情况下,许多变量之间可能存在相关性,从而增加了问题分析的复杂性,同时对分析带来不便。如果分别对每个指标进行分析,分析往往是孤立的,而不是综合的。盲目减少指标会损失很多信息,容易产生错误的结论。

因此需要找到一个合理的方法,在减少需要分析的指标同时,尽量减少原指标包含信息的损失,以达到对所收集数据进行全面分析的目的。由于各变量间存在一定的相关关系,因此有可能用较少的综合指标分别综合存在于各变量中的各类信息。主成分分析与因子分析就属于这类降维的方法。

1.3 PCA原理

降维有两种方法,一种是特征消除,另一种是特征提取

  • 特征消除:将会在直接消除那些我们觉得不重要的特征,这会使我们对视这些特征中的很多信息。
  • 特征提取:通过组合现有特征来创建新变量,可以尽量保存特征中存在的信息

PCA是一种常见的数据降维算法,PCA会将关系紧密的变量变成尽可能少的新变量,使这些新变量是两两不相关的,于是就可以用较少的综合指标分别代表存在于各个变量中的各类信息。PCA的核心思想是找到一个维数更低的仿射集,然后将所有的数据点在其上做投影,以得到新的在更低维空间中的点作为新的数据。如何选择这样的仿射集,以降维的同时不至于损失过多的信息呢?有两种思路:

  • 最近重构性:样本点到该仿射集的距离要尽量小;
  • 最大可分性:样本点到该放射集的投影要尽可能分开。        

56cb88c65f2c4613877d0197d587f7f6.png

上图所示的左图中有5个离散点,降低维度,就是需要把点映射成一条线。将其映射到右图中黑色虚线上则样本变化最大,且坐标点更分散,这条黑色虚线就是第一主成分的投影方向。

PCA是一种线性降维方法,即通过某个投影矩阵将高维空间中的原始样本点线性投影到低维空间,以达到降维的目的,线性投影就是通过矩阵变换的方式把数据映射到最合适的方向。

降维的几何意义可以理解为旋转坐标系,取前k个轴作为新特征。降维的代数意义可以理解为eq?m%5Ctimes%20n,阶的原始样本X,与eq?n%5Ctimes%20k阶的矩阵W做矩阵乘法运算eq?X%5Ctimes%20W(下面简记为XW),即得到m*k阶的低维矩阵Y,这里eq?n%5Ctimes%20k阶的矩阵W就是投影矩阵。

本次介绍从最大方差理论(最大可分性)的角度理解PCA的原理。最大方差理论主要是指投影后的样本点在投影超平面上尺量分开,即投影方差最大。其中涉及的概念如下:

1.3.1 PCA 涉及的主要问题

(1)对实对称方阵,可以正交对角化,分解为特征向量和特征值,不同特征值对应的特征向量之间止交,即线性无关。特征值表示对应的特征向量的重要程度,特征值越大,代表包含的信息量越多,特征值越小,说明其信息量越少。在等式Av=λv中v为特征向量,λ为特征值。

(2)方差相当于特征的辨识度,其值越大越好。方差很小,则意味着该特征的取值大部分相同,即该特征不带有效信息,没有区分度;方差很大,则意味着该特征带有大量信息,有区分度。

(3)协方差表示不同特征之间的相关程序,例如,考察特征x和y的协方差,如果是正值,则表明x和y正相关,即x和y的变化趋势相同,越大y越大;如果是负值,则表明x和y负相关,即x和y的变化趋势相反,x越小y越大;如果是零,则表明x和y没有关系,是相互独立的。

为计算方便,将特征去均值,设特征x的均值为eq?%5Cbar%7Bx%7D,去均值后的方差为S,特征x和特征y的协方差为cov(x,y),设样本数为m,对应的公式分别为:

974b3cba9d594fa6917d2b7a64e9d5ed.png

当cov(x,y)=0时,表示特征x和y完全独立。当有n个特征时,引用协方差矩阵表示多个特征之间的相关性,例如,有3个特征x、y、z,协方差矩阵为:

01f55611b2ec4bb89b3ad53622af2dab.png

显然,协方差矩阵是实对称矩阵,其主对角线是各个特征的方差,非对角线是特征间的协方差,根据线性代数的原理,该协方差矩阵可以正交对角化,即可以分解为特征向量和特征值,特征向量之间线性无关,特征值为正数。

1.3.2 PCA 的优化目标

(1)构造彼此线性无关的新特征。

PCA的目标之一是新特征之间线性无关,即新特征之间的协方差为0。其实质是让新特征的协方差矩阵为对角矩阵,对角线为新特征的方差,非对角线元素为0,用来表示新特征之间的协方差0,对应的特征向量正交。

基于此目标,求解投影矩阵,具体过程如下。

不考虑降维,即维度不改变的情况下,设原始矩阵X为m个样本,n维特征,转换后的新矩阵Y仍为m个样本,n维特征。

首先对X和Y去均值化,为了简便,仍用X和Y分别表示均值化的矩阵,此时X的协方差矩阵为

8a2c68c8d3ea8206c8c188c6f909b75b.jpeg

,Y的协方差矩阵为

6d21f5566a103101e51eedb7aca96402.jpeg

接着,将eq?m%5Ctimes%20n阶矩阵X变为eq?m%5Ctimes%20n阶矩阵Y,最简单的是对原始数据进行线性变换:Y=XW,其中W为投影矩阵,是一组按行组成的eq?n%5Ctimes%20n矩阵。将公式代人后可得:

d6b109440e3241bba240de3cdb990fae.png

 PCA的目标之一是新特征之间的协方差为0.即eq?C%5E%7B%27%7D为对角矩阵,根据eq?C%5E%7B%27%7D的计算公式可知,PCA的目标就转换为:计算出W,且W应使得eq?W%5E%7BT%7DCW是一个对角矩阵。因为C是一个实对称矩阵,所以可以进行特征分解,所求的W即特征向量。

(2)选取新特征。

PCA的目标之二是使最终保留的主成分,即k个新特征具有最大差异性。鉴于方差表示信息量的大小,可以将协方差矩阵C的特征值(方差)从大到小排列,并从中选取k个特征,然后将所对应的特征向量组成eq?n%5Ctimes%20k阶矩阵eq?W%5E%7B%27%7D,计算出eq?XW%5E%7B%27%7D,作为降维后的数据,此时n维数据降低到了k维。

一般而言,k值的选取有两种方法:

  • 预先设立一个國值,例如0.95,然后选取使下式成立的最小k值:(eq?%5Clambda%20_%7Bi%7D代表特征值)

b7b439deb2d8c64e4d4b922f05fb4415.jpeg

  • 通过交叉验证的方式选择较好的k值,即降维后机器学习模型的性能比较好。

 1.4 PCA 求解步骤

输入:m条样本,特征数为n的数据集,即样本数据

57494efbc139d68e28a02ae89ad55247.jpeg

降维到的目标维数为k。记样本集为矩阵X。

e5d9025bc52ad27fa6467092e16e5ebf.jpeg

其中每一行代表一个样本,每一列代表一个特征,列号表示特征的维度,共n维。

输出:降维后的样本集

6192a2e215bc0cdf01899738501878f8.jpeg

步骤如下:

第一步:对矩阵去中心化得到新矩阵X,即每一列进行零均值化,也即减去这一列的均值eq?%5Cbar%7Bx%7D_%7Bi%7D

1152f2239ee4f435e193a53f05349d1d.jpeg

所求X仍为eq?m%5Ctimes%20n阶矩阵。

 

6a4dbcee2dd536e4351cbabfd594cfcb.jpeg

第二步:计算去中心化的矩阵X的协方差矩

8a2c68c8d3ea8206c8c188c6f909b75b.jpeg

,即eq?n%5Ctimes%20n阶矩阵。

第三步:对协方差矩阵C进行特征分解,求出协方差矩阵的特征值eq?%5Clambda%20_%7Bk%7D,及对应的特征向量eq?v%20_%7Bk%7D,即

e34174ef555b6d06ba8df2bf901b560d.jpeg

第四步:将特征向量按对应特征值从左到右按列降序排列成矩阵,取前k列组成矩阵W,即eq?n%5Ctimes%20k阶矩阵。

第五步,通过eq?Y%3D%20XW计算降维到k维后的样本特征,即eq?m%5Ctimes%20k阶矩阵。

 

2 PCA优缺点

主成分分析(Principal Component Analysis,简称PCA)是一种常用的降维技术,用于将高维数据映射到低维空间。它可以帮助我们发现数据中最重要的特征,并去除其中的噪声,从而简化数据并加快机器学习算法的训练过程。以下是PCA算法的一些优缺点:

2.1 PCA算法优点:

  • 降维:PCA可以将高维数据转换为低维数据,减少数据维度,降低存储和计算开销。

  • 特征提取:PCA可以找到数据中最重要的特征(主成分),这些主成分是原始数据线性组合的结果,能够保留大部分数据的方差信息。

  • 去除噪声:PCA可以过滤掉数据中的噪声,因为噪声通常包含在数据的低方差主成分中,而PCA会保留高方差的主成分。

  • 可解释性:PCA得到的主成分是原始特征的线性组合,因此可以很好地解释数据的变化情况。

  • 数据可视化:降维后的数据可以更方便地在二维或三维空间中进行可视化展示。

2.2 PCA算法缺点:

  • 信息损失:PCA是一种无监督学习算法,它通过最大化方差来选择主成分,但在降维过程中可能会丢失一些重要信息,特别是低方差的主成分往往包含了一些有用的局部模式。

  • 非线性问题处理困难:PCA只能处理线性关系,对于非线性关系的数据降维效果不好。

  • 计算复杂性:PCA需要计算数据的协方差矩阵,其计算复杂性随数据维度的增加而增加,对于大规模数据集可能较为耗时。

  • 可能不适用于稀疏数据:PCA在处理稀疏数据时效果可能不佳,因为稀疏数据的协方差矩阵难以准确估计。

  • 主成分含义复杂:PCA得到的主成分是原始特征的线性组合,可能不易解释,特别是当数据维度较高时,主成分往往难以直观地与实际含义对应。

PCA是一种简单而有效的降维算法,在很多数据处理和特征提取的场景下都有广泛应用。然而,对于一些特定问题,可能需要考虑其他更适合的降维方法,例如流形学习等非线性降维技术。

3 主成分分析应用场景

主成分分析(Principal Component Analysis,PCA)是一种常用的降维技术,但它的应用场景不仅限于降维。PCA还可以用于数据预处理、特征提取、去噪等多个领域。以下是主成分分析算法的一些应用场景:

  • 数据降维:PCA最常见的应用场景就是将高维数据降低到低维空间。这在数据分析、可视化和机器学习中都非常有用。通过降维,可以减少计算和存储的开销,同时保留数据的主要信息。

  • 特征提取:PCA可以用于提取数据中最重要的特征。通过找到数据中的主成分,PCA可以把数据映射到一个新的低维空间,新空间中的特征通常更具代表性,有助于提高后续任务的性能。

  • 去噪:当数据中包含噪声或冗余信息时,PCA可以过滤掉低方差的主成分,从而去除部分噪声,使得数据更干净,更容易处理。

  • 数据可视化:由于PCA能够将高维数据映射到低维空间,因此它常用于数据可视化。通过将数据降维到2D或3D空间,可以更方便地进行数据可视化和分析。

  • 特征融合:在某些情况下,数据可能来自不同的特征集或数据源。PCA可以用于将这些特征进行融合,从而得到更综合、更具代表性的特征。

  • 信号处理:在信号处理领域,PCA可以用于提取信号的主要成分,去除噪声和冗余信息,从而帮助提高信号处理的准确性和效率。

  • 图像处理:在图像处理中,PCA可以用于图像压缩和特征提取。通过PCA降低图像维度,可以减少图像的存储空间和传输带宽,同时保留图像中的重要特征。

  • 数据预处理:在机器学习中,PCA常用于数据预处理的步骤,用于减少特征维度,去除冗余信息,并提高后续机器学习模型的训练效率和准确性。

主成分分析在多个领域都有广泛的应用。然而,对于某些特定问题,其他降维或特征提取方法可能更适合,因此在实际应用中,需要根据具体情况来选择合适的方法。

4 基于PCA实现对鸢尾花四维数据进行降维处理

4.1 数据集介绍

Iris 鸢尾花数据集是一个经典数据集,在统计学习和机器学习领域都经常被用作示例。数据集内包含 3 类共 150 条记录,每类各 50 个数据,每条记录都有 4 项特征:花萼长度、花萼宽度、花瓣长度、花瓣宽度,可以通过这4个特征预测鸢尾花卉属于(iris-setosa, iris-versicolour, iris-virginica)三种中的哪一品种。

数据内容:

     sepal_len  sepal_wid  petal_len  petal_wid  label
0          5.1        3.5        1.4        0.2      0
1          4.9        3.0        1.4        0.2      0
2          4.7        3.2        1.3        0.2      0
3          4.6        3.1        1.5        0.2      0
4          5.0        3.6        1.4        0.2      0
..         ...        ...        ...        ...    ...
145        6.7        3.0        5.2        2.3      2
146        6.3        2.5        5.0        1.9      2
147        6.5        3.0        5.2        2.0      2
148        6.2        3.4        5.4        2.3      2
149        5.9        3.0        5.1        1.8      2

4.2 代码实现

import matplotlib.pyplot as plt
from sklearn.datasets import load_iris
from sklearn.decomposition import PCA

iris = load_iris()  
Y = iris.target  # 数据集标签 ['setosa', 'versicolor', 'virginica'],山鸢尾、变色鸢尾、维吉尼亚鸢尾
X = iris.data  # 数据集特征 四维,花瓣的长度、宽度,花萼的长度、宽度

pca = PCA(n_components=2)  
pca = pca.fit(X) 
X_dr = pca.transform(X)


# 对三种鸢尾花分别绘图
colors = ['red', 'black', 'orange']
# iris.target_names
plt.figure() 
for i in [0, 1, 2]:
    plt.scatter(X_dr[Y == i, 0],
                X_dr[Y == i, 1],
                alpha=1,
                c=colors[i],
                label=iris.target_names[i])
plt.legend()
plt.title('PCA of IRIS dataset')
plt.show()

4.3 结果展示

b3b6028dc57c4d748016a3096509031e.png

 横坐标代表主成分1,纵坐标代表主成分2,从数据点的分布来看,混杂在一起的数据不多,数据容易进行分类。

 

 

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

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

相关文章

(css)自定义el-dialog对话框添加背景图片

(css)自定义el-dialog对话框添加背景图片 效果: // 文件管理对话框 /deep/ .el-dialog {background: transparent;background-image: url("../assets/image/file-upload-background.png");background-size: 100% 100%; } // 头部 /deep/ .el-dialog__titl…

2024考研408-操作系统 第五章-输入输出IO管理 学习笔记

文章目录 一、I/O管理概述1.1、I/O设备的概念与分类1.1.1、什么是I/O设备?1.1.2、I/O设备的分类:按照使用特性1.1.2、I/O设备的分类:按传输速率分类1.1.3、I/O设备的分类:按照信息交换的单位分类知识点回顾与重要考点 1.2、I/O控制…

【Linux】udp客户端windows版以及Tcp服务器的实现

windows版客户端更适合大多数人~ 文章目录 一. udp客户端windows版二.Tcp服务器的实现总结 一、udp客户端windows版 首先我们将上一篇文章中实现的udp大型聊天室的代码进行修改,注意我们只修改服务端代码将代码修改的很简单就好,因为我们只是做一个如何…

spring-事务

spring-事务 事务( transaction)是访问并可能操作各种数据项的一个数据库操作序列,这些操作要么全部执行,要么全部不执行,是一个不可分割的工作单位。事务由事务开始与事务结束之间执行的全部数据库操作组成,它具有ACID特性。 为了在spring中…

UE特效案例 —— 骷髅爆点

一,环境配置 创建默认地形Landscape,如给地形上材质需确定比例;添加环境主光源DirectionalLight,设置相应的强度和颜色;添加天光反射SkyLight,用于天空反射;添加指数级高度雾ExponentialHeightF…

C++笔记之循环引用与环状引用

C笔记之循环引用与环状引用 code review! 文章目录 C笔记之循环引用与环状引用1.C循环引用和环状引用描述的是同一种现象吗?2.环状引用3.环状引用现象举例——常见环状引用4.解决环状引用——使用前向声明5.环状引用现象举例——使用对象本身可能造成环状引用 1.C循环引用和…

MySQL_4

目录 一、日志 1、错误日志 2、二进制日志 2.1 介绍 2.2 格式 2.3 删除 3、查询日志 4、慢查询日志 二、主从复制 1、概述 2、原理 3、搭建 三、分库分表 1、介绍 1.1背景 1.2拆分策略 1.3垂直拆分 1.4水平拆分 1.5实现技术 2、Mycat概述 2.1 介绍 2.2 安装 2.3…

每日一题2023.7.22|链表的基本操作

链表的基本操作 题目描述 考察链表的基本操作 输入 输入数据只有一组,第一行有n1个整数,第一个整数是这行余下的整数数目n,后面是n个整数。这一行整数用来初始化列表的,并且输入的顺序与列表中的顺序相反,也就是说如果…

htmlCSS-----浮动

目录 前言: 浮动 1.浮动的效果 2.浮动的特点 3.浮动的写法 4.浮动的原理 5.浮动的作用 6.案例 7.浮动的缺陷与解决方式 浮动问题 解决方式 8.补充说明 前言: 浮动是html里面重要的一部分,前面我们学习了三种元素的类型(…

element中table的表格更新数据之后保留原来的勾选状态

reserve-selection: 仅对 typeselection 的列有效&#xff0c;类型为 Boolean&#xff0c;为 true 则会在数据更新之后保留之前选中的数据&#xff08;需指定 row-key&#xff09; <el-table ref"table" :data"DataList" :row-key"rowKey"&g…

使用rknn-toolkit2把YOLOV5部署到OK3588上

使用rknn-toolkit2把YOLOV5部署到OK3588上 虚拟环境搭建软件包安装在PC机上运行yolov5目标检测 虚拟环境搭建 首先在PC的ubuntu系统安装虚拟环境&#xff1a; 我的服务器是ubuntu18.04版本&#xff0c;所以安装python3.6 conda create -n ok3588 python3.6 需要键盘输入y&…

【博客681】k8s list机制与resourceVersion语义

k8s list机制与resourceVersion语义 K8s 架构&#xff1a;环形层次视图 对于 K8s 集群&#xff0c;从内到外的几个组件和功能&#xff1a; etcd&#xff1a;持久化 KV 存储&#xff0c;集群资源&#xff08;pods/services/networkpolicies/…&#xff09;的唯一的权威数据&…

实例023 建立字体形状窗体

实例说明 大家都见过不规则形状的窗体吧&#xff0c;那么如何制作一个文字形的窗体呢&#xff1f;文字形窗体一般应用在屏幕提示中&#xff0c;如收款机屏幕等。运行本例&#xff0c;效果如图1.23所示。 技术要点 以前&#xff0c;创建字体形窗体是一个既费时又费人力的过程&…

K8S初级入门系列之七-控制器(Job/CronJob/Daemonset)

一、前言 前一章节我们介绍了RC&#xff0c;RS控制器&#xff0c;其主要针对在线业务Pod部署&#xff0c;比如nginx&#xff0c;这些业务是需要确保7*24持续运行的&#xff0c;还有一类离线业务&#xff0c;比如定时任务&#xff0c;大数据离线计算等&#xff0c;在有任务的才需…

在命令行模式、eclipse console下执行Java程序输入中文的几种情况尝试

介绍 在命令行模式下执行Java程序&#xff0c;如果输入中文&#xff0c;经常会出现和代码中的解码字符集不匹配的情况&#xff0c;导致结果不正确。 在命令行模式下执行Java程序&#xff0c;输入中文&#xff0c;其实是用某种字符集编码成字节流&#xff0c;Java程序读取该字节…

rk3588 双HDMI冲突问题与HDMI不能热插拔问题

问题一:HDMI不能热插拔问题 现象 rk3588在开发时现在发现只能在插入HDMI时上电才能输出信号,而当开机之后,再插入HDMI显示器则无信号。 分析 通过kernel显示,在开机后,插拔HMDI是有log提示的,说明内核能够检测到HDMI的插拔动作。 首先先排查软件问题,尝试重启显示进…

ssm项目配置,不再支持源选项 5。请使用 6 或更高版本。 不再支持目标选项 1.5。请使用 1.6 或更高版本。

ssm项目启动报错&#xff1a; 不再支持源选项 5。请使用 6 或更高版本。 不再支持目标选项 1.5。请使用 1.6 或更高版本 1.模块语言级别 2.设置模块目标字节码版本 3.pom文件指定jdk版本 <properties><project.build.soutceEncoding>UTF-8</project.build.sout…

SpringBoot3自动配置流程 SPI机制 核心注解 自定义starter

1. 自动配置流程 导入starter依赖导入autoconfigure寻找类路径下 META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports文件启动&#xff0c;加载所有 自动配置类 xxxAutoConfiguration 给容器中配置功能组件组件参数绑定到 属性类中。xxxPrope…

运维高级学习---MySQL主从复制

MySQL内建的复制功能是构建大型&#xff0c;高性能应用程序的基础 通过将MySQL的某一台主机 (master)的数据复制到其他主机(slaves)上&#xff0c;并重新执行一遍来执行复制过程中一台服务器充当主服务器&#xff0c;而其他一个或多个其他服务器充当从服务器 为什么要做主从复…

用eNSP搭建一个最简单的网络系统

要求搭建如下网络系统&#xff1a; 相关知识&#xff1a; 路由器命令界面&#xff1a; 所有的设备进入后均名字为Huawai&#xff1b; < >代表了当下所在的配置模式&#xff1b; 不同模式具有不同的管理权限&#xff0c;可以完成不同的配置要求&#xff1b; 第一级模式 …