PCA算法 | 数据集特征数量太多怎么办?用这个算法对它降维打击!

PCA 实践 利用 PCA 算法对人脸数据集内所有人进行降维和特征提取 PCA原理解析+代码 数据集 实验所用到的数据集在下面的链接中, 这些数据是来自剑桥大学提供的 AT&T 人脸数据 集,有 40 个人的人脸图像, 每个人有 10 张不同光照和姿态的照片。 样例: 地址: http://www.cl.cam.ac.uk/Research/DTG/attarchive/pub/data/att_faces.tar.Z 实验内容 加载数据集,利用 PCA 算法对数... 阅读详情

本文始发于个人公众号:TechFlow,原创不易,求个关注


今天是机器学习专题的第27文章,我们一起来聊聊数据处理领域的降维(dimensionality reduction)算法。

我们都知道,图片格式当中有一种叫做svg,这种格式的图片无论我们将它放大多少倍,也不会失真更不会出现边缘模糊的情况。原因也很简单,因为这种图片是矢量图,一般的图片存储的是每一个像素点的颜色值,而在矢量图当中,我们存储的是矢量,也就是起点终点以及颜色。由于矢量图只记录起点终点,所以无论我们如何放大,图片都不会失真,而传统的图片就做不到这一点。

其实svg就相当于图片的降维,我们将上百万的像素点简化成了若干个矢量完成了图片的存储,大大减少了数据的规模。机器学习领域中的降维算法其实也是差不多的原理。


背景与原理


现在降维算法这个词已经越来越少听到了,在面试当中也很少被提及,这是有时代因素的。因为现在的计算资源以及存储资源越来越廉价了,在以前很难承担的计算量,现在变得越来越轻松。所以相对而言,降维算法没有之前热门了,也越来越少在面试当中出现。

从现状倒推回从前,我们大概可以猜到,在若干年以前,当我们面临海量无法承担的数据的时候,降维算法是多么的重要。因为,我们都知道,机器学习训练的速度和它使用的数据量有这非常密切的关系,使用10维特征和使用100维特征的模型的收敛速度至少是10倍以上的差距。那么,自然而然地我们就会想到,如果有某种方法可以将100维的数据”压缩“成10维,该有多好?

但问题来了,数据不是实体,我们真的可以随意压缩吗,这其中的原理是什么呢?

最根本的原理是既然特征可以用来训练模型,那么特征的分布和label的分布必然是有一定的内在联系的。也就是说数据并不是随意分散的,而是彼此之间有联系的。我们各种各样的压缩算法,本质上都是利用了数据之间的关联。

举个不是非常恰当,但是很直观的例子。假设说我们现在有三个特征,分别是一个人的考试成绩、智商以及努力程度。我们会很明显地发现,考试成绩和智商以及努力程度这两个特征高度相关。如果我们能够找到它们之间的关联,我们完全可以去掉考试成绩这个特征,而通过智商、努力程度和它的这种关联来推算出这个值来。当然既然是推算出来的,显然会和原本的值有一定的误差,这也是不可避免的。

从这个例子当中,我们可以明确两点,首先,压缩数据是利用的数据分布的关联或者是特性,如果是完全随机的数据是无法降维压缩的。其次,降维压缩必然会带来信息损失,也就是误差,这是不可避免的。


降维算法


降维压缩的算法有好几种,常见的有PCA、ICA和FA,下面我们来简单介绍一下。

首先是PCA,PCA的英文全称是Principal Component Analysis即主成分分析。这种方法的主要原理是对数据进行坐标变换,即将数据从原来的坐标系更换到新的坐标系。新的坐标轴是通过最大方差理论推导得到的,即新的坐标轴包含了原始数据中大部分的方差,这里的方差可以理解成信息。

ICA的英文是Independent Component Analysis即独立成分分析,在这个算法当中它假设数据是通过N个数据源生成的。假设数据是这N个数据源数据混合观察的结果。这些数据源在统计上是互相独立的,如果数据源的数目少于原始特征的数目,也可以完成降维。

最后是FA即Factor Analysis即因子分析。在因子分析当中,我们假设样本当中存在一些隐变量,我们假设样本是这些隐变量和一些噪音的线性组合。那么只要这些隐变量的数量少于原始特征的数量,我们就可以用这些隐变量来作为新的数据从而实现降维。

这三种降维算法虽然各不相同,但是核心的思路都是一致的。都是假设数据的分布满足某一种特性,通过利用这一种特性来对数据进行压缩。这其中使用范围最广的是PCA,所以我们着重来了解一下PCA的原理以及实现。


理论推导


关于PCA算法有两种通俗的解释,一种是最大方差理论,另外一种是最小化降维损失,这两个思路推导出的结果是一样的。相比之下,最大方差理论更加容易理解一些,所以我们就选择最大方差理论来做个简单的解释。

在信号系统当中,我们普遍认为信号具有较大的方差,而噪音拥有较小的方差。信噪比就是信号与噪声的方差比,这个比值越大越好,越大说明噪音越小,信号的质量越高。比如下图当中的这个数据分布,我们可以在原始数据当中找到两个正交轴,根据方差最大理论,我们会把方差大的那个轴看成是信号,方差小的看成是噪音。

根据这个思路,最好的k维特征是将n维的样本转换成k维坐标之后,拥有最大方差的k个。



协方差


到这里,我们虽然知道了要获取方差最大的方向作为新的坐标轴,但是如果我们直接去计算的话是会有问题的。最大的问题在于我们没办法选出K个来,如果只是选择类似的K个方向,这K个轴的信息都差不多,会丢失大量的信息。所以我们不仅要选择K个轴,而且要保证这K个轴尽可能线性无关。

要做到线性无关,也就是说这K个轴应该是彼此正交的。如果两个轴正交,可以进一步得到这两个轴的协方差为零。为了简化运算,我们可以先让原始数据全部减去各自特征的均值。在去除均值之后,两个特征的协方差可以表示为:

cov(a,b)=1m∑i=1maibicov(a, b) = \frac{1}{m}\sum_{i=1}^ma_i b_icov(a,b)=m1​i=1∑m​ai​bi​

两个特征正交等价于它们的协方差为0,我们假设去除了均值之后的矩阵为X,我们来写出它的协方差矩阵。


协方差矩阵


对于去除了均值的矩阵X而言,有一个性质是它的协方差矩阵Xcov=1mX⋅XTX_{cov}=\frac{1}{m}X \cdot X^TXcov​=m1​X⋅XT。我们可以来简单证明一下,假设矩阵当中只有两个特征a和b,那么我们将它按行写成矩阵:

X=[a1,a2,⋯ ,amb1,b2,⋯ ,bm]X=\left[ \begin{matrix}a_1, a_2, \cdots, a_m\\ b_1, b_2, \cdots, b_m\end{matrix} \right]X=[a1​,a2​,⋯

机器学习数据预处理——特征选择 引言   在机器学习的训练过程中,总是会碰到样本大、特征多的数据集。而这些数据集里面的数据有些是用处很小甚至完全无用的。如果一组数据中的无用数据占比较大时,一方面会使得模型的训练时间变长,另一方面模型容易出现欠拟合现象;而如果一组数据中作用较小的数据,即在训练中不能较好体现数据集中样本特征的数据,这类数据占比较大时,除了会提升模型训练的时间以外,还容易引起模型的过拟合现象。   针对这种情况,我们需要对这组数据集进行数据的预处理,其主要的方法有降噪、特征选择以及降维处理,而这次主要讲解如何进行特征选择以及特 阅读详情

相关推荐

机器学习sklearn-PCA降维算法

1 概述 1.1 什么叫“维度” 对于数组和Series来说,维度就是功能shape返回的结果,shape中返回了几个数字,就是几维。 针对每一张表,维度指的是样本的数量或特征的数量,一般无特别说明,指的都是特征的数 量。 对图像来说,维度就是图像中特征向量的数量。特征向量可以理解为是坐标轴。 **降维算法中的”降维“,指的是降低特征矩阵中特征的数量。**降维的目的是为了让算法运算更 快,效果更好,但其实还有另一种需求:数据可视化。 1.2 sklearn中的降维算法 sklearn中降维算法都被包括在模块

weixin_44376037的博客 9813

【skLearn 降维算法】PCA

文章目录降维算法 PCA一、数据维度概念二、skLearn中的降维算法三、PCA与SVD① 降维的实现步骤解析② 重要参数n_components 降维算法 PCA 一、数据维度概念 对于数组和Series来说,维度就是功能shape返回的结果,shape中返回了几个数字,就是几维。索引以外的数据,不分行列的叫一维(此时shape返回唯一的维度上的数据个数),有行列之分叫二维(shape返回行x列),也称为表。一张表最多二维,复数的表构成了更高的维度。当一个数组中存在2张3行4列的表时,shape..

懂得一千零一种,赋予你失败的方法! 2638

PCA降维原理及sklearn代码实现

PCA(Principal Component Analysis)是一种常用的数据分析方法。PCA通过线性变换将原始数据变换为一组各维度线性无关的表示,可用于提取数据的主要特征分量,常用于高维数据的降维。本文从实际问题代入探索PCA,尽量避免纯数学的推导,更简单明了地讲解PCA原理。 1.数据的向量表示及降维问题的产生 一般情况下,在数据挖掘和机器学习中,数据被表示为向量来进行处理,就拿我近期做的...

Y_hero的博客 5934

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

与特征选择类似,我们可以用不同的特征提取技术来减少数据集的特征数量。特征选择和特征提取的区别在于,当我们用诸如 逆序选择之类的特征选择算法 时,数据集的原始特征 保持不变,而当我们用 特征提取 方法时,会将数据变换 或投影到 新特征空间。在降维的背景下,我们可以 把特征提取理解为 数据压缩的一种方法,其目的是保持大部分的相关信息。在实际应用中,特征提取 不仅可以优化存储空间 或 机器学习算法 的计算效率,而且还可以 通过减少 维数 提高预测性能,尤其是当我们 处理非正则化 模型的时候。

CXDNW的博客 1995

数据降维(PCA算法在数据降维中的应用)

维度灾难 在实际问题中,我们常常会遇到采集到的数据特征数量过多的情况,甚至有时会出现训练集容量比特征数量还少的极端情况(在图片处理领域尤其常见),然而事实上,并不是采集到的每一个特征都对模型有训练意义。 维度的增加会导致相当棘手的情况出现,这通常会带来训练数据在高维空间的稀疏性质,为了获得在统计学上正确并且有可靠的结果,用来支撑这一结果所需要的数据量通常随着维数的提高而呈指数级增长。 此外,维度的增加会使模型训练的时间增加到无法忍耐的程度。 对于这样的问题,对数据进行降维将是很重要的一个手段。 主成分分析法

lxx909546478的博客 3216

elmos 524系列芯片笔记

芯片的工作工作原理:集成芯片Elmos524.03有发射回路和接收回路,手册有关的内部原理图,大致如下: 芯片会产生固有频率的电压信号,信号通过引脚DRV1、2输出给外部压电陶瓷片,产生固定频率的机械波,也就是所谓的超声波,超声波遇到障碍物时会反射,反射信号经过AINS、D引脚进入芯片,在芯片内部先后经过GAIN放大,滤波然后进入比较器,滤波后的信号(signal)同预先设定的阈值(threshold)比较产生信号输出。此信号最终会连接MCU处理器,需要重点关注。 基于这个内部的工作原

qq_38230916的博客 2483

【VeriStand】从零构建HIL测试平台:核心概念、硬件选型与实战配置指南

本文详细介绍了如何从零构建HIL测试平台,涵盖核心概念、硬件选型与实战配置指南。重点解析了VeriStand生态系统的优势,包括开箱即用特性、与LabVIEW的黄金搭档配合及Python支持。通过实战案例和硬件选型建议,帮助工程师高效搭建可靠的HIL测试平台,提升测试效率与安全性。

weixin_29250573的博客 329

【C语言项目合集】这十个入门必备练手项目,让C语言对你来说不再难学!

适合刚入门C语言的编程学习小白的十个练手项目,每个都很经典且实用,让你学完C语言不再迷茫!

kxtxdy的博客 3万+

深度学习实战12(进阶版)-利用Dewarp实现文本扭曲矫正

大家好,我是微学A1, 我们在生活中会看到一些拍摄扭曲的图片,我们在通过OCR识别的时候,因为扭曲的厉害,而无法识别,我们需要对图片进行处理。

微学AI的博客 3156

SAP 销售订单BOM使用场景简介

通常在MTO的生产场景中,我们会根据已创建的SO去展开BOM去驱动生产,如果我们生产地产品BOM是通用性的通常我们用标准BOM的方式就可以实现,但是实际在生产过程中往往不会这样,不同的客户对某些物料的规格就不相同,就会涉及产生不同的BOM,但是该客户的产品又不存在通用性,这个时候就会引入概念就是销售订单BOM,先有销售订单然后根据销售订单+行项目创建BOM。销售BOM:根据销售订单号+行项目号创建的BOM,是根据特定的销售订单或者可以理解为特定的客户创建的BOM。

我小时候很黑的博客 4216

Python爬虫实战:高效爬取中国专利数据库的完整指南

在当今信息爆炸的时代,专利数据作为技术创新的重要指标,对企业研发、市场分析和学术研究都具有极高价值。中国作为全球专利申请量最大的国家,其专利数据库包含了海量的技术创新信息。本文将详细介绍如何使用Python最新技术构建一个高效、稳定的中国专利数据库爬虫系统。中国专利数据库主要由国家知识产权局(CNIPA)维护,包含发明专利、实用新型专利和外观设计专利三大类。截至2023年,中国专利数据库已收录超过400万件发明专利和300万件实用新型专利。

2201_76125261的博客 1569

最新Python爬虫实战(入门爬虫篇)——案例1:某瓣网站Top250图片数据采集(附上完整爬虫代码)

本次案例通过Python爬虫技术实现了某瓣Top250电影封面的批量下载。代码采用模块化设计,函数实现cookies的自动解析,简化了配置流程,涵盖请求、解析、存储的完整流程。学习重点包括:抓包工具定位数据源、正则表达式匹配图片链接、模拟请求头绕过反爬机制、以及自动化文件管理。需要注意控制请求频率并遵守网站使用规范,适用于入门爬虫实践。

努力让自己发光,对的人才能迎着光而来 16万+

详解YOLOv5网络结构/数据集获取/环境搭建/训练/推理/验证/导出/部署

本文给大家带来的教程是利用YOLOv5训练自己的数据集,以及有关YOLOv5的网络结构讲解/数据集获取/环境搭建/训练/推理/验证/导出/部署相关的教程,同时通过示例的方式让大家来了解具体的操作流程,过程中还分享给大家一些好用的资源,我还对其中的参数进行了详细的讲解,通过本文大家可以成功训练自己的数据集,在开始之前给大家推荐一下我的YOLOv5专栏,本专栏包含上百种YOLOv5的改进机制以及如何撰写论文的教程,手把手教大家如何改进YOLOv5非常适合科研小白。

Snu77的博客 4897

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

上一篇: Python | 面试必问,线程与进程的区别,Python中如何创建多线程?
下一篇: 博弈论 | 详解搞定组合博弈问题的SG函数
TechFlow
博客等级 码龄7年 347粉丝 276原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值