当前位置: 首页 > news >正文

07无监督学习——降维

1.降维的概述

维数灾难(Curse of Dimensionality):通常是指在涉及到向量的计算的问题中,随着维数的增加,计算量呈指数倍增长的一种现象。

1.1什么是降维?

1.降维(Dimensionality Reduction)是将训练数据中的样本(实例)从高维空间转换到低维空间。

2.有很多种算法可以完成对原始数据的降维,在这些方法中,降维是通过对原始数据的线性变换实现的。

1.2为什么要降维?

1.高维数据增加了运算的难度,维度越高,算法的搜索难度。

2.高维使得学习算法的泛化能力变弱,降维能够增加数据的可读性,利于发掘数据的有意义的结构。

1.3降维的主要作用:

  • 减少冗余特征,降低数据维度

  • 数据可视化

降维的优点:

  • 通过减少特征的维数,数据集存储所需的空间也相应减少,减少了特征维数所需的计算训练时间;
  • 数据集特征的降维有助于快速可视化数据;
  • 通过处理多重共线性消除冗余特征。

降维的缺点:

  • 由于降维可能会丢失一些数据;
  • 在主成分分析(PCA)降维技术中,有时需要考虑多少主成分是难以确定的,往往使用经验法则

2.奇异值分解

奇异值分解(Singular Value Decomposition,以下简称SVD)是在机器学习领域广泛应用的算法,它不光可以用于降维算法中的特征分解,还可以用于推荐系统,以及自然语言处理等领域。是很多机器学习算法的基石。

sVD可以将一个矩阵A分解为三个矩阵的乘积:
一个正交矩阵U(orthogonal matrix),
一个对角矩阵(diagonal matrix) Σ \Sigma Σ
一个正交矩阵V的转置

分解的作用:线性变换 = 旋转 + 拉伸 +旋转

SVD分解可以将一个矩阵进行分解,对角矩阵对角线上的特征值递减存放,而且奇异值的减少特别的快,在很多情况下,前10%甚至1%的奇异值的和就占了全部的奇异值之和的99%以上的比例。

也就是说,对于奇异值,它跟我们特征分解中的特征值类似,我们也可以用最大的k 个的奇异值和对应的左右奇异向量来近似描述矩阵。

3.主成分分析

主成分分析( Principal Component Analysis,PCA )是一种降维方法,通过将一个大的特征集转换成一个较小的特征集,这个特征集仍然包含了原始数据中的大部分信息,从而降低了原始数据的维数。
减少一个数据集的特征数量自然是以牺牲准确性为代价的,但降维的诀窍是用一点准确性换取简单性。因为更小的数据集更容易探索和可视化,并且对于机器学习算法来说,分析数据会更快、更容易,而不需要处理额外的特征。

PCA识别在训练集中占最大方差量的轴。

PCA的算法两种实现方法:
(1)基于SVD分解协方差矩阵实现PCA算法

PCA 减少n维到lk维·
设有m条n维数据将原始数据按列组成n行m列矩阵X
第一步是均值归一化。我们需要计算出所有特征的均值和标准差,然后做Z值化。
第二步是计算协方差矩阵( covariance matrix )) Σ \Sigma Σ,其特征向量就是我们要求解的主成分。

(2)基于特征值分解协方差矩阵实现PCA算法

PCA减少n维到k 维:
设有m条n维数据,将原始数据按列组成n 行m列矩阵X
第一步是均值归一化。我们需要计算出所有特征的均值和标准差,然后做z值化。
第二步是计算协方差矩阵(covariance matrix)2,其特征向量就是我们要求解的主成分。特征值分解矩阵
对于矩阵A,有一组特征向量v,将这组向量进行正交化单位化,就能得到一组交单位向量。特征值分解,就是将矩阵A 分解为如下式:
A = P Σ P − 1 {\rm{A = P}}\Sigma {P^{^{ - 1}}} A=PΣP1
其中,Р是矩阵A的特征向量组成的矩阵,习则是一个对角阵,对角线上的元素就是特征值。

PCA的缺点:

PCA追求的是在降维之后能够最大化保持数据的内在信息,并通过衡量在投影方向上的数据方差的大小来衡量该方向的重要性。但是这样投影以后对数据的区分作用并不大,反而可能使得数据点揉杂在一起无法区分。
这也是PCA存在的最大一个问题,这导致使用PCA在很多情况下的分类效果并不好。

4.t-分布领域嵌入算法t-SNE(t-distributedstochastic neighbor embedding)

步骤:

  • 数据跟PCA一样在处理之前先做归一化
  • 在低维空间中计算数据所有点与某个点的相似度
  • 将其在映射在t分布函数的横轴上
  • 计算高维度与低纬度的相似度矩阵的差异,设计loss function,然后用梯度下降来优化它
http://www.lryc.cn/news/132684.html

相关文章:

  • 系列七、IOC操作bean管理(xml自动装配)
  • 01- vdom 和模板编译源码
  • C++入门知识点——解决C语言不足
  • 探秘分布式大数据:融合专业洞见,燃起趣味火花,启迪玄幻思维
  • 什么是 SPI,和API有什么区别?
  • python3 安装clickhouse_sqlalchemy(greenlet) 失败
  • 五款拿来就能用的炫酷表白代码
  • Springboot 封装整活 Mybatis 动态查询条件SQL自动组装拼接
  • 宝塔部署Java+Vue前后端分离项目经验总结
  • 【公告】停止更新
  • AutoHotKey+VSCode开发扩展推荐
  • 了解 JSON 格式
  • [RDMA] 高性能异步的消息传递和RPC :Accelio
  • typescript报错:‘name‘ was also declared here
  • 第十章:联邦学习视觉案例
  • c语言——输出一个整数的所有因数
  • mqtt学习记录
  • 爬虫逆向实战(十八)--某得科技登录
  • Java-数组
  • Dart 入门Hello world
  • HTML是什么?
  • 【UniApp开发小程序】商品详情展示+评论、评论展示、评论点赞+商品收藏【后端基于若依管理系统开发】
  • rabbitMq安装后无法启动可视化页面http://localhost:15672处理
  • 材料行业可以转IC设计后端吗?
  • vue3 基础知识
  • 【线性代数-3Blue1Brown】- 2 线性组合、张成的空间与基
  • Kafka—工作流程、如何保证消息可靠性
  • 用户参与策略:商城小程序的搭建与营销
  • 可自定义实时监控系统HertzBeat
  • 无涯教程-Perl - sysread函数