Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >机器学习 学习笔记(15) 低维嵌入 主成分分析

机器学习 学习笔记(15) 低维嵌入 主成分分析

作者头像
发布于 2018-09-04 02:38:23
发布于 2018-09-04 02:38:23
4.1K00
代码可运行
举报
文章被收录于专栏:WD学习记录WD学习记录
运行总次数:0
代码可运行

低维嵌入

在高维情形下出现的数据样本稀疏、距离计算困难等问题,是所有机器学习方法共同面临的严重障碍,被称为维数灾难。

缓解维数灾难的一个重要途径是降维,亦称为维数约简,即通过某种数学变换将原始高维属性空间转变为一个低维子空间。在这个子空间中样本密度大幅提高,距离计算也更为容易。

若要求原始空间中样本之间的距离在低维空间中得以保持,即多维缩放(Multiple Dimensional Scaling,MDS)。

假定m个样本在原始空间的距离矩阵为

,其第i行j列的元素

为样本

的距离。我们的目标是获得样本在

维空间的表示

,且任意两个样本在

维空间中的欧式距离等于原始空间中的距离,即

,其中B为降维后的样本内积矩阵,

,有

令降维后的样本Z被中心化,即

,显然,矩阵B的行与列之和均为0,即

,则:

其中

表示矩阵的迹,

,令:

由此可以通过降维前后保持不变的距离矩阵D求取内积矩阵B.

对矩阵B做特征值分解,

,其中

为特征值构成的对角矩阵,

,V为特征向量矩阵,假定其中有

个非零特征值,它们构成对角矩阵

,令

表示相应的特征向量矩阵,则Z可以表达为:

MDS算法描述:

输入:距离矩阵

,其元素

为样本

的距离。低维空间维数

过程:根据

分别计算出

           根据

计算矩阵B

           对矩阵B做特征值分解

           取

个最大特征值所构成的对角矩阵,

为相应的特征向量矩阵

输出:

,每行是一个样本的低维坐标

一般来说,想要获得低维子空间,最简单的是对原始高维空间进行线性变换。基于线性变换来进行降维的方法称为线性降维方法。

主成分分析

主成分分析(Principal Component Analysis,简称PCA)是最常用的一种降维方法。

对于正交属性空间中的样本点,如何用一个超平面(直线的高维推广)对所有的样本进行恰当的表达?应该具有两个性质:

  • 最近重构性:样本点到这个超平面的距离足够近
  • 最大可分性:样本点在这个超平面上的投影能尽可能分开

PCA算法描述:

输入:样本集

,低维样本空间数

过程:对所有样本进行中心化:

           计算样本的协方差矩阵

           对协方差矩阵

做特征值分解

           取最大的

个特征值所对应的特征向量

输出:投影矩阵

PCA仅需保留

与样本的均值向量即可通过简单的向量减法和矩阵-向量乘法将新样本投影至低维空间中。显然,低维空间与原始高维空间必有不同,因为对应于最小的

个特征值的特征向量被舍弃了,这是降维导致的结果,但是舍弃这部分信息往往是必要的:一方面,舍弃这部分信息之后能使样本的采样密度增大,这正是降维的重要动机;另一方面,当数据收到噪声影响时,最小的特征值所对应的特征向量往往与噪声有关,将它们舍弃能在一定程度上起到去燥的效果。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 代码来自于机器学习实战
# 2个参数:一个参数是用于进行PCA操作的数据集,第二个参数是可选参数,即应用N个特征
# 首先计算并减去原始数据集的平均值,然后计算协方差矩阵及其特征值
# 然后利用argsort函数对特征值进行从小到大排序
# 根据特征值排序的逆序就可以得到最大的N个向量
# 这些向量将构成后面对数据进行转换的矩阵
# 该矩阵则利用N个特征将原始数据转换到新空间中
# 最后原始数据被重构后返回
# 同时,降维之后的数据集也被返回
def pca(dataMat,topNfeat=9999999):
    meanVals=mean(dataMat,axis=0)
    meanRemoved=dataMat-meanVals # 去除平均值
    covMat=cov(meanRemoved,rowvar=0)
    eigVals,eigVects=linalg.eig(mat(covMat))
    eigValInd=argsort(eigVals)
    # 从大到小对N个值排序
    eigValInd=eigValInd[:-(topNfeat+1):-1]
    redEigVects=eigVects[:,eigValInd]
    # 将数据转换到新空间
    lowDDataMat=meanRemoved*redEigVects
    reconMat=(lowDDataMat*redEigVects.T)+meanVals
    return lowDDataMat,reconMat

非线性降维的一种常用方法就是基于核技巧对线性降维方法进行核化

参考:

  1. 《机器学习》
  2. 《机器学习实战》
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2018年08月15日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
《机器学习实战》(十三)—— PCA
http://blog.csdn.net/u011239443/article/details/77363466
小爷毛毛_卓寿杰
2019/02/13
5560
《机器学习实战》(十三)—— PCA
机器学习实战之主成分分析(PCA)
如果人类适应了三维,去掉一个维度,进入了二维世界,那么人类就会因为缺少了原来所适应的一个维度,而无法生存。 ——《三体》 在许多科幻电影中,有许多降维的例子。在《十万个冷笑话2》(可能只有萌新看过)中,大boss将主角降维到二维,就成了纸片人,进而失去了战斗能力;降维到一维,就变成了线条,这就是降维打击。 说直白点,降维就是将维度降低。在机器学习中,降维常常用来做数据的预处理。为什么要对数据进行降维了?那来从数据本身说起。 大数据时代,数据冗余,维度高。例如
罗罗攀
2018/07/03
3810
机器学习降维算法汇总!
最近看了一些关于降维算法的东西,本文首先给出了七种算法的一个信息表,归纳了关于每个算法可以调节的(超)参数、算法主要目的等等,然后介绍了降维的一些基本概念,包括降维是什么、为什么要降维、降维可以解决维数灾难等,然后分析可以从什么样的角度来降维,接着整理了这些算法的具体流程。
算法进阶
2023/10/23
6960
机器学习降维算法汇总!
机器学习|主成分分析(PCA)
在我们机器学习所训练的数据中,通常会存在着很多的特征,这也就意味着我们所要处理的数据的维度是很大的,由于维度大的数据处理起来非常困难,各种各样的降维算法也就随之产生了。
数据山谷
2020/07/21
1.3K0
机器学习|主成分分析(PCA)
【机器学习-无监督学习】降维与主成分分析
  在上一篇文章聚类中,我们介绍了无监督学习的重要问题之一:聚类问题,并主要讲解了k均值算法。结尾处我们提到,在解决复杂聚类问题时,第一步通常不会直接使用k均值算法,而是会先用其他手段提取数据的有用特征。对于高维复杂数据来说,其不同维度代表的特征可能存在关联,还有可能存在无意义的噪声干扰。因此,无论后续任务是有监督学习还是无监督学习,我们都希望能先从中提取出具有代表性、能最大限度保留数据本身信息的几个特征,从而降低数据维度,简化之后的分析和计算。这一过程通常称为数据降维(dimensionality reduction),同样是无监督学习中的重要问题。本文就来介绍数据降维中最经典的算法——主成分分析(principal component analysis,PCA)。
Francek Chen
2025/01/22
2920
【机器学习-无监督学习】降维与主成分分析
站在机器学习视角下来看主成分分析
主成分分析(PCA)是一种降维算法,通常用于高维数据降维减少计算量以及数据的降维可视化。在本文中,我将从机器学习的角度来探讨主成分分析的基本思想。本次只涉及简单的PCA,不包括PCA的变体,如概率PCA和内核PCA。
深度学习与Python
2019/06/18
1.3K0
机器学习降维之主成分分析(PCA)
PCA就是找出数据中最主要的方面,用数据中最重要的方面来代替原始数据。假如我们的数据集是n维的,共有m个数据(x1,x2,...,xm),我们将这m个数据从n维降到r维,希望这m个r维的数据集尽可能的代表原始数据集。
小一
2019/08/14
1.2K0
机器学习降维之主成分分析(PCA)
主成分分析到底怎么分析?
PCA(Principal Component Analysis)是一种常用的数据分析方法。PCA通过线性变换将原始数据变换为一组各维度线性无关的表示,可用于提取数据的主要特征分量,常用于高维数据的降维。 PCA的作用 你手上有一批数据,但是特征太多,你感觉数据太稀疏了 你选了一堆特征,但是感觉某些特征之间的相关性太高了,比如用户月消费预测的时候,你选了用户身高以及用户性别这两个特征,一般男生的身高比较高,你觉得特征有点冗余 你的小霸王内存不够,内存只有4个G,装不下太大的矩阵,但是你又不想减少训练数据,N
智能算法
2018/04/03
1.3K0
主成分分析到底怎么分析?
Python AI 教学 | 主成分分析(PCA)原理及其应用
假如你是一家淘宝店店主,你所负责运营的淘宝店2018年全年的流量及交易情况可以看成是一组记录的集合,其中每一天的数据是一条记录,(日期,浏览量,访客数,下单数,成交数,成交金额),这是一个六维的数据,但我们可以发现,“浏览量”和“访客数”往往具有较强的相关关系,而“下单数”和“成交数”也具有较强的相关关系,如果删除其中一个指标,不会丢失太多信息。我们知道,很多机器学习算法的复杂度和数据的维数有着密切关系,甚至与维数呈指数级关联。在实际机器学习中处理成千上万甚至几十万维的情况也并不罕见,在这种情况下,机器学习的资源消耗是不可接受的,因此我们必须对数据进行降维。但降维意味着信息的丢失,不过鉴于实际数据(如上面所述的淘宝店数据)本身常常存在的相关性,我们可以想办法在降维的同时将信息的损失尽量降低,这就是我们要介绍的降维方法——PCA(主成分分析法)。
短短的路走走停停
2019/06/03
1.9K0
主成分分析详解_pca主成分分析贡献率
上完陈恩红老师的《机器学习与知识发现》和季海波老师的《矩阵代数》两门课之后,颇有体会。最近在做主成分分析和奇异值分解方面的项目,所以记录一下心得体会。
全栈程序员站长
2022/11/16
3K0
主成分分析详解_pca主成分分析贡献率
机器学习十大经典算法之PCA主成分分析
主成分分析算法(PCA)是最常用的线性降维方法,它的目标是通过某种线性投影,将高维的数据映射到低维的空间中,并期望在所投影的维度上数据的信息量最大(方差最大),以此使用较少的数据维度,同时保留住较多的原数据点的特性。
墨明棋妙27
2022/09/23
9110
利用PCA来降维
想象这样一种场景:我们通过电视直播观看足球比赛,电视屏幕大概有200万像素,假设我们关注的是任意时刻足球的位置。在这一场景中,人们实时地将屏幕上的百万级像素转换成了三维坐标。这个过程就是一种降维(dimensionnality reduction)。
用户6021899
2019/10/09
4670
利用PCA来降维
主成分分析(PCA)原理总结
    主成分分析(Principal components analysis,以下简称PCA)是最重要的降维方法之一。在数据压缩消除冗余和数据噪音消除等领域都有广泛的应用。一般我们提到降维最容易想到的算法就是PCA,下面我们就对PCA的原理做一个总结。
刘建平Pinard
2018/08/14
1.1K0
主成分分析(PCA)原理总结
原创|一文读懂主成分分析(PCA)
主成分分析,即Principle Component Analysis (PCA),是一种传统的统计学方法,被机器学习领域引入后,通常被认为是一种特殊的非监督学习算法,其可以对复杂或多变量的数据做预处理,以减少次要变量,便于进一步使用精简后的主要变量进行数学建模和统计学模型的训练,所以PCA又被称为主变量分析。
数据派THU
2020/06/01
3.1K0
原创|一文读懂主成分分析(PCA)
《机器学习》-- 第十章 降维与度量学习
样本的特征数也称为维数(dimensionality),当维数非常大时,也就是通常所说的“维数灾难”(curse of dimensionality),具体表现在:在高维情形下,数据样本变得十分稀疏,因为此时要满足训练样本为“密采样”的总体样本数目是一个触不可及的天文数字。训练样本的稀疏使得其代表总体分布的能力大大减弱,从而消减了学习器的泛化能力;同时当维数很高时,计算距离也变得十分复杂,甚至连计算内积都不再容易,这也是为什么支持向量机(SVM)使用核函数 “低维计算,高维表达” 的原因。
fireWang
2021/03/15
1.2K0
基于 Python 的 11 种经典数据降维算法
网上关于各种降维算法的资料参差不齐,同时大部分不提供源代码。这里有个 GitHub 项目整理了使用 Python 实现了 11 种经典的数据抽取(数据降维)算法,包括:PCA、LDA、MDS、LLE、TSNE 等,并附有相关资料、展示效果;非常适合机器学习初学者和刚刚入坑数据挖掘的小伙伴。
石晓文
2019/12/02
9020
原创 | 一文读懂主成分分析
文:王佳鑫审校:陈之炎 本文约6000字,建议阅读10+分钟本文带你了解PCA的基本数学原理及工作原理。 概述 主成分分析PCA(Principal Component Analysis)是一种常用的数据分析方法。PCA通过线性变换将原始数据变换为一组各维度线性无关的表示,可用于提取数据的主要特征分量,常用于高维数据的降维。 本文用直观和易懂的方式叙述PCA的基本数学原理,不会引入严格的数学推导。希望读者在看完这篇文章后能更好地明白PCA的工作原理。 一、降维概述 1.1 数组和序列(Series)的维度
数据派THU
2022/09/01
1.1K0
原创 |  一文读懂主成分分析
基于 Python 的 11 种经典数据降维算法
网上关于各种降维算法的资料参差不齐,同时大部分不提供源代码。这里有个 GitHub 项目整理了使用 Python 实现了 11 种经典的数据抽取(数据降维)算法,包括:PCA、LDA、MDS、LLE、TSNE 等,并附有相关资料、展示效果;非常适合机器学习初学者和刚刚入坑数据挖掘的小伙伴。
Datawhale
2019/11/29
1.6K0
基于 Python 的 11 种经典数据降维算法
网上关于各种降维算法的资料参差不齐,同时大部分不提供源代码。这里有个 GitHub 项目整理了使用 Python 实现了 11 种经典的数据抽取(数据降维)算法,包括:PCA、LDA、MDS、LLE、TSNE 等,并附有相关资料、展示效果;非常适合机器学习初学者和刚刚入坑数据挖掘的小伙伴。
小白学视觉
2022/09/28
7690
PCA主成分分析
前面两节课跟大家分别介绍了聚类和关联规则,它们都属于无监督学习的典型应用,今天来介绍无监督学习的另外一种常见应用——降维!那么为什么要进行降维呢?因为高维的数据在现实中往往难以利用,而且每增加一个维度数据呈指数级增长,这可能会直接带来极大的「维数灾难」,而降维就是在高维的数据中使用降维算法把数据维度降下来,减少计算难度的一种做法。目前降维的算法有很多种,最常用的就是PCA主成分分析法。
用户7569543
2020/07/17
8860
相关推荐
《机器学习实战》(十三)—— PCA
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验