机器学习——降维算法PCA和SVD(sklearn)

目录

一、基础认识

1. 介绍

2. 认识 “ 维度 ”

(1)数组和Series

(2)DataFrame 表

(3)图像

3. 降维思想

4. 降维步骤

二、降维算法(PCA)

1. PCA实现

(1)PCA参数

(2)PCA属性

(3)PCA接口

2. PCA中的SVD

3. 训练流程

4. 补充

三、学习中产生的疑问,及文心一言回答

1. PCA中的components_属性

一、基础认识

1. 介绍

        与特征选择类似,我们可以 用不同的特征提取技术来减少数据集的特征数量。特征选择和特征提取的区别在于,当我们用诸如 逆序选择之类的特征选择算法 时,数据集的原始特征 保持不变,而当我们用 特征提取 方法时,会将数据变换 或投影到 新特征空间。在降维的背景下,我们可以 把特征提取理解为 数据压缩的一种方法,其目的是 保持大部分的相关信息

        在实际应用中,特征提取 不仅可以优化存储空间 或 机器学习算法 的计算效率,而且还可以 通过减少 维数 提高预测性能,尤其是当我们 处理非正则化 模型的时候。

2. 认识 “ 维度 ”

(1)数组和Series

        对于 数组 和 Series来说,维度就是功能shape返回的结果,shape中 返回了 几个数字,就是几维。

(2)DataFrame 表

        数组中的 每一张表,都可以是 一个特征矩阵 或 一个 DataFrame,表中 行是 样本,列 是特征。针对每一张表,维度 指的是 样本的数量 或 特征的数量,一般无特别说明,指的都是特征的数量。除了索引之外,一个特征是一维,两个特征是二维,n 个特征是 n维。

(3)图像

        对图像 来说,维度就是图像中特征向量的数量。特征向量可以理解为是 坐标轴,一个特征向量定义一条直线,是 一维,两个相互垂直的特征向量定义一个 平面,即一个直角坐标系,就是二维,三个相互垂直的特征向量定义一个空间,即一个立体直角坐标系,就是三维。三个以上的特征向量相互垂直,定义人眼无法看见,也无法想象的高维空间。

        降维算法中的 “ 降维 ”,指的是 降低 特征矩阵中 特征的 数量。

3. 降维思想

        在降维过程中,我们会 减少特征的 数量,这意味着 删除数据,数据量 变少则 表示模型 可以获取的 信息会变少,模型的表现 可能会因此 受影响。同时,在高维数据中,必然有一些无效信息(比如噪音),或者一些重复信息(比如一些特征可能会线性相关)。

        我们希望能够找出一种办法来帮助我们衡量特征上所带的信息量,让我们在降维的过程中,能够即减少特征的数量,又保留大部分有效信息

        将那些带有重复信息的特征合并,并删除那些带无效信息的特征,逐浙创造出能够代表原特征矩阵大部分信息的,特征更少的,新特征矩阵。

        现在有一组简单的数据,有特征 x1 和 x2,三个样本数据的坐标点分别为(1,1),(2,2),(3,3)。我们 可以让 x1 和 x2 分别作为 两个特征向量,很轻松地用一个 二维平面来描述 这组数据。这组数据 现在 每个特征的 均值都为 2,特征的数据一模一样,因此 方差也都为1,数据的 方差总和 是 2。

        现在我们的 目标 是:只用 一个特征向量 来描述这组数据,即将 二维数据降为 一维数据,并且尽可能地 保留信息量,即 让数据的 总方差 尽量靠近 2。        


        据图所知,我们根据 信息含量的排序,取信息含量 最大的 一个特征,可以将 x2* 删除,同时也删除图中的 x2* 特征向量,剩下的 x1* 就代表了曾经需要 两个特征来代表的 三个样本点。 通过 旋转原有 特征向量组成的 坐标轴 来找到 新特征向量 和 新坐标平面,我们 将三个样本点 的信息 压缩到了 一条直线上,实现了 二维变一维,并且尽量保留原始数据的信息。—个成功的降维,就实现了。

4. 降维步骤

(1)输入原数据,结构为(m,n)。找出原本的n个特征向量构成的n维空间V。

(2)决定降维后的特征数量:k。

(3)通过某种变化,找出n个新的特征向量,以及它们构成的新n维空间V。

(4)找出原始数据在新特征空间V中的n个新特征向量上对应的值,即“将数据映射到新空间中”。

(5)选取前k个信息量最大的特征,删掉没有被选中的特征,成功将n维空间V降为k维。

        在步骤(3)当中,我们用来找出 n 个 新特征向量,让 数据 能够 被压缩到 少数特征 上并且 总信息量 不损失太多的技术 就是 矩阵分解,PCA 和 SVD 是 两种不同的 降维算法,但他们都 遵从上面的 过程来 实现降维,只是 两种算法中 矩阵分解的方法 不同,信息量的衡 量 指标不同。

二、降维算法(PCA)

        涉及sklearn库:decomposition

1. PCA实现

        class sklearn.decomposition.PCA (n_components=None, copy=True, whiten=False, svdl solver=auto',tol=0.0,iterated_power=‘auto’,random_state=None)

(1)PCA参数

(2)PCA属性

(3)PCA接口

2. PCA中的SVD

        对于任意(m, n)的输入矩阵 A,SVD 分解 结果为:

        分解结果中 U 为 左奇异矩阵S 为 奇异值矩阵,除 主对角线上的元素外全为 0,主对角线上的每个元素都称为 奇异值,V 为右 奇异矩阵

        右奇异矩阵V有着如下性质:

        k 就是 n_components,即 我们降维后希望得到的 维度。若 X 为(m,n)的 特征矩阵,V 就是结构为(n,n)的矩阵,取这个矩阵的前 k 行(进行切片),即将 V 转换为结构为(k,n)的矩阵,与原特征矩阵 X 相乘,即可得到降维后的 特征矩阵 Xdr。

        这是说,奇异值分解 可以 不计算 协方差矩阵 等 结构复杂计算冗长的 矩阵,就直接 求出 新特征空间 和 降维后 的 特征矩阵。所以 SVD 在矩阵分解中的 过程比 PCA 简单快速。

3. 训练流程

        通过 SVD 和 PCA 的合作,sklearn 实现了一种计算更快 更简单,但效果却很好的 “ 合作降维 ”。

4. 补充

  (1)在新的特征矩阵生成之前,我们无法知晓 PCA 都建立了怎样的 新特征向量,新特征矩阵生成之后也 不具有可读性,我们 无法判断 新特征矩阵的特征 是 从原数据中的 什么特征组合 而来,新特征带有 原始数据的信息,却 已经不是 原数据上代表着 的含义了。以 PCA 为代表的 降维算法因此是 特征创造 (feature creation,或 feature construction) 的一种。

  (2)inverse_transform 并没有实现数据的 完全逆转。这是因为,在降维的时候,部分信息 已经被舍奔了,Xdr 中往往不会包含原数据 100% 的信息,所以在 逆转的时候,即 便维度升高,原数据中 已经被舍弃的信息也不可能再回来了。所以,降维 不是完全 可逆的。( PCA 可以 对噪音进行过滤)

三、学习中产生的疑问,及文心一言回答

1. PCA中的components_属性

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【深度学习】BeautyGAN: 美妆,化妆,人脸美妆

https://www.sysu-hcp.net/userfiles/files/2021/03/01/3327b564380f20c9.pdf 【深度学习】BeautyGAN: Instance-level Facial Makeup Transfer with Deep Generative Adversarial Network BeautyGAN: Instance-level Facial Makeup Transfer with Deep Generative Adversaria…

微服务设计原则——高性能:锁

文章目录 1.锁的问题2.无锁2.1 串行无锁2.2 无锁数据结构 3.减少锁竞争参考文献 1.锁的问题 高性能系统中使用锁,往往带来的坏处要大于好处。 并发编程中,锁带解决了安全问题,同时也带来了性能问题,因为锁让并发处理变成了串行操…

Linux openEuler_24.03部署MySQL_8.4.0 LTS安装实测验证安装以及测试连接全过程实操手册

Linux openEuler_24.03部署MySQL_8.4.0 LTS安装实测验证安装以及测试连接全过程实操手册 前言: 什么是 MySQL? MySQL 是一个关系型数据库管理系统,由瑞典 MySQL AB 公司开发,目前属于Oracle 公司。MySQL 是一种关系型数据库管理系统,关系型数据库将数据保存在不同的表中,…

Kafka Producer发送消息流程之消息异步发送和同步发送

文章目录 1. 异步发送2. 同步发送 1. 异步发送 Kafka默认就是异步发送,在Main线程中的多条消息,没有严格的先后顺序,Sender发送后就继续下一条,异步接受结果。 public class KafkaProducerCallbackTest {public static void mai…

JVM:JavaAgent技术

文章目录 一、Java工具的介绍二、Java Agent技术1、介绍2、静态加载模式3、动态加载模式 三、搭建java agent静态加载模式环境1、创建maven项目2、编写类和premain方法3、编写MANIFEST.MF文件4、使用maven-assembly-plugin进行打包5、创建Spring Boot应用 一、Java工具的介绍 …

C++ | Leetcode C++题解之第240题搜索二维矩阵II

题目&#xff1a; 题解&#xff1a; class Solution { public:bool searchMatrix(vector<vector<int>>& matrix, int target) {int m matrix.size(), n matrix[0].size();int x 0, y n - 1;while (x < m && y > 0) {if (matrix[x][y] targ…

HTML5大作业三农有机,农产品,农庄,农旅网站源码

文章目录 1.设计来源1.1 轮播图页面头部效果1.2 栏目列表页面效果1.3 页面底部导航效果 2.效果和源码2.1 源代码 源码下载万套模板&#xff0c;程序开发&#xff0c;在线开发&#xff0c;在线沟通 作者&#xff1a;xcLeigh 文章地址&#xff1a;https://blog.csdn.net/weixin_4…

Spring3(代理模式 Spring1案例补充 Aop 面试题)

一、代理模式 在代理模式&#xff08;Proxy Pattern&#xff09;中&#xff0c;一个类代表另一个类的功能&#xff0c;这种类型的设计模式属于结构型模式。 代理模式通过引入一个代理对象来控制对原对象的访问。代理对象在客户端和目标对象之间充当中介&#xff0c;负责将客户端…

Visual Studio 2022美化

说明&#xff1a; VS版本&#xff1a;Visual Studio Community 2022 背景美化 【扩展】【管理扩展】搜索“ClaudiaIDE”&#xff0c;【下载】&#xff0c;安装完扩展要重启VS 在wallhaven下载壁纸图片作为文本编辑器区域背景图片 【工具】【选项】搜索ClaudiaIDE&#xff…

基于python深度学习遥感影像地物分类与目标识别、分割实践技术应用

目录 专题一、深度学习发展与机器学习 专题二、深度卷积网络基本原理 专题三、TensorFlow与Keras介绍与入门 专题四、PyTorch介绍与入门 专题五、卷积神经网络实践与遥感图像场景分类 专题六、深度学习与遥感图像检测 专题七、遥感图像检测案例 专题八、深度学习与遥感…

四、GD32 MCU 常见外设介绍

系统架构 1.RCU 时钟介绍 众所周知&#xff0c;时钟是MCU能正常运行的基本条件&#xff0c;就好比心跳或脉搏&#xff0c;为所有的工作单元提供时间 基数。时钟控制单元提供了一系列频率的时钟功能&#xff0c;包括多个内部RC振荡器时钟(IRC)、一个外部 高速晶体振荡器时钟(H…

《背包乱斗》为什么好玩 苹果电脑怎么玩《背包乱斗》游戏 mac怎么玩steam windows游戏

在当今竞争激烈的游戏市场中&#xff0c;《背包乱斗》以其独特的魅力在众多作品中脱颖而出&#xff0c;吸引了大量玩家的关注和喜爱。其创新的游戏机制和不断迭代的内容&#xff0c;加之出色的视觉效果和社区建设&#xff0c;使其成为了游戏界的一股清流。 一、《背包乱斗》为…

【计算机视觉】siamfc论文复现实现目标追踪

什么是目标跟踪 使用视频序列第一帧的图像(包括bounding box的位置)&#xff0c;来找出目标出现在后序帧位置的一种方法。 什么是孪生网络结构 孪生网络结构其思想是将一个训练样本(已知类别)和一个测试样本(未知类别)输入到两个CNN(这两个CNN往往是权值共享的)中&#xff0…

jmeter部署

一、windows环境下部署 1、安装jdk并配置jdk的环境变量 (1) 安装jdk jdk下载完成后双击安装包&#xff1a;无限点击"下一步"直到完成&#xff0c;默认路径即可。 (2) jdk安装完成后配置jdk的环境变量 找到环境变量中的系统变量&#xff1a;此电脑 --> 右键属性 …

Figma 中文版指南:获取和安装汉化插件

Figma是一种主流的在线团队合作设计工具&#xff0c;也是一种基于 Web 端的设计工具。在当今的设计时代&#xff0c;Figma 的使用满足了每个人的设计需求&#xff0c;不仅可以实现在线编辑&#xff0c;还可以方便日常管理&#xff0c;有效提高工作效率。然而&#xff0c;相信很…

RPM、YUM 安装 xtrabackup 8 (mysql 热备系列一)包含rpm安装 mysql 8 配置主从

RPM安装 percona-xtrabackup-80-8.0.35-30.1.el7.x86_64.rpm 官网&#xff1a; https://www.percona.com/ 下载地址&#xff1a; https://www.percona.com/downloads wget https://downloads.percona.com/downloads/percona-distribution-mysql-ps/percona-distribution-mysq…

【Vue3】响应式数据

【Vue3】响应式数据 背景简介开发环境基本数据类型对象数据类型使用 reactive 定义对象类型响应式数据使用 ref 定义对象类型响应式数据 ref 和 reactive 的对比使用原则建议 背景 随着年龄的增长&#xff0c;很多曾经烂熟于心的技术原理已被岁月摩擦得愈发模糊起来&#xff0…

Linux系统之部署扫雷小游戏(三)

Linux系统之部署扫雷小游戏(三) 一、小游戏介绍1.1 小游戏简介1.2 项目预览二、本次实践介绍2.1 本地环境规划2.2 本次实践介绍三、检查本地环境3.1 检查系统版本3.2 检查系统内核版本3.3 检查软件源四、安装Apache24.1 安装Apache2软件4.2 启动apache2服务4.3 查看apache2服…

项目管理进阶之RACI矩阵

前言 项目管理进阶系列续新篇。 RACI&#xff1f;这个是什么矩阵&#xff0c;有什么用途&#xff1f; 在项目管理过程中&#xff0c;如Team规模超5以上时&#xff0c;则有必要采用科学的管理方式&#xff0c;满足工作需要。否则可能事倍功半。 Q&#xff1a;什么是RACI矩阵 …

【HarmonyOS】HarmonyOS NEXT学习日记:五、交互与状态管理

【HarmonyOS】HarmonyOS NEXT学习日记&#xff1a;五、交互与状态管理 在之前我们已经学习了页面布局相关的知识&#xff0c;绘制静态页面已经问题不大。那么今天来学习一下如何让页面动起来、并且结合所学完成一个代码实例。 交互 如果是为移动端开发应用&#xff0c;那么交…