降维

降维

常见的降维方法有主成分分析、线性判别分析、等距映射、局部线性嵌入、拉普拉斯特征映射、局部保留投影。

1 PCA最大方差理论

PCA属于一种线性、非监督、全局的降维算法

问题:如何定义主成分?从这种定义出发,如何设计目标函数使得降维达到提取主成分的目的?针对这个目标函数,如何对PCA问题进行求解?

PCA旨在找到数据中的主成分,并利用这些主成分表征原始数据,从而达到降维的目的。

在信号处理领域,认为信号具有较大方差,噪声具有较小方差,信号与噪声之比称为信噪比。信噪比越大意味着数据的质量越好,反之,信噪比越小意味着数据的质量越差。

引出PCA的目标,即最大化投影方差,也就是让数据在主轴上投影的方差最大。

向量内积在几何上表示为第一个向量投影到第二个向量上的长度。

x 投影后的方差就是协方差矩阵的特征值。要找到最大的方差也就是协方差矩阵最大的特征值,最佳投影方向就是最大特征值所对应的特征向量。次投影方向位于最佳投影方向的正交空间中,是第二大特征值对应的特征向量。

求解PCA的求解方法:
(1)对样本数据进行中心化处理。
(2)求样本协方差矩阵
(3)对协方差矩阵进行特征值分解,将特征值从大到小排列。
(4)取特征值前d大对应的特征向量

由于PCA是一种线性降维方法,虽然经典,但具有一定的局限性。可以通过核映射对PCA进行扩展得到核主成分分析(KPCA),也可以通过流形映射的降维方法,比如等距映射、局部线性嵌入、拉普拉斯特征映射等,对一些PCA效果不好的复杂数据集进行非线性降维操作。

2 PCA最小平方误差理论

问题:PCA求解的其实是最佳投影方向,即一条直线,这与数学中线性回归问题的目标不谋而合,能否从回归的角度定义PCA的目标并相应地求解问题?

3 线性判别分析

线性判别分析是一种有监督学习算法,同时经常被用来对数据进行降维。LDA是目前机器学习、数据挖掘领域中经典且热门的一种算法。

相比于PCA,LDA可以作为一种有监督的降维算法。在PCA中,算法没有考虑数据的标签(类别),只是把原数据映射到一些方差较大的方向上。

问题:对于具有类别标签的数据,应当如何设计目标函数使得降维的过程中不损失类别信息?在这种目标下,应当如何进行求解?

LDA的中心思想——最大化类间距离,最小化类内距离

最大化的目标对应了一个矩阵的特征值,于是LDA降维变成 了一个求矩阵特征向量的问题。投影方向就是矩阵最大特征值对应的特征向量。

只需要求样本的均值和类内方差,就可以得出最佳的投影方向w

LDA相比于PCA更善于对有类别信息的数据进行降维处理,但它对数据的分布做了一些很强的假设,例如,每个类数据都是高斯分布、各个类的协方差相等。
尽管这些假设在实际中并不一定满足,但LDA已被证明是非常有效的一种降维方法。主要是因为线性模型对于噪声的鲁棒性比较好,但由于模型简单,表达能力有一定局限性,可以通过引入核函数扩展LDA方法以处理分布较为复杂的数据。

4 线性判别分析与主成分分析

问题:LDA和PCA作为经典的降维算法,如何从应用的角度分析其原理的异同?从数学推导的角度,两种降维算法在目标函数上有何区别与联系?

从PCA和LDA两种降维方法的求解过程来看,它们确实有着很大的相似性,但对应的原理却有所区别。

首先从目标出发,PCA选择的是投影后数据方差最大的方向。由于它是无监督的,因此PCA假设方差越大,信息量越多,用主成分来表示原始数据可以去除冗余的维度,达到降维。而LDA选择的是投影后类内方差小,类间方差大的方向。其用到了类别标签信息,为了找到数据中具有判别性的维度,使得原始数据在这些方向上投影后,不同类别尽可能区分开。

从应用的角度,一个基本原则——对无监督的任务使用PCA进行降维,对有监督的则应用LDA

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/100181.html原文链接:https://javaforall.net

(0)
上一篇 2021年5月20日 上午8:00
下一篇 2021年5月20日 上午9:00


相关推荐

  • java流程图平行四边形_流程图图形标准含义[通俗易懂]

    rectangle:矩形作用:一般用作要执行的处理(process),在程序流程图中做执行框。在Axure中如果是画页面框架图,那么也可以指代一个页面。你可把页面和执行命令放在同一个流程中做说明,这个时候将两类不同的矩形做色彩区别,然后做说明就好了。roundedrectangle:圆角矩形或者扁圆作用:表示程序的开始或者结束,在程序流程图中用作为起始框或者结束框。beveledrectang…

    2022年4月9日
    207
  • Lua编辑器Scite汉化

    Lua编辑器Scite汉化Lua 编辑器 Scite 汉化是本文要介绍的内容 主要是来了解并学习 LUA 编辑器的应用 具体内容的实现来看本文详解 想要多了解 LUA 编辑器的应用 请参考 LUA 中关于文本编辑器 SciTE 配置方法 供于 luaforwindow 编译环境所需 方便使用 等同于汉化配置方案 以下 保存为 locale properties 放到 SciTE 目录

    2026年3月19日
    1
  • 20行Python代码开发植物识别 app「建议收藏」

    20行Python代码开发植物识别 app「建议收藏」这篇文章介绍如何用Python快速实现一个植物识别的app,家里养了几盆多肉还叫不上名字,正好拿来识别一下。实现这样一个app只需要20行左右的代码,先来看下效果:另外,我也开发了微信小程序版本,大

    2022年7月6日
    21
  • 使用CAShapeLayer与UIBezierPath画出想要的图形「建议收藏」

    使用CAShapeLayer与UIBezierPath画出想要的图形「建议收藏」怪哈哈,ACG游戏,ACG和谐区,足控福利,里番漫画,里番动漫,里番库,里番吧,本子库使用CAShapeLayer与UIBezierPath可以实现不在view的drawRect方法中就画出一些想要的图形步骤:1、新建UIBezierPath对象bezierPath2、新建CAShapeLayer对象caShapeLayer3、将bezierPa

    2022年8月23日
    9
  • ramdisk制作

    ramdisk制作之前写的一篇制作 initramfs 的总结是将 initramfs 和内核 Image 打包在一起的方案 因为我们有款产品需要将 ramdisk 和 Image 分开存储 所以这篇文章讲解 ramdisk 分开引导的方案 1 Busybox 文件系统制作请参考之前的文章 https blog csdn net m0 article details 打包 ramdi

    2026年3月18日
    2
  • Spring容器和springmvc容器的区别联系

    Spring容器和springmvc容器的区别联系

    2021年9月26日
    57

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号