降维(Dimensionality Reduction)

一、动机一:数据压缩

        这节我将开始谈论第二种类型的无监督学习问题,称为降维。有几个原因使我们可能想要做降维,其一是数据压缩,它不仅允许我们压缩数据使用较少的计算机内存或磁盘空间,而且它可以加快我们的学习算法。首先,让我们知道降维是什么:

        假设我们有两个未知的特征:x_1:长度,用厘米表示;x_2:用英寸表示同一物体的长度,所以这明显是高度冗余,因而我们希望将这个二维的数据降至一维,如下图:

        下面的这个例子中 我们要将一个三维的特征向量降至成一个二维的特征向量,过程与上面是类似的,我们将三维向量投射到一个二维的平面上

        这样的处理过程可以被用于把任何维度的数据降到任何想要的维度,例如将1000维的特征降至100维

二、动机二:数据可视化

        在许多机器学习问题中,如果我们能将数据可视化,我们便能寻找到一个更好的解决方案,降维可以帮助我们。

         假使我们有许多不同国家的数据,每一个特征向量都有50个特征(如,GDP,人均GDP,平均寿命等)。如果要将这个50维的数据可视化是不可能的,使用降维的方法将其降至2维,我们便可以将其可视化了。

这样做的问题在于降维的算法只负责减少维数,新产生的特征的意义就必须由我们自己去定义了

三、 主成分分析问题

        主成分分析(PCA)是最常见的降维算法,在PCA中我们要做的是找到一个方向向量(Vector direction),当我们把所有的数据都投射到该向量上时,我们希望投射误差尽可能地小。方向向量是一个经过原点的向量而投射误差是从特征向量向该方向向量作垂线的长度

主成分分析问题的描述:要将n维数据降至k维,目标是找到向量u^{(1)}$,$u^{(2)}$,...,$u^{(k)},使得总的投射误差最小

主成分分析与线性回归的比较:

①主成分分析最小化的是投射误差(Projected Error),而线性回归最小化的是预测误差

②线性回归的目的是预测结果,而主成分分析不作任何预测

 

左边的是线性回归的误差(垂直于横轴投影),右边是主成分分析的误差(垂直于红线投影)

        PCA将n个特征降维到k个,可以用来进行数据压缩,如果100维的向量最后可以用10维来表示,那么压缩率为90%,但PCA 要保证降维,还要保证数据的特性损失最小

        PCA技术的一大好处是对数据进行降维的处理,我们可以对新求出的主元向量的重要性进行排序,根据需要取前面最重要的部分,将后面的维数省去,可以达到降维从而简化模型或是对数据进行压缩的效果,同时最大程度的保持了原有数据的信息

        PCA技术另一个很大的优点是它是完全无参数限制的,在PCA的计算过程中完全不需要人为的设定参数或是根据任何经验模型对计算进行干预,最后的结果只与数据相关,与用户是独立的。但是这一点同时也可以看作是缺点,如果用户对观测对象有一定的先验知识,掌握了数据的一些特征却无法通过参数化等方法对处理过程 进行干预,可能会得不到预期的效果,效率也不高。

四、主成分分析算法

数据预处理

PCA 从n维减少到k维:

第一步是均值归一化,如上图所示

第二步是计算协方差矩阵(covariance matrix)Σ:

\sum=\dfrac {1}{m}\sum^{m}_{i=1}\left( x^{(i)}\right) \left( x^{(i)}\right) ^{T}

第三步是计算协方差矩阵Σ的特征向量(eigenvectors):

在 Octave 里我们可以利用奇异值分解(singular value decomposition)来求解,[U, S, V]= svd(sigma)

对于一个 n×n维度的矩阵,上式中的U是一个具有与数据之间最小投射误差的方向向量构成的矩阵。如果我们希望将数据从n维降至k维,我们只需要从U中选取前k个向量,获得一个n×k维度的矩阵,我们用U_{reduce}表示,然后通过如下计算获得要求的新特征向量z^{(i)}: z^{(i)}=U^{T}_{reduce}*x^{(i)}

其中x是n×1维的,因此结果为k×1维度

注:我们不对方差特征进行处理

五、选择主成分的数量

主要成分分析是减少投射的平均均方误差:{\dfrac {1}{m}\sum^{m}_{i=1}\left\| x^{\left( i\right) }-x^{\left( i\right) }_{approx}\right\| ^{2}}

训练集的总方差为:\dfrac {1}{m}\sum^{m}_{i=1}\left\| x^{\left( i\right) }\right\| ^{2}

我们希望在平均均方误差训练集总方差比例尽可能小的情况下选择尽可能小的k值

如果我们希望这个比例小于1%,就意味着原本数据的偏差有99%都保留下来了,如果我们能够保留95%的偏差,便能非常显著地降低模型中特征的维度了

我们可以先令k=1,然后进行主要成分分析,获得U_{reduce}z,然后计算比例是否小于1%。如果不是的话再令k=2,依此类推,直到找到可以使得比例小于1%的最小k 值(原因是各个特征之间通常情况存在某种相关性)

还有一些更好的方式来选择k,当我们在Octave中调用svd函数的时候,我们可以获得三个参数:[U, S, V] = svd(sigma)

其中的S是一个n×n的矩阵,只有对角线上有值,而其它单元都是0,我们可以使用这个矩阵来计算平均均方误差与训练集总方差的比例:

也就是:  

六、重建的压缩表示

        在前面的内容中,我们讲到利用PCA算法可以把1000维的数据压缩100维特征,所以如果这是一个压缩算法,那么按理说应该可以回到原有的高维数据的一种近似,所以给定的z^{(i)}是100维,怎么回到原来的1000维的x^{(i)}呢?

PCA算法做的事情:如图中样本x^{(1)},x^{(2)},我们把这些样本投射到图中这个一维平面,那么给定一个点z^{(1)},我们怎么能回去到这个原始的二维空间呢?x为2维,z为1维,z=U^{T}_{reduce}x,相反的方程为:x_{appox}=U_{reduce}\cdot z,x_{appox}\approx x。如图:

七、主成分分析法的应用建议

假使我们正在对一张100×100像素的图片进行某个计算机视觉的机器学习,即总共有10000 个特征

第一步:运用主成分分析将数据压缩至1000个特征

第二步:对训练集运行学习算法

第三步:在预测时采用之前学习而来的U_{reduce}将输入的特征x转换成特征 z,然后再预测

注:如果我们有交叉验证集和测试集,也采用对训练集学习而来的U_{reduce}

错误的主成分分析情况:

①将其用于减少过拟合(减少了特征的数量),这样做非常不好,不如尝试正则化处理。原因在于主要成分分析只是近似地丢弃掉一些特征,它并不考虑任何与结果变量有关的信息,因此可能会丢失非常重要的特征,然而当我们进行正则化处理时,会考虑到结果变量,不会丢掉重要的数据。

②默认地将主成分分析作为学习过程中的一部分,这虽然很多时候有效果,最好还是从所有原始特征开始,只在有必要的时候(算法运行太慢或者占用太多内存)才考虑采用主要成分分析。

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

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

相关文章

【2024美赛E题】985博士解题思路分析(持续更新中)!

【2024美赛E题】985博士解题思路分析! 加群可以享受定制等更多服务,或者搜索B站:数模洛凌寺 联络组织企鹅:936670395 以下是E题老师的解题思路(企鹅内还会随时更新文档): 2024美赛E题思路详解…

蓝桥杯2024/1/31----第十届省赛题笔记

题目要求: 1、 基本要求 1.1 使用大赛组委会提供的国信长天单片机竞赛实训平台,完成本试题的程序设计 与调试。 1.2 选手在程序设计与调试过程中,可参考组委会提供的“资源数据包”。 1.3 请注意: 程序编写、调试完成后选手…

没有外网Nginx如何配置如何开启https

判断是否支持open-ssl 在服务器执行如下命令 openssl version没有则安装open-ssl,由于服务器没有外网,可以离线安装openssl-3.0.1.tar.gz,我是在有网的服务器直接下载的,然后再上传到这台无网的服务器上 wget https://www.open…

React实现组件扩展机制

在java中,SPI机制是Java中提供的一种服务发现机制。同样,前端也很需要这种机制,这样可以做到组件可插拔,可替换,减少相互冗余。 快速使用 1.扩展点使用 通过使用Extension组件定义扩展点,通过name标记扩展…

Facebook的创新征程:社交媒体的演进之路

在当今数字化时代,社交媒体已经成为人们生活中不可或缺的一部分,而Facebook作为社交媒体领域的巨头,一直在不断创新和演进。本文将深入探讨Facebook的创新征程,追溯其社交媒体的发展历程,探讨其对用户、社会和数字时代…

巨人踏步,港口自动驾驶提速向前打开行业新空间

按照吞吐量排名,全世界最大的50个港口,中国占了29个。在中国的港口和码头上,一场进化正在发生:人在这个生态中占的比重越来越少,技术接管的要素正在越来越多。像是最具代表性的全球综合自动化程度最高的码头——上海洋…

12nm工艺,2.5GHz频率,低功耗Cortex-A72处理器培训

“ 12nm工艺,2.5GHz频率,低功耗Cortex-A72处理器培训” 本项目是真实项目实战培训,低功耗UPF设计,后端参数如下: 工艺:12nm 频率:2.5GHz 资源:2000_0000 instances 为了满足更多…

k8s二进制及负载均衡集群部署详解

目录 常见部署方式 二进制部署流程 环境准备 操作系统初始化配置 关闭防火墙 配置SELinux 关闭SWAP 根据规划设置主机名 在master添加hosts,便于主机名解析 调整内核参数 配置时间同步 部署docker引擎 在所有node节点部署docker引擎 部署etcd集群 签发…

Sentinel 知识总结

Sentinel 知识总结 Sentinel 是阿里巴巴开源的一个轻量级流量控制框架,主要用于保护系统稳定性和流畅性。它提供了多种流量控制策略,包括QPS限流、并发数限流、线程池限流等,并且支持集群限流。此外,Sentinel还提供了熔断降级、系…

51单片机编程应用(C语言):数码管

目录 1.数码管原理 一位数码管引脚定义: 四位一体数码管: 多个数码管同时显示不同数字 51单片机的数码管的原理图 51单片机实现静态显示和动态显示 静态显示: 动态显示: 1.数码管原理 一位数码管引脚定义: 数码…

Git版本管理工具(实战进阶):零基础到起飞实战项目完整篇 →Git学习一篇就够 从基本指令、到本地仓库、远程仓库、实战项目开发演练介绍超详细!

heima 李师傅最新版 Git的讲解 文章目录 Git在实战项目开发使用功能学习01.Git 初识02.Git 仓库03.Git 的三个区域04.Git 文件状态05.Git 暂存区作用06.练习-登录页面07.Git-切换版本08.删除文件09.忽略文件10.分支的概念11.练习-登录 bug 修复12.分支-合并与删除13.分支-合并与…

测试ASP.NET Core项目调用EasyCaching的基本用法(Redis)

EasyCaching中的包EasyCaching.Redis和EasyCaching.CSRedis都支持集成Redis实现缓存,前者基于StackExchange.Redis,而后者基于CSRedisCore,本文学习使用EasyCaching.Redis包连接redis服务实现缓存的基本用法。   新建WebApi项目&#xff0c…

github请求超时解决方法

github请求超时解决办法 我使用windows执行如下git命令,提示超时 git clone xxxxx命令行提示如下: Failed to connect to github.com port 443: Timed out问题排查 可我Chrome可以正常访问github甚至ChatGPT,但是为什么在命令行里面却无法访问&#…

云上自动部署丨使用 Terraform 在 AWS 上搭建 DolphinDB

HashiCorp Terraform 是一款基础架构即代码工具,旨在实现 "Write, Plan, and Create Infrastructure as Code"。它通过配置文件来描述云资源的拓扑结构,包括虚拟机、存储账户和网络接口。Terraform 几乎支持市面上所有的云服务,能够…

光学3D表面轮廓仪服务超精密抛光技术发展

随着技术的不断进步,精密制造领域对材料表面的处理要求越来越高,超精密抛光技术作为当下表面处理的尖端技术,对各种高精密产品的生产起到了至关重要的作用,已广泛应用于集成电路制造、医疗器械、航空航天、3C电子、汽车、精密模具…

面试经典 150 题 -- 滑动窗口 (总结)

面试经典150题链接 面试经典 150 题 - 学习计划 - 力扣(LeetCode)全球极客挚爱的技术成长平台 209 . 长度最小的子数组 思路 : 滑动窗口的思想,取ij0,向后遍历j,记录前缀和[l,r]为s,如果s>target,那么左端点向右移动,直到s…

2022 年全国职业院校技能大赛高职组云计算赛项试卷

【赛程名称】云计算赛项第二场-容器云 说明: 完成本任务需要两台安装了 CentOS7.9 操作系统的云主机: master 和 node。Chinaskill_Cloud_PaaS.iso 镜像包中有本次容器云部署所需的所有文件,运维所需的文件见附件。 某公司技术部产品开发上线…

HTML+CSS+JS的3D进度条

<!DOCTYPE html> <html lang"zh-CN"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>HTMLCSSJS的3D进度条</title><style>…

JavaWeb前端——HTML/CSS

HTML/CSS概述 HTML&#xff1a;学习标签&#xff0c;CSS&#xff1a;学习样式 HTML 1. 不区分大小写。 2. 属性可以使用单引号/双引号 3. 在记事本/编辑器中编写html语言&#xff0c;通过浏览器解析渲染语言 4. 语法结构松散&#xff08;编写时要尽量严谨&#xff09; VSc…

Tensorflow2.0笔记 - tensor的padding和tile

本笔记记录tensor的填充和tile操作&#xff0c;对应tf.pad和tf.tile import tensorflow as tf import numpy as nptf.__version__#pad做填充 # tf.pad( tensor,paddings, modeCONSTANT,nameNone) #1维tensor填充 tensor tf.random.uniform([5], maxval10, dtypetf.int32) pri…