1.2. 线性判别分析与二次判别分析#
线性判别分析(LinearDiscriminantAnalysis
)和二次判别分析(QuadraticDiscriminantAnalysis
)是两种经典的分类器,顾名思义,它们分别具有线性和二次决策面。
这些分类器之所以吸引人,是因为它们具有易于计算的闭式解,本质上是多类别(分类器),在实践中已被证明运行良好,并且没有需要调优的超参数。
该图显示了线性判别分析和二次判别分析的决策边界。底部一行展示了线性判别分析只能学习线性边界,而二次判别分析可以学习二次边界,因此更具灵活性。
示例
具有协方差椭球的线性判别分析和二次判别分析: 在合成数据上比较LDA和QDA。
1.2.1. 使用线性判别分析进行降维#
LinearDiscriminantAnalysis
可用于执行监督降维,其方法是将输入数据投影到一个线性子空间,该子空间由使类别间分离最大化的方向组成(其精确含义将在下面的数学部分讨论)。输出的维度必然小于类别数,因此这通常是一种相当强的降维,仅在多类别设置中才有意义。
这在transform
方法中实现。所需的维度可以使用n_components
参数设置。此参数对fit
和predict
方法没有影响。
示例
Iris数据集的LDA与PCA二维投影比较: LDA和PCA在Iris数据集降维方面的比较
1.2.2. LDA和QDA分类器的数学公式#
LDA和QDA都可以从简单的概率模型中推导出来,这些模型对每个类别
我们选择使该后验概率最大化的类别
更具体地说,对于线性判别分析和二次判别分析,
其中
1.2.2.1. QDA#
根据上述模型,后验的对数是:
其中常数项
注意
与高斯朴素贝叶斯的关系
如果在QDA模型中假设协方差矩阵是对角线矩阵,则输入在每个类别中被认为是条件独立的,并且所得分类器等同于高斯朴素贝叶斯分类器naive_bayes.GaussianNB
。
1.2.2.2. LDA#
LDA是QDA的一个特例,其中每个类别的高斯分布被假定共享相同的协方差矩阵:对于所有
项
LDA的对数后验也可以写成[3]:
其中coef_
和intercept_
属性。
从上述公式可知,LDA具有线性决策面。对于QDA,对高斯分布的协方差矩阵
1.2.3. LDA降维的数学公式#
首先请注意,K均值
如前所述,我们可以将LDA解释为将
在此d维空间中计算欧几里得距离,等价于首先将数据点投影到
我们可以通过投影到线性子空间transform
方法中使用的n_components
参数。更多详细信息请参见[1]。
1.2.4. 收缩与协方差估计器#
收缩是一种正则化形式,用于在训练样本数量相对于特征数量较少的情况下改进协方差矩阵的估计。在这种情况下,经验样本协方差是一个较差的估计器,而收缩有助于提高分类器的泛化性能。可以通过将LinearDiscriminantAnalysis
类的shrinkage
参数设置为'auto'
来使用收缩LDA。这会根据Ledoit和Wolf引入的引理[2]以解析方式自动确定最佳收缩参数。请注意,目前收缩仅在将solver
参数设置为'lsqr'
或'eigen'
时才有效。
shrinkage
参数也可以手动设置为0到1之间的值。特别是,值为0表示不收缩(这意味着将使用经验协方差矩阵),值为1表示完全收缩(这意味着将使用方差的对角矩阵作为协方差矩阵的估计)。将此参数设置为这两个极值之间的值将估计协方差矩阵的收缩版本。
收缩的Ledoit和Wolf协方差估计器可能并非总是最佳选择。例如,如果数据分布是正态分布的,则Oracle近似收缩估计器sklearn.covariance.OAS
产生的均方误差小于使用shrinkage="auto"和
Ledoit和Wolf公式所得结果。在LDA中,数据被假定为类别条件高斯分布。如果这些假设成立,使用带有OAS协方差估计器的LDA将比使用Ledoit和Wolf或经验协方差估计器产生更好的分类精度。
可以通过discriminant_analysis.LinearDiscriminantAnalysis
类的covariance_estimator
参数选择协方差估计器。协方差估计器应具有fit方法和covariance_
属性,就像sklearn.covariance
模块中的所有协方差估计器一样。
示例
用于分类的普通、Ledoit-Wolf和OAS线性判别分析: LDA分类器与经验、Ledoit Wolf和OAS协方差估计器的比较。
1.2.5. 估计算法#
使用LDA和QDA需要计算对数后验,它取决于类别先验
‘svd’求解器是LinearDiscriminantAnalysis
的默认求解器,也是QuadraticDiscriminantAnalysis
唯一可用的求解器。它既可以执行分类,也可以执行转换(对于LDA)。由于它不依赖于协方差矩阵的计算,‘svd’求解器在特征数量较多的情况下可能更受欢迎。‘svd’求解器不能与收缩一起使用。对于QDA,SVD求解器的使用基于这样一个事实:协方差矩阵
'lsqr'
求解器是一种高效算法,仅适用于分类。它需要显式计算协方差矩阵
'eigen'
求解器基于类间散度与类内散度比率的优化。它既可用于分类,也可用于转换,并支持收缩。然而,'eigen'
求解器需要计算协方差矩阵,因此它可能不适用于特征数量较多的情况。
参考文献