在数据维度很高时,我们会从中提取出一些有用的特征,降低数据处理的维度,方便计算,这个过程也被叫做降维。
一般常用的降维方法有PCA和LDA。

  • PCA:非监督降维,降维后数据的方差尽可能的大(方差大,含有的信息量就大)
  • LDA:有监督降维,降维后,组内(同一类别)方差小,组间(不同类别之间)方差大

:对原始数据进行线性变换,比如上面左图的二维数据,x1轴代表年龄,x2轴代表收入,这时候要是按照对角线进行线性变换,二维虽然降到了一维,但是无法解释这个新的一维特征的具体含义。即变换后的数据不具备可解释性
因此,降维的操作比较适合在高维度下进行,若想要进行有解释性的特征选择,可以用随机森林的重要性或者Lasso回归,带L1正则化的逻辑回归等

主成分分析PCA

PCA的直观理解

PCA的一般用途

  • 聚类:把复杂的多维数据转为少量数据,易于分簇
  • 降维:降低高维数据,简化计算,达到数据降维,压缩,降噪(去掉不太重要的特征)的目的

PCA的作用

  • 将原有的d维数据集,转为k维数据,k<d
  • 新生成的k维数据尽可能多的保留原来d维数据的信息
    第一个图,投影到对角线上的话,保留的数据信息会多一些。

    沿着对角线方向,投影后映射到该对角线上的值要尽可能的分散,这个分散程度就用方差来表示。

PCA的数据推导

PCA的目标函数

之前的数据均值不为0,需要进行中心化,将数据均值变为0。
协方差矩阵是用来衡量数据间的相似程度,主要是线性相关,若该值较大,说明线性相关程度越大。

通过线性变换u1,可以把原始数据投影一个方向上,在该方向上方差最大。
因为对样本做了去中心化,所以均值为0。

目的是想让投影后的方差取得最大值,得到如下优化函数,使用拉格朗日条件进行转换。。
为了方便计算,可以指定线性变换的模长为1。

λ是协方差矩阵的特征值,想要目标函数最大,也就是让λ值最大。
协方差的λ值有λ123……,对应的线性变换的方式就有u123……,彼此是对应的关系,将λ值从大到小进行排序,u也随之排序,取其前k个乘原始的数据,就得到降维后的数据Y。

PCA流程

带核函数的PCA

对于非线性数据,可将其映射到更高维的空间,转为线性数据,这样就可以用PCA进行处理。这里用核函数进行处理。

带核函数的PCA推导

以下是数学推导过程,具体的讲解可看PCA讲解。






计算步骤的总结
1.选择一个核函数。
2.根据原始的数据得到正规化的K。(相当于数据向高维的映射)
3.计算特征值和特征向量
4.进行降维。

常用的核函数:高斯核,多项式核等。
利用核函数对数据进行映射,将左边的数据转为右边的形式,再进行降维。

SVD

另外还有一种降维的方法SVD,说是另外一种降维方法,但其实跟PCA相差不大,实现PCA的时候一般底层都是SVD的方法。
具体的原理可参考SVD原理,区别可参考PCA与SVD区别。这里先简单说明下PCA和SVD的区别:

  1. SVD不需要求解协方差矩阵,比PCA的计算速度要快。
  2. PCA的降维是特征的降维,使用的是SVD的右奇异矩阵。而SVD可以得到“两个方向的PCA”,一个是右奇异矩阵,用于特征(列)的降维,另一个是左奇异矩阵,用于数据(行)的降维。

线性判别分析LDA

LDA的直观理解

LDA:线性判别分析,可以做特征降维,也可以做分类方法。

LDA降维原理:通过投影的方法,对带标签的数据投影到更低维的空间中。投影后,同一类别的点之间比较近,不同类别的比较远。

连接两个数据的中心点,在连线上进行降维。

但是这样处理后,数据之间有交叉,效果不好。

为了降低数据之间的重叠,可以让不同类别数据的中心点之间的距离最大化,同一类别的方差要小一些。

LDA的数据推导

求出投影后各类别样本间的距离(用均值绝对值的差表示)和各样本的方差。要让D最大,V最小。

构建优化目标,要让J最大化。定义类内散度矩阵和类间散度矩阵。

将Sw和Sb带入公式。对w求导,w是线性变换(向量)。
将求导后得到的结果w回带之前的公式,将J的最大值用λ进行表示。
最后得到λ=Sw的逆Sb,让Sw的逆Sb的特征值最大,即求得λ最大。

LDA的降维流程

PCA和LDA的比较

相同点
从求解的过程看,PCA和LDA最后都是求某一个矩阵的特征值,投影矩阵即为该特征值对应的特征向量。
不同点

  1. PCA为无监督降维,LDA为有监督降维。
  2. PCA投影后的数据方差尽可能的大,因为假设其方差越大,所包含的信息就越多;LDA投影后不同类别组间方差大,相同类别组内方差小。LDA能结合标签的信息,使得投影后的维度具有判别性(分类),不同类别的数据尽可能地分开。
  3. 对于有标签的数据就使用LDA,而对于无监督的任务,则使用PCA。

参考资料

https://www.bilibili.com/video/BV1ME411T7tV?p=10

数据挖掘:特征提取——PCA与LDA相关推荐

  1. PCA与LDA算法的解释,浅显易懂

    2019独角兽企业重金招聘Python工程师标准>>> 转自:http://www.cnblogs.com/LeftNotEasy/archive/2011/01/08/lda-an ...

  2. pca 和lda区别

    http://blog.csdn.net/scyscyao/article/details/5987581 这学期选了门模式识别的课.发现最常见的一种情况就是,书上写的老师ppt上写的都看不懂,然后绕 ...

  3. 大数据(线性/非线性)降维方法(PCA,LDA,MDS,ISOMAP,LLE)

    文章目录 数据块划分 特征分布 特征提取 PCA LDA MDS Isomap LLE 数据块划分 对于给定的数据集Magic(19020个样本,10个属性),我们首先将其划分为RSP数据块,然后再分 ...

  4. 【PCA与LDA】特征值分解与奇异值分解以及图像压缩处理原理

    前言:     上一次写了关于 PCA与LDA 的文章,PCA的实现一般有两种,一种是用特征值分解去实现的,一种是用奇异值分解去实现的.在上篇文章中便是基于特征值分解的一种解释.特征值和奇异值在大部分 ...

  5. 线性降维:PCA、LDA、MDS

    1. KNN 为什么要在介绍降维之前学习KNN呢?因为以KNN为代表的一类算法,由于其为非参数化模型,无法通过一组固定的参数和固定的模型进行表征.此外,KNN还是惰性学习算法的典型例子.惰性是指它仅仅 ...

  6. 四大降维算法的比较和一些理解(PCA、LDA、LLE、LEP)

    PCA Principle components analysis 主成分分析法:https://blog.csdn.net/weixin_43909872/article/details/85321 ...

  7. 【PCA、LDA降维,及模型评估(SE,SP,AUC)】

    1. 采用 PCA 对男女生样本数据中的(身高.体重.鞋码.50m 成绩.肺活量) 共 5 个特征进行特征降维,并实现 LDA 算法对处理后的特征进行分类,计算 模型预测性能(包含 SE.SP.ACC ...

  8. 四大机器学习降维算法:PCA、LDA、LLE、Laplacian Eigenmaps

    四大机器学习降维算法:PCA.LDA.LLE.Laplacian Eigenmaps 引言 机器学习领域中所谓的降维就是指采用某种映射方法,将原高维空间中的数据点映射到低维度的空间中.降维的本质是学习 ...

  9. 12- 降维算法 (PCA降维/LDA分类/NMF) (数据处理)

    数据降维就是一种对高维度特征数据预处理方法.降维是将高维度的数据保留下最重要的一些特征,去除噪声和不重要的特征,从而实现提升数据处理速度的目的. PCA算法有两种实现方法: 基于特征值分解协方差矩阵实 ...

最新文章

  1. python调用centos防火墙_Centos7防火墙:Firewall基本使用命令,设置防火墙规则
  2. springboot 和 mybatis整合:参数查询和动态sql
  3. ASP.NET程序中常用的三十三种代码(二)
  4. uva 10710——Chinese Shuffle
  5. *【洛谷 - P1025】数的划分(dfs 或 dp 或 母函数,第二类斯特林数Stirling)
  6. make找不到linux内核函数,linux内核make menuconfig出错
  7. 比尔·盖茨录视频祝大家“新春快乐
  8. 使用MySQL UDFs来调用gearman分布式任务分发系统
  9. linux是一个工程而不是理论
  10. 力扣-48 旋转图像
  11. 图象关于y轴对称是什么意思_高中数学常考问题1:函数、基本初等函数的图象与性质,真题分析...
  12. 关于计算机网络安全实验报告总结,信息安全实验总结报告
  13. pytorch(8)-- resnet101 迁移学习记录
  14. K9G8G08U0A升级到K9GAG08U0D烧录NK要注意的地方
  15. 阿里巴巴协助征战SARS(简单)
  16. JavaScript中的call(),apply(),伪数组转化为数组
  17. k8s-高可用部署-calico插件
  18. ASEMI整流桥KBP310功能引脚图解
  19. DCloud 使用chrome调试
  20. 虚函数,虚指针和虚表详解

热门文章

  1. java相对应的键盘输入_Java 实现输入键盘上任意键显示出相对应的ASCII
  2. java if 局部变量_java – 为什么局部变量在if-else构造中启动而在if-else-if构造中不启动?...
  3. python executemany_Python MySQLdb executemany
  4. 前端 JavaScript 之『节流』的简单代码实现
  5. 黑客都是使用哪些方法入侵我们电脑的
  6. sony lt26i android 5.1rom,索尼 LT26 Xperia L 5.1.1 ROM刷机包 扁平化 来电归属 农历 新相机 稳定流畅...
  7. OWA2003隐藏附件病毒提示的方法
  8. 自走棋投降代码_自走棋太火惨遭针对!代码哥之后又是锁钱挂?玩家:还有拒绝员!...
  9. efs文件解密软件_免费数据恢复软件排行榜Top10!
  10. 2018-09-29 摘抄eDP取代LVDS视频接口