线性和二次判别分析

一、符号说明

:协方差矩阵,特征之间相互独立,其实就是一个对角矩阵。

二、引言

线性判别分析(LDA)和二次判别分析(QDA)是两个经典的分类器。它们分别代表了线性决策平面和二次决策平面。这些分类器很容易计算得到解析解(指通过严格的公式所求得的解),其天生具有多分类的特性,且在实践中无需调参。线性判别分析与二次判别分析不同之处在于二次判别分析可以学习二次边界,模型更加灵活。如图:

线性VS二次

三、使用线性判别分析来降维

线性判别分析通过把输入的数据投影到由最大化类之间分离的方向所组成的线性子空间,可以执行有监督降维,输出的维度必然会比原来的类别更少,多分类环境下,它是一个十分强大的降维算法。

四、线性与二次判别分析的数学公式

LDA与QDA都源于简单的概率模型,这些模型对于每一个类别k的相关分布P(X|y=k)都可以通过贝叶斯定理获得:

我们最大化条件概率的类别k,更具体的说,P(X|y=k)被建模成多变量高斯分布:

其中n代表特征个数,我们需要从训练数据中估计出类的先验概率P(y=k),类别均值,以及协方差矩阵。在LDA中,每个类别k的高斯分布共享协方差矩阵,通过比较两个类别的对数概率,可以看出两个类别之间的线性决策面,即。在QDA中,没有关于高斯协方差矩阵的假设,因此有了二次决策平面。

五、收缩(Shrinkage)

收缩是一种训练样本数量相比于特征而言很小的情况下可以提升预测准确性的工具。

使用收缩VS不使用收缩

六、求解器(Solver)的选择

默认的求解器为'svd'(奇异值分解),不依赖于协方差矩阵的计算,在特征数量特别大时很有优势,但是,它无法与收缩同时使用。还有求解器‘lsqr'(最小二乘),它是一个高效的算法,支持收缩,但是仅用于分类。最后一个求解器'eigen'(特征分解),基于类间散度和类内离散率之间的优化,支持收缩,可以用于分类,但是它需要计算协方差矩阵,因此其不适用于大量特征的情况。

七、线性与二次判别分析示例

我们用鸢尾花数据集做个示例,原数据特征为4维,降维后只剩两维,方便可视化。

LDA降维后可视化

这就是LDA降维后的效果,可以看到LDA将该数据集降成了可以明显区分的两个部分。

我们再看看不降维与降维的效果:

不降维VS降维

可以看出来,几乎无差别。至于LDA降维公式的推导,博主推过曾经手写推过一次,推完之后感觉没有什么实际意义,重要的是我们知道LDA用于有监督线性降维就OK了。以后在做数据建模的时候能有这方面的意识就行。至于QDA,因为它无法用于降维可视化,所以不多讲述,该算法主要运用在非线性关系上建模,比如异或问题,它就是一种非线性关系。


参考:《Scikit-Learn官方API》

如有疑问,请留言;如有错误,请指正

你可能感兴趣的:(线性和二次判别分析)