❶ LDA和PCA降维总结
线性判别分析(Linear Discriminant Analysis,LDA)是一种经典的降维方法。和主成分分析PCA不考虑样本类别输出的无监督降维技术不同,LDA是一种监督学习的降维技术,数据集的每个样本有类别输出。
LDA分类思想简单总结如下:
如果用一句话概括LDA思想,即“投影后类内方差最小,类间方差最大”。
假设有红、蓝两类数据,这些数据特征均为二维,如下图所示。我们的目标是将这些数据投影到一维,让每一类相近的数据的投影点尽可能接近,不同类别数据尽可能远,即图中红色和蓝色数据中心之间的距离尽可能大。
左图和右图是两种不同的投影方式。
左图思路:让不同类别的平均点距离最远的投影方式。
右图思路:让同类别的数据挨得最近的投影方式。
从上图直观看出,右图红色数据和蓝色数据在各自的区域来说相对集中,根据数据分布直方图也可看出,所以右图的投影效果好于左图,左图中间直方图部分有明显交集。
以上例子是基于数据是二维的,分类后的投影是一条直线。如果原始数据是多维的,则投影后的分类面是一低维的超平面。
输入:数据集 ,其中样本 是n维向量, ,降维后的目标维度 。定义
为第 类样本个数;
为第 类样本的集合;
为第 类样本的均值向量;
为第 类样本的协方差矩阵。
其中
假设投影直线是向量 ,对任意样本 ,它在直线 上的投影为 ,两个类别的中心点 , 在直线 的投影分别为 、 。
LDA的目标是让两类别的数据中心间的距离 尽量大,与此同时,希望同类样本投影点的协方差 、 尽量小,最小化 。
定义
类内散度矩阵
类间散度矩阵
据上分析,优化目标为
根据广义瑞利商的性质,矩阵 的最大特征值为 的最大值,矩阵 的最大特征值对应的特征向量即为 。
LDA算法降维流程如下:
输入:数据集 ,其中样本 是n维向量, ,降维后的目标维度 。
输出:降维后的数据集 。
步骤:
PCA可解决训练数据中存在数据特征过多或特征累赘的问题。核心思想是将m维特征映射到n维(n < m),这n维形成主元,是重构出来最能代表原始数据的正交特征。
假设数据集是m个n维, 。如果 ,需要降维到 ,现在想找到某一维度方向代表这两个维度的数据。下图有 两个向量方向,但是哪个向量才是我们所想要的,可以更好代表原始数据集的呢?
从图可看出, 比 好,为什么呢?有以下两个主要评价指标:
如果我们需要降维的目标维数是其他任意维,则:
下面以基于最小投影距离为评价指标推理:
假设数据集是m个n维, ,且数据进行了中心化。经过投影变换得到新坐标为 ,其中 是标准正交基,即 , 。
经过降维后,新坐标为 ,其中 是降维后的目标维数。样本点 在新坐标系下的投影为 ,其中 是 在低维坐标系里第 j 维的坐标。
如果用 去恢复 ,则得到的恢复数据为 ,其中 为标准正交基组成的矩阵。
考虑到整个样本集,样本点到这个超平面的距离足够近,目标变为最小化 。对此式进行推理,可得:
在推导过程中,分别用到了 ,矩阵转置公式 , , 以及矩阵的迹,最后两步是将代数和转为矩阵形式。
由于 的每一个向量 是标准正交基, 是数据集的协方差矩阵, 是一个常量。最小化 又可等价于
利用拉格朗日函数可得到
对 求导,可得 ,也即 。 是 个特征向量组成的矩阵, 为 的特征值。 即为我们想要的矩阵。
对于原始数据,只需要 ,就可把原始数据集降维到最小投影距离的 维数据集。
基于最大投影方差的推导,这里就不再赘述,有兴趣的同仁可自行查阅资料。
输入: 维样本集 ,目标降维的维数 。
输出:降维后的新样本集 。
主要步骤如下:
降维的必要性 :
降维的目的 :
应用PCA算法前提是假设存在一个线性超平面,进而投影。那如果数据不是线性的呢?该怎么办?这时候就需要KPCA,数据集从 维映射到线性可分的高维 ,然后再从 维降维到一个低维度 。
KPCA用到了核函数思想,使用了核函数的主成分分析一般称为核主成分分析(Kernelized PCA, 简称KPCA)。
假设高维空间数据由 维空间的数据通过映射 产生。
维空间的特征分解为:
其映射为
通过在高维空间进行协方差矩阵的特征值分解,然后用和PCA一样的方法进行降维。由于KPCA需要核函数的运算,因此它的计算量要比PCA大很多。
❷ 葫芦书第四章——降维
在机器学习中,数据通常需要被表示为向量形式以输入模型进行训练。但众所周知,对高维向量进行处理和分析时,会极大地消耗系统资源,甚至产生维度灾难(相关笔记记录于 这里 )。因此,用一个低维度的向量表示原始高维度的特征就显得尤为重要。
在机器学习领域中,我们对原始数据进行特征提取,有时会得到比较高维的特征向量。在这些向量所处的高维空间中,包含很多的冗余和噪声。我们希望通过降维的方式来寻找数据内部的特性,从而提升特征表达能力,降低训练复杂度。主成分分析(PCA)作为降维中最经典的方法,属于一种 线性、非监督、全局的降维算法 。
1、所谓主成分,就是把原特征进行线性组合后得到新的特征,此特征尽可能多地保留了原特征的方差。
2、设一组参数 ,记原特征为 ,新特征为 ,根据定义,我们要让 的方差尽可能大,即 这就是我们的目标函数。
3、具体的求解过程要借助特征值分解。
(a)是二维空间中经过中心化的一组数据,我们很容易看出主成分所在的轴(以下称为主轴)的大致方向,即(b)中黄线所处的轴。因为在黄线所处的轴上,数据分布得更为分散,这也意味着数据在这个方向上方差更大。
我们不难引出 PCA的目标,即最大化投影方差,也就是让数据在主轴上投影的方差最大 。对于给定的一组数据点 ,其中所有向量均为列向量,中心化后的表示为 ,其中 。我们知道,向量内积在几何上表示为第一个向量投影到第二个向量上的长度,因此向量 在 (单位方向向量)上的投影坐标可以表示为 。所以目标是找到一个投影方向 ,使得 在 上的投影方差尽可能大。易知,投影之后均值为0( ),因此投影后方差可以表示为:
其中 其实就是协方差矩阵,我们将其写为 ,另外,由于 是单位向量,因此 ,因此我们要求解一个最大化问题:
引入拉格朗日乘子并对 求导令其等于0,便可以推出 ,此时:
不难看出, 投影后的方差就是协方差矩阵的特征值。我们要找到最大的方差也就是协方差矩阵最大的特征值,最佳投影方向就是最大特征值所对应的特征向量。次佳投影方向位于最佳投影方向的正交空间中,是第二大特征值对应的特征向量,以此类推。至此,我们得到了PCA的求解方法:
1)对样本数据进行中心化处理。
2)求样本协方差矩阵。
3)对协方差矩阵进行特征值分解,将特征值从大到小排列。
4)取特征值前 大对应的特征向量 通过以下映射将 维样本映射到 维:
定义降维后的信息占比为:
可以。从线性回归的角度切入,最佳投影方向对应的直线应该使得各点到此直线的距离的平方和最小。关于这个目标和最大方差目标的等价性,我在 这里 已经说明过了。
从求解直线的思路出发,很容易联想到数学中的线性回归问题,其目标也是求解一个线性函数使得对应直线能够更好地拟合样本点集合。如果我们从这个角度定义PCA的目标,那么问题就会转化为一个回归问题。
数据集中每个点 到 维超平面 的距离为:
其中 表示 在超平面 上的投影向量。若该超平面 由 个标准正交基 构成,则有线代知识可知, 可由这组基线性表示:
其中 表示 在 方向上投影的长度。因此 实际上就是 在 这组标准正交基下的坐标。而PCA要优化的目标是:
将上式中每个距离展开:
可以看到,第一项与选取的 无关,是一个常数,将 代入第二项第三项得到:
因为当 时, ,因此上式可写为:
于是:
这等价于求解带约束的优化问题:
如果我们对 中的 个基 依次求解,就会发现 和最大方差理论的方法完全等价 。
线性判别分析(Linear Discriminant Analysis, LDA)是一种 有监督学习算法 ,同时经常被用来对数据进行降维。
相比于PCA,LDA可以作为一种有监督的降维算法。在PCA中没有考虑数据的标签(类别),只是把原数据映射到一些方差比较大的方向上而已。
假设用不同的颜色标注 两个不同类别的数据,如图所示。根据PCA算法,数据应该映射到方差最大的那个方向,亦即 轴方向。但是, 两个不同类别的数据就会完全混合在一起,很难区分开。所以,使用PCA算法进行降维后再进行分类的效果会非常差。但是如果使用LDA算法,数据会映射到 轴方向。
1、要想降维过程中不损失类别信息,一个简单的想法就是降维后两类样本点之间的距离越远越好,这样才能将两类样本区分开来。
2、在这样的目标下,假设样本在目标超平面上的投影,并考察两类样本投影的均值点,求解一个超平面,使得这两个均值点之间的距离最大。
LDA首先是为了分类服务的,因此只要找到一个投影方向 ,使得投影后的样本尽可能按照原始类别分开 。 我仍不妨从一个简单的二分类问题出发,有 两个类别的样本,两类的均值分别为 ,我们希望投影之后两类之间的距离尽可能大,距离表示为:
和 表示两类中心在 方向上的投影向量,即 ,因此需要优化的问题为:
容易发现当 方向与 一致的时候,该距离达到最大值,例如对图(a)的黄棕两种类别的样本点进行降维时, 若按照最大化两类投影中心距离的准则,会将样本点投影到下方的黑线上。但是原本可以被线性划分的两类样本经过投影后有了一定程度的重叠,这显然不能使我们满意。我们希望得到的投影结果如图(b)所示,虽然两类的中心在投影之后的距离有所减小,但确使投影之后样本的可区分性提高了。
仔细观察两种投影方式的区别,可以发现,在图(b)中,投影后的样本点似乎在每一类中分布得更为集中了,用数学化的语言描述就是每类内部的方差比(a)中更小。这就引出了 LDA的中心思想一一最大化类间距离和最小化类内距离 。
在前文中我们已经找到了使得类间距离尽可能大的投影方式,现在只需要同时优化类内方差,使其尽可能小。我们将整个数据集的类内方差定义为各个类分别的方差之和,将目标函数定义为类间距离和类内距离的比值,于是引出我们需要最大化的目标:
真中 为单位向量, 分别表示两类投影后的方差:
因此 可以写成:
定义类间散度矩阵为:
类内散度矩阵为:
则有:
我们要最大化 ,只需对 求偏导,并令导数等于零:
于是得出:
在二分类中 和 是两个数,令 ,于是:
即:
从这里我们可以看出,我们最大化的目标对应了一个矩阵的特征值。 于是LDA降维变成了一个求矩阵特征向量的问题。 就对应矩阵 最大的特征值,而投影方向就是这个特征值对应的特征向量 。
对于二分类这一问题,由于 ,因此 的方向始终与 一致,若只考虑 的方向而不考虑长度,可得 。
1、LDA和PCA最显着的区别就是前者是有监督方法而后者是无监督方法,因此在应用中,对于数据中有标签的应该使用LDA,对于数据中无标签的则使用PCA。
2、数学推导上,两者的区别在于,PCA并未考虑类之间的距离(因为PCA并未用到标签信息),而是仅仅考虑了降维后数据的方差,从这个角度来说,PCA相当于在LDA中将所有数据当成一类去处理的特殊情形。因此我们可以看到两者的数学推导也十分相似,最终目标都归为求解一个矩阵的特征值分解。
首先将LDA拓展到多类高维的情况以和问题PCA的求解对应。假设有 个类别,并需要最终将特征降维至 维。我们要找到一个 维投影超平面 使得投影后的样本点满足LDA的目标一一最大化类间距菌和最小化类内距离。
回顾两个散度矩阵,类内散度矩阵 在类别数增加时仍满足定义。而之前两类问题的类间散度矩阵 在类别增加后就无法按照原始定义。
考虑三类样本的情况, 分别表示棕绿黄三类样本的中心, 表示这三个中心的均值(也即全部样本的中心), 表示第 类的类内散度。我们可以定义一个新的矩阵 表示全局整体的散度,称为全局散度矩阵:
如果把全局散度定义为类内散度与类间散度之和,即 ,那么类间散度矩阵可表示为:
其中 是第 个类别中的样本个数, 是总的类别个数。根据LDA的原理,可以将最大化的目标定义为:
剩下的求解过程与之前二分类LDA相同。
至此我们得到了与PCA步骤类似,但具有多个类别标签高维数据的LDA求解方法:
1)计算数据集中每个类别样本的均值向量 ,及总体均值向量 。
2)计算类内散度矩阵 和全局散度矩阵 ,得到类间散度矩阵 。
3)对矩阵 进行特征值分解,将特征值从大到小排列。
4)取特征值前 大的特征值对应的特征向量 ,通过以下映
射将 维样本映射到 维:
从PCA和LDA两种降维方法的求解过程来看,它们确实有着很大的相似性,但对应的原理却有所区别。首先从目标出发, PCA选择的是投影后数据方差最大的方向。由于它是无监督的,因此PCA假设方差越大,信息量越多,用主成分来表示原始数据可以去除冗余的维度,达到降维。而LDA选择的是投影后类内方差小、类间方差大的方向,其用到了类别标签信息。为了找到数据中具有判别性的维度,使得原始数据在这些方向上投影后,不同类别尽可能区分开 。
举一个简单的例子,在语音识别中,我们想从一段音频中提取出人的语音信号,这时可以使用PCA先进行降维,过滤掉一些固定频率(方差较小)的背景噪声。但如果我们的需求是从这段音频中区分出声音属于哪个人,那么我们应该使用LDA对数据进行降维,使每个人的语音信号具有区分性。
从应用的角度,我们可以掌握一个基本的原则一一 对无监督的任务使用PCA进行降维,对有监督的则应用LDA 。
❸ 11 - PLS,PCA-LDA, DT, ANN简要介绍
此本来自自己硕士论文的综述部分。
偏最小二乘法可以分为偏最小二乘回归法(Partial least square regression, PLSR)与偏最小二乘法判别分析(Partial least square discriminate analysis, PLS-DA)。PLSR实现的主要思想是将自变量和因变量分别进行线性组合分析,再将求得的数据进行关联分析,所以其为主成分分析、典型相关性分析与多元线性回归建模的组合。PLS-DA是有监督的判别分析法,Gottfries等首先报道了PLS-DA使用,而后Barker与Rayens明确了其用于判别分析的理论基础,并且对于其应用的优缺点由Brereton与Lloyd进一步阐释(Gottfries et al 1995, Barker and Rayens 2003, Brereton and Lloyd 2014 )。其与PLSR区别是因变量是类别,而不是连续的变量,一般是在PLSR分析后加入一个逻辑判别函数如Sigmoid函数(在逻辑回归判别中将详述)。因为两者前面分析部分相似,故这里主要介绍PLSR算法。PLSR中自变量与因变量的基础结构公式为:
X = TPT + E
Y = UQT + F
PLSR一般基于非线性迭代最小二乘算法(NIPALS)建立。其步骤为(1)对自变量X和因变量Y同时提取各自的主成分t1(x1、x2...xn的线性组合)与u1(y1、y2...yn的线性组合),并且要求这两个主成分相关性最大;(2)再进行X与Y分别对t1与u1的回归,若方程达到了设置的满意度,则停止计算;(3)否则,再利用t1对X解释后剩余的信息和u1对Y解释后剩余的信息重新按照(1)进行,再次循环,直到符合设定的阈值。最终X可能会提取到t1、t2...tn个主成分,Y提取到u1、u2…un,使Y的u组合对t1、t2...tn进行回归,进而转化成Y对x1、x2...xn的回归方程(Wold et al 2001)。
PLSR是基于FT-MIR建立模型研究中使用最为广泛和经典的算法,上述关于基于FT-MIR检测牛奶脂肪酸、蛋白质及氨基酸和抗生素残留的定量模型研究中均使用了PLSR算法,可见其应用之普遍。PLS-DA已在食品分析中的产品认证、医学诊断中的疾病分类和代谢组分析中进行广泛应用,并且Gromski等在综述代谢组的分析中,将其和随机森林与支持向量机进行了比较(Gromski et al 2015, Lee et al 2018)。
PLS的优点:(1)能处理样本量远小于特征属性数量的数据;(2)能处理特征属性间存在多重共线性的问题;(3)建立的模型时包含自变量与因变量的信息。其缺点有:(1)不能很好的处理非线性问题;(2)容易过拟合,需注意主成分数的选择。
主成分分析(Principal Component Analysis,PCA)是一种无监督的降维分析方法。PCA降维的基本原则是使降维后方差最大与损失最小,如图1-2。其实现的基本过程:(1)对所有样本进行中心化处理;(2)计算样本的协方差矩阵;(3)对协方差矩阵进行特征值分解;(4)对得到的特征值进行排序,取前n个组成新矩阵;(5)以新矩阵来代替原来样本的特征(Abdi and Williams 2010, Jolliffe and Cadima 2016)。
线性判别分析(Linear discriminat analysis,LDA)是一种有监督的降维与判别分析方法。LDA降维原则是类别内方差最小,类别间方差最大,这样的特点更有利于进行判别分析(Anandkumar et al 2015)。其实现的基本过程为(1)计算样本各类别内的类内散度矩阵Sw;(2)计算样本各类别间的散度矩阵Sb;(3)对Sw做奇异分解,得到Sw -1 ;(4)对Sw -1 Sb做特征分解;(5)取上一步得到的前n特征向量以最大似然法求得各类别的均值和方差做后续的判别分析。
LDA不适用自变量远远大于样本的情况,而PCA可以,故这里将两个算法进行联用,先以PCA进行降维,再以LDA进行判别分析(Yang and Yang 2003)。
PCA-LDA的优点:(1)两个算法的联用可以同时对原数据进行降维和判别分析;(2)LDA采用的是各类均值,算法较优。其缺点有(1)只适合符合高斯分布的样本数据分析;(2)可能会有过拟合的风险。
决策树是基础的分类和回归方法,本研究主要集中在其用于分类上。决策树是通过树状结构对具有特征属性的样本进行分类。每一个决策树都包括根节点(第一个特征属性),内部节点(其他特征属性)以及叶子节点(类别),通用的为每个内部节点有两个分支(Kaminski et al 2018)。其实现的基本步骤:(1)在所有属性中选择最优属性,通过其将样本分类;(2)将分类的样本再通过另一个特征属性再次分类,一直循环直到将样本分到各叶子节点;(3)对生成的树进行剪枝(包含预剪枝与后剪枝)。决策树选择特征属性的算法不同会有不同结果,典型算法包括:CART算法(Breiman et al 1984)、ID3算法(Quinlan 1986)、C4.5算法(Quinlan 1992)等,但这些方法生成的过程相似。
CART采用基尼指数最小化原则,进行特征选择,递归地生成二叉树,该算法只能对特征进行二分。ID3算法在各个节点上采用信息增益来选择特征,每一次选择的特征均使信息增益最大,逐步构建决策树,但缺点是其会选择取值较多的特征,而C4.5算法采用信息增益比选择特征,解决了ID3的缺点。
DT的优点:(1)运行速度相对较快;(2)可同时处理不同类型的数据,基本不需要预处理;(3)结果容易解释,并可进行可视化。其缺点:(1)容易过拟合,导致泛化能力不强;(2)不支持在线学习,若有新样本,DT需要全部重建;(3)当各类别数据样本不平衡时,结果会偏向有更多数值的特征;(4)不能处理样本特征属性之间的相关性(James et al 2013, Painsky and Rosset 2015)。
人工神经网络是以神经元为单位模仿生物神经网络的结构与功能的数学算法模型(Marcel and Sander 2018)。其可以进行线性与非线性的判别分析,属于有监督的学习分类法,主要分为前馈型神经网络、反馈型神经网络与自组织神经网络。
单位神经元如图1-3中A,一般有多个输入的“树突”,再分别给予不同的权重求和,与阈值比较,达到阈值的通过激活函数求出输出数据,最后进行输出。激活函数f通常分为三类:阈值函数、分段函数、双极性连续函数。
这里以经典的单隐层神经网络为例进行讲解,如图1-3中B。其输入层包含三个神经元,隐含层有四个神经元,输出层有两个神经元。其运算过程为由输入层输入数据,随机设定权重和阈值,通过隐藏层计算再传递到输出层,输出层会根据设定的期望进行判断,如果不符合,则返回重新改变权重和阈值,进入循环,直到符合设定的期望再停止运算,这样就能得到模型的权重和阈值,可对新数据进行判别,这种运算法即为常见的反馈型神经网络(Tu 1996)。多层神经网络属于深度学习,以卷积神经网络为基础进行构建。
ANN的优点:(1)能够自主学习;(2)能解决线性与非线性的问题;(3)可处理因变量之间的相互作用。其缺点:(1)需要设置大量的参数进行约束;(2)结果解释性差,为黑箱算法;(3)计算学习时间长;(4)容易过拟合(Tu 1996)。
❹ 为什么说LDA是降维分类技术
线性判别式分析(Linear Discriminant Analysis, LDA),也叫做Fisher线性判别(Fisher Linear Discriminant ,FLD),是模式识别的经典算法,它是在1996年由Belhumeur引入模式识别和人工智能领域的。
线性鉴别分析的基本思想是将高维的模式样本投影到最佳鉴别矢量空间,以达到抽取分类信息和压缩特征空间维数的效果,投影后保证模式样本在新的子空间有最大的类间距离和最小的类内距离,即模式在该空间中有最佳的可分离性。因此,它是一种有效的特征抽取方法。使用这种方法能够使投影后模式样本的类间散布矩阵最大,并且同时类内散布矩阵最小。就是说,它能够保证投影后模式样本在新的空间中有最小的类内距离和最大的类间距离,即模式在该空间中有最佳的可分离性。
LDA是监督的,够得上你“分类”这个词
❺ 常用降维方法之PCA 和 LDA
PCA本质上是将方差最大的方向作为主要特征,并且在各个正交方向上将数据“离相关”,也就是让它们在不同正交方向上没有相关性。而方差最大的那个维度是主成分。
PCA是比较常见的线性降维方法,通过线性投影将高维数据映射到低维数据中,所期望的是在投影的维度上,新特征自身的方差尽量大,方差越大特征越有效,尽量使产生的新特征间的相关性越小。
PCA算法的具体操作为对所有的样本进行中心化操作,计算样本的协方差矩阵,然后对协方差矩阵做特征值分解,取最大的n个特征值对应的特征向量构造投影矩阵。
再举个栗子:
下面举一个简单的例子,说明PCA的过程。
假设我们的数据集有10个二维数据(2.5,2.4), (0.5,0.7), (2.2,2.9), (1.9,2.2), (3.1,3.0), (2.3, 2.7), (2, 1.6), (1, 1.1), (1.5, 1.6), (1.1, 0.9),需要用PCA降到1维特征。
首先我们对样本中心化,这里样本的均值为(1.81, 1.91),所有的样本减去这个均值向量后,即中心化后的数据集为(0.69, 0.49), (-1.31, -1.21), (0.39, 0.99), (0.09, 0.29), (1.29, 1.09), (0.49, 0.79), (0.19, -0.31), (-0.81, -0.81), (-0.31, -0.31), (-0.71, -1.01)。
现在我们开始求样本的协方差矩阵,由于我们是二维的,则协方差矩阵为:
对于我们的数据,求出协方差矩阵为:
求出特征值为(0.0490833989, 1.28402771),对应的特征向量分别为:
由于最大的k=1个特征值为1.28402771,对于的k=1个特征向量为 则我们的W=
我们对所有的数据集进行投影 得到PCA降维后的10个一维数据集为:(-0.827970186, 1.77758033, -0.992197494, -0.274210416, -1.67580142, -0.912949103, 0.0991094375, 1.14457216, 0.438046137, 1.22382056)
在上面的PCA算法中,我们假设存在一个线性的超平面,可以让我们对数据进行投影。但是有些时候,数据不是线性的,不能直接进行PCA降维。这里就需要用到和支持向量机一样的核函数的思想,先把数据集从n维映射到线性可分的高维N>n,然后再从N维降维到一个低维度n', 这里的维度之间满足n'<n<N。
使用了核函数的主成分分析一般称之为核主成分分析(Kernelized PCA, 以下简称KPCA。假设高维空间的数据是由n维空间的数据通过映射ϕ产生。
则对于n维空间的特征分解:
映射为:
通过在高维空间进行协方差矩阵的特征值分解,然后用和PCA一样的方法进行降维。一般来说,映射ϕ不用显式的计算,而是在需要计算的时候通过核函数完成。由于KPCA需要核函数的运算,因此它的计算量要比PCA大很多。
这里对PCA算法做一个总结。作为一个非监督学习的降维方法,它只需要特征值分解,就可以对数据进行压缩,去噪。因此在实际场景应用很广泛。为了克服PCA的一些缺点,出现了很多PCA的变种,比如第六节的为解决非线性降维的KPCA,还有解决内存限制的增量PCA方法Incremental PCA,以及解决稀疏数据降维的PCA方法Sparse PCA等。
PCA算法的主要优点有:
LDA(线性判别分析,Linear Discriminant Analysis)是另一种常用的降维方法,它是有监督的。LDA在模式识别领域(比如人脸识别,舰艇识别等图形图像识别领域)中有非常广泛的应用,因此我们有必要了解下它的算法原理。这里需要注意的是,此处的LDA与文本主题模型中的LDA(隐含狄利克雷分布,Latent Dirichlet Allocation)并不相同,他是一种处理文档的主题模型。
LDA是一种监督学习的降维技术,也就是说它的数据集的每个样本是有类别输出的。这点和PCA不同。PCA是不考虑样本类别输出的无监督降维技术。
LDA的思想可以用一句话概括,就是“投影后类内方差最小,类间方差最大”。
什么意思呢? 我们要将数据在低维度上进行投影,投影后希望每一种类别数据的投影点尽可能的接近,而不同类别的数据的类别中心之间的距离尽可能的大。
可能还是有点抽象,我们先看看最简单的情况。假设我们有两类数据 分别为红色和蓝色,如下图所示,这些数据特征是二维的,我们希望将这些数据投影到一维的一条直线,让每一种类别数据的投影点尽可能的接近,而红色和蓝色数据中心之间的距离尽可能的大。
以上就是使用LDA进行降维的算法流程。实际上LDA除了可以用于降维以外,还可以用于分类。一个常见的LDA分类基本思想是假设各个类别的样本数据符合高斯分布,这样利用LDA进行投影后,可以利用极大似然估计计算各个类别投影数据的均值和方差,进而得到该类别高斯分布的概率密度函数。当一个新的样本到来后,我们可以将它投影,然后将投影后的样本特征分别带入各个类别的高斯分布概率密度函数,计算它属于这个类别的概率,最大的概率对应的类别即为预测类别。
LDA用于降维,和PCA有很多相同,也有很多不同的地方,因此值得好好的比较一下两者的降维异同点。
这点可以从下图形象的看出,在某些数据分布下LDA比PCA降维较优。
当然,某些某些数据分布下PCA比LDA降维较优,如下图所示:
LDA算法既可以用来降维,又可以用来分类,但是目前来说,主要还是用于降维。在我们进行图像识别图像识别相关的数据分析时,LDA是一个有力的工具。下面总结下LDA算法的优缺点。
LDA算法的主要优点有:
参考文章: 刘建平老师的博客园
❻ 降维是什么意思
意思如下:
维,在几何学上指空间独立而互相正交的方位数,通常的空间有三维,平面或曲面有二维,直线或曲线只有一维。
在商业领域,企业的竞争力可以体现在若干个维度的累加上,这些维度包括核心技术、成本优势、管理优势、人才优势、地域优势等多个方面。
降维就是把竞争对手拉入到一个更低维度的竞争模式中,让对手因为失去原有的竞争力而无所适从。
降维方法
降维方法分为线性和非线性降维,非线性降维又分为基于核函数和基于特征值的方法。
1、线性降维方法:PCA 、ICA LDA、LFA、LPP(LE的线性表示)
2、非线性降维方法:
(1)基于核函数的非线性降维方法:KPCA 、KICA、KDA
(2)基于特征值的非线性降维方法(流型学习):ISOMAP、LLE、LE、LPP、LTSA、MVU
方法介绍
1、LLE(Locally Linear Embedding)算法(局部线性嵌入):
每一个数据点都可以由其近邻点的线性加权组合构造得到。
算法的主要步骤分为三步:
(1)寻找每个样本点的k个近邻点(k是一个预先给定的值);
(2)由每个样本点的近邻点计算出该样本点的局部重建权值矩阵;
(3)由该样本点的局部重建权值矩阵和其近邻点计算出该样本点的输出值,定义一个误差函数。
❼ 三种常用降维方法的思想总结
LDA降维和PCA的不同是LDA是有监督的降维,其原理是将特征映射到低维上,原始数据的类别也能清晰的反应在低维的数据上,也就是低维的数据也可以用来判别分类。
我们先看看二维的情况,我们希望找到一个向量,使得数据点映射到这个向量上后,两个类间的距离尽可能,两个类内的样本的距离尽可能小。这样就得到了一个目标函数,分子是投影后两个类间均值的差的平方,我们希望这个值尽可能大,分母是投影后的类的散列值的和,是少除以样本数量的方差,进一步化简分子得到投影向量的转置乘以投影前的类均值差向量的外积再乘以投影向量,分母是投影向量的转置乘以投影前的类间散列矩阵的和再乘以投影向量,此时我们需要求使得目标函数最小的投影向量,由于投影向量扩大或缩小多少倍,目标函数值不变,那么我们可以让分母的模长为1,此时可以使用拉格朗日乘子法,最后求得:当类间散列矩阵的和存在逆矩阵时,投影向量就是类间散列矩阵的和的逆矩阵和投影前的类均值差向量的外积的特征向量。进一步的,我们化简等式左边得到类间散列矩阵的逆矩阵乘以投影前类间均值向量的差乘以一个常数,那么由于投影向量可以放缩常数倍不影响结果,我们约掉两边的常数,得到投影向量等于投影前类均值向量的差左乘散列矩阵的逆矩阵,这就是fisher提出的判别分析
PCA是将原始样本投影到低维的空间上,使得样本的绝大部分信息得以保留,并且特征的维度降低使得模型不易过拟合。思想是:对于原始空间中的m维向量而言,找到k个投影向量使得这m维向量投影到这k个投影向量上的方差最大,保留原始的样本信息最多,我们首先可以看看找第一个向量,使得在这个方向上的投影方差最大。步骤如下:
1.在投影之前,我们对数据做中心化处理,使得原始数据均值为0
2.计算中心化后的样本的协方差矩阵,这是个m*m维的矩阵,m表示原始特征的数目。第i行第j列的元素表示数据中第i列和第j列的协方差
3.计算协方差矩阵的特征值和特征向量,特征向量是单位向量,模长为1,
4.选择带有最大特征值的k个特征向量
5.计算k个最大特征值对应的k个特征,对于每一个特征,都是用原数据矩阵(n行m列)乘以对应的特征向量(m行1列,m是原始变量的数目):因此最后的特征有n行一列,表示每个样本一个特征值
对数据进行中心化和归一化,然后将其投影到某个向量上,计算这一维上的数据点的方差,经过化简就是投影向量的转置乘以原始数据的协方差矩阵再乘以投影向量,前提是这个投影向量是单位向量,然后我们令这个方差λ最大,得到最大方差时对应的那个投影向量就是第一个主成分,那么这个向量如何求解呢?因为这个投影向量是单位向量,那么等式两边左乘以投影向量,得到了λu=Σu,则说明这个投影向量u的方向其实就是这个协方差矩阵的特征向量,那么最大方差λ对应的就是Σ的最大特征值对应的特征向量的方向,就是第一主成分的方向,第二大特征值对应的特征向量就是第二主成分的方向
数据的中心化并不是必要的,但是却方便了表示和计算,PCA是计算样本协方差矩阵的,因此中心化或者中心化并不改变特征向量的方向或者特征值的大小,因此即使不中心化,PCA一样的起作用,然而如果你中心化数据了,那么样本的协方差矩阵的数学表示就会得以简化,如果你的数据点就是你的数据矩阵的列,那么协方差矩阵就表示为xx',多么简便啊!技术上,PCA是包括数据中心化这一步的,但是那只是为了计算协方差矩阵,然后对协方差矩阵做特征值分解,得到各个特征值和特征向量
数据的归一化也不是必须的,如果某些变量有很大或者很小的方差,那么PCA将会倾向于这些大的方差的变量,例如如果你增加了一个变量的方差,也许这个变量对第一个主成分会从很小的影响到起主导性的作用,因此如果你想要PCA独立于这样的变化,归一化可以做到,当然,如果你的变量在那个规模上很重要,那么你可以不归一化,归一化在PCA中是很重要的,因为PCA是一个方差最大化的实验,它就是投影你的原始数据到方差最大化的方向上
(1)如果原始的特征是高度相关的,PCA的结果是不稳定的;
(2)新的特征是原始特征的线性组合,所以缺乏解释性。
(3)原始数据不一定要是多元高斯分布的,除非你使用这个技术来预测性的建模去计算置信区间
矩阵乘法的作用是线性变换,对一个向量乘以一个矩阵,可以使得这个向量发生伸缩、切变和旋转。我们都知道对称矩阵的特征向量是相互正交的,给定一个对称矩阵M,可以找到一些这样的正交向量v,使得Mv=λv,即这个矩阵M对向量做了拉伸变换,λ是拉伸的倍数。那么对于普通的矩阵呢,才能让一个原来就是相互垂直的网格平面(orthogonal grid), 线性变换成另外一个网格平面同样垂直呢?
对于一个正交矩阵,其对应的变换叫做正交变换,这个变换的作用是不改变向量的尺寸和向量间的夹角。正交变换中的旋转变换只是将变换向量用另一组正交基表示,在这个过程中并没有对向量做拉伸,也不改变向量的空间位置,只是将原坐标系旋转得到新的坐标系,那么这个旋转矩阵怎么求呢?对于二维空间中的某个向量而言,其经过旋转变换的结果就是从用一组坐标系表示到用另外一组坐标系表示,新的坐标系下的坐标各个分量相当于是原坐标系下的坐标的各个分量在新的坐标系的两个正交基下的投影,或者是相当于将原来的二维向量经过旋转到了新的坐标,因此相当于对向量左乘一个旋转矩阵,求出这个矩阵就是旋转变换的矩阵。刚刚说正交变换不改变向量的空间位置是绝对的,但是坐标是相对的,从原来的坐标系的基向量位置看这个二维向量,到从新的坐标系下看这个向量的坐标是变化的
矩阵乘以一个向量的结果仍是同维数的一个向量。因此,矩阵乘法对应了一个变换,把一个向量变成同维数的另一个向量。
对特定的向量,经过一种方阵变换,经过该变换后,向量的方向不变(或只是反向),而只是进行伸缩变化(伸缩值可以是负值,相当于向量的方向反向)?这就是相当于特征向量的定义
特征向量的几何含义是:特征向量通过方阵A变换只进行伸缩,而保持特征向量的方向不变。特征值表示的是这个特征到底有多重要,类似于权重,而特征向量在几何上就是一个点,从原点到该点的方向表示向量的方向。
一个变换(或者说矩阵)的特征向量就是这样一种向量,它经过这种特定的变换后保持方向不变,只是进行长度上的伸缩而已。特征值分解则是对旋转和缩放两种效应的归并。因为特征值分解中的A为方阵,显然是不存在投影效应的。或者说,我们找到了一组基(特征向量们),在这组基下,矩阵的作用效果仅仅是缩放。即矩阵A将一个向量从x这组基的空间旋转到x这组基的空间上,并在每个方向进行了缩放,由于前后两组基都是x,即没有进行旋转和投影。
详细分析特征值分解的过程:首先由于特征向量是正交的,特征向量组成的矩阵是正交方阵,两边同时右乘以这个方阵的逆矩阵,可以得到矩阵A的表达式为A=UΛU',两边同时右乘一个向量,相当于对这个向量左乘矩阵A,对向量做旋转或拉伸的变换。这个变换的过程分为三个映射:第一个是将向量x进行了旋转,它将x用新的坐标系来表示;第二个变换是拉伸变化,对x的每一维分量都进行了特征值大小的拉伸或缩小变换;第三个是对x做第一个变换的逆变换,因为是第一个矩阵的逆矩阵,也是旋转变换。在第二个拉伸变换中,可以看出,如果矩阵A不是满秩的,即有的特征值为0,那么这里相当于将x映射到了m维空间的子空间(m是矩阵A的维数m*m),此时矩阵A是一个正交投影矩阵,它将m维向量x映射到了它的列空间。如果A是二维的,那么可以在二维平面上可以找到一个矩形,使得这个矩形经过A变换后还是矩形
在特征值分解中,矩阵A要求是方阵,那么对于一个任意的矩阵m*n,能否找到一组正交基使得经过它变换后还是正交基?这就是SVD的精髓所在
A=UΣU',我们来分析矩阵A的作用: 首先是旋转 ,U的列向量是一组标准正交基,V也是,这表示我们找到了两组基。A的作用是将一个向量从V这组正交基向量空间旋转到U这组正交基向量空间; 其次是缩放 ,当V对向量x做了旋转以后,相当于把向量x旋转使其用V这组正交基表示坐标,然后Σ对向量x的每个分量做了缩放,缩放的程度就是Σ的主对角线上的元素,是奇异值; 最后是投影 ,如果U的维数小于V的维数,那么这个过程还包含了投影
现在的目的是找一组正交基,使得经过A矩阵变换后仍然是一组正交基,假设已经找到这样一组正交基,那么对这组正交基经过A变换,如何使其仍然是一组正交基呢?只要使得原来的正交基是A'A的特征向量即可,|AVi|就是A'A的特征值的开方,也就是奇异值,然后我们求AVi的单位向量Ui,这些Ui也都是正交的,那么我们就找到了两组正交基使得从V这组正交基变换到U这组正交基,V称作右奇异向量,U称作左奇异向量,AVi的模是奇异值,我们对V1,...,Vk进行扩充Vk+1,..,Vn(Vk+1,..,Vn是Ax=0的零空间)使得V1,...,Vn是n维空间中的一组正交基,对U1,...,Uk进行扩充Uk+1,...,Um,使得U1,..,Um是m维空间中的一组正交基,这个k值是矩阵A的秩,当A是满秩时,分解后的矩阵相乘等于A,k越接近于n,则分解后的矩阵相乘结果越接近于A
对矩阵A的映射过程分析:如果在n维空间中找到一个超矩形,使其都落在A'A的特征向量的方向上,那么经过A变换后的形状仍为超矩形。Vi是A'A的特征向量,Ui是AA'的特征向量,也是AVi的单位向量,σ是A'A的特征值的开方,根据这个公式可以计算出矩阵A的奇异值分解矩阵
SVD是将一个相互垂直的网格变换到另外一个相互垂直的网格,按照上面的对于U,V的定位,可以实现用矩阵A将一个向量变换的过程,首先将向量x写成用V这组正交基表示的形式,然后用矩阵A左乘向量x,并带入AVi=σiUi,最后可以得到A的分解式,不是矩阵分解式,而是向量分解式,可以看出,如果有的奇异值很小甚至为0,那么本来有n项相加,就最后只有奇异值不为0的项相加了,假如有k项相加,那么k越接近于n最后A分解的结果越接近于A
(1)可以用来减少元素的存储
(2)可以用来降噪:去掉奇异值小的项,奇异值小的我们认为是含有样本重要信息很少,都是噪声,因此就把这些信息少的给去掉了
(3)数据分析:比如说我们有一些样本点用于建模,我们通过SVD将数据里面的奇异值小的都去掉了,最后得到了分解后的数据,用来做分析,更加准确
我们知道PCA里面,我们对变量进行降维实际上就相当于对数据矩阵Am*n右乘一个矩阵Pn*r,就得到了Am*r,表示每个样本的特征向量只有r维的,和这个矩阵P代表了r个列向量是数据矩阵A的协方差矩阵n*n的最大的r的特征值对应r个特征向量,都是n维的。和SVD相比,将SVD的表达式两边同时右乘一个Vn*r,这样等式右边就Vr*n和Vn*r相乘是单位向量,因为Vn*r是A'A的r个特征向量,是前r个不为0的特征值对应的特征向量,且由于A'A是对称的,那么各个特征向量之间是正交的,这样就得到了刚刚PCA推导出来的公式
同理,对数据矩阵Am*n左乘一个矩阵Pr*m,就得到了Ar*n,表示每个特征对应的样本只有r个,矩阵P代表了r个m维向量,每个向量是让每个特征对应的样本向量所要投影的方向向量。和SVD相比,将SVD两边同时左乘以一个矩阵Ur*m,就得到了Ar*n,即在行方向上进行了降维,等式右边是Ur*m和Um*r相乘为单位向量,因为Um*r是AA'的特征向量,是AA'的前r个不为0的特征值对应的特征向量,是m维的,由于AA'是对称矩阵,那么各个特征向量之间是正交的,这样就得到了刚刚PCA推导出来的公式
可以看出:
--PCA几乎可以说是对SVD的一个包装,如果我们实现了SVD,那也就实现了PCA了
--而且更好的地方是,有了SVD,我们就可以得到两个方向的PCA,如果我们对A’A进行特征值的分解,只能得到一个方向的PCA。
❽ LDA的原理
LDA是一种基于有监督学习的降维方式,将数据集在低维度的空间进行投影,要使得投影后的同类别的数据点间的距离尽可能的靠近,而不同类别间的数据点的距离尽可能的远。
❾ 现有矩阵降维常用方法
降维方法分为线性核非线性降维,非线性降维又分为基于核函数和基于特征值的方法。
线性降维方法:PCA ICALDA LFA LPP(LE的线性表示)
于核函数的非线性降维方法:KPCA KICAKDA
基于特征值的非线性降维方法(流型学习):ISOMAP LLE LE LPP LTSA MVU
❿ 降维算法二:LDA(Linear Discriminant Analysis)
学习分类算法,线性分类器最简单的就是LDA,它可以看做是简化版的SVM,如果想理解SVM这种分类器,那理解LDA就是很有必要的了。
谈到LDA,就不得不谈谈PCA,PCA是一个和LDA非常相关的算法,从推导、求解、到算法最终的结果,都有着相当的相似。
本次的内容主要是以推导数学公式为主,都是从算法的物理意义出发,然后一步一步最终推导到最终的式子,LDA和PCA最终的表现都是解一个矩阵特征值的问题,但是理解了如何推导,才能更深刻的理解其中的含义。本次内容要求读者有一些基本的线性代数基础,比如说特征值、特征向量的概念,空间投影,点乘等的一些基本知识等。除此之外的其他公式、我都尽量讲得更简单清楚。
LDA的全称是Linear Discriminant Analysis(线性判别分析),是一种 supervised learning 。有些资料上也称为是Fisher’s Linear Discriminant,因为它被Ronald Fisher发明自1936年,Discriminant这次词我个人的理解是,一个模型,不需要去通过概率的方法来训练、预测数据,比如说各种贝叶斯方法,就需要获取数据的先验、后验概率等等。LDA是在 目前机器学习、数据挖掘领域经典且热门的一个算法 ,据我所知,网络的商务搜索部里面就用了不少这方面的算法。
LDA的原理是,将带上标签的数据(点),通过投影的方法,投影到维度更低的空间中,使得投影后的点,会形成按类别区分,一簇一簇的情况,相同类别的点,将会在投影后的空间中更接近。要说明白LDA,首先得弄明白线性分类器( Linear Classifier ):因为LDA是一种线性分类器。对于K-分类的一个分类问题,会有K个线性函数:
上式实际上就是一种投影,是将一个高维的点投影到一条高维的直线上,LDA最求的目标是,给出一个标注了类别的数据集,投影到了一条直线之后,能够使得点尽量的按类别区分开,当k=2即二分类问题的时候,如下图所示:
红色的方形的点为0类的原始点、蓝色的方形点为1类的原始点,经过原点的那条线就是投影的直线,从图上可以清楚的看到,红色的点和蓝色的点被原点明显的分开了,这个数据只是随便画的,如果在高维的情况下,看起来会更好一点。下面我来推导一下二分类LDA问题的公式:
假设用来区分二分类的直线(投影函数)为:
LDA分类的一个目标是使得不同类别之间的距离越远越好,同一类别之中的距离越近越好,所以我们需要定义几个关键的值。
类别i的原始中心点为:(Di表示属于类别i的点)
类别i投影后的中心点为:
衡量类别i投影后,类别点之间的分散程度(方差)为:
最终我们可以得到一个下面的公式,表示LDA投影到w后的损失函数:
分类的目标是, 使得类别内的点距离越近越好(集中),类别间的点越远越好。 分母表示每一个类别内的方差之和,方差越大表示一个类别内的点越分散,分子为两个类别各自的中心点的距离的平方,我们最大化J(w)就可以求出最优的w了。想要求出最优的w,可以使用拉格朗日乘子法,但是现在我们得到的J(w)里面,w是不能被单独提出来的,我们就得想办法将w单独提出来。
我们定义一个投影前的各类别分散程度的矩阵,这个矩阵看起来有一点麻烦,其实意思是,如果某一个分类的输入点集Di里面的点距离这个分类的中心店mi越近,则Si里面元素的值就越小,如果分类的点都紧紧地围绕着mi,则Si里面的元素值越更接近0.
同样的将J(w)分子化为:
我们希望 分母越小越好,分子越大越好 :
分母小,则每个类内部数据点比较聚集;
分子大,则两个类别的距离较远。
所以需要找出一个 W 使 J(W) 的值最大。
这样就可以用最喜欢的拉格朗日乘子法了,但是还有一个问题,如果分子、分母是都可以取任意值的,那就会使得有无穷解,我们将分母限制为长度为1(这是用拉格朗日乘子法一个很重要的技巧,在下面将说的PCA里面也会用到,如果忘记了,请复习一下高数),并作为拉格朗日乘子法的限制条件,带入得到:
这样的式子就是一个求特征值的问题了。
对于N(N>2)分类的问题,我就直接写出下面的结论了:
二者都有降维的作用。