Skip to content

1.2. 线性判别分析和二次判别分析(Linear and Quadratic Discriminant Analysis)

线性判别分析(discriminant_analysis.LinearDiscriminantAnalysis)和二次判别分析(discriminant_analysis.QuadraticDiscriminantAnalysis)是两个经典分类器。顾名思义,它们分别代表了线性决策面和二次决策面。

这些分类器十分具有吸引力,因为它们具有易于计算的封闭式解决方案,本质上是多类的。它们已被证明在实践中能很好地工作并且没有任何超参数要调整。

ldaqda

该图显示了线性判别分析和二次判别分析的决策边界。下面的行的图表明线性判别分析只能学习线性边界,而二次判别分析则可以学习二次边界,因此它更加灵活。

例子:

协方差椭圆形的线性和二次判别分析:LDA和QDA在合成数据上的比较。

1.2.1. 使用线性判别分析进行降维

discriminant_analysis.LinearDiscriminantAnalysis通过将输入数据投影到一个线性子空间来进行有监督的降维,该线性子空间由类之间的距离最大化的方向组成(在下面的数学部分中有对其进行精确的讨论)。输出的维数必须小于原来类别的数量,因此,通常这会缩减相当多的维数,并且仅在多类别中才有意义。

这是函数 discriminant_analysis.LinearDiscriminantAnalysis.transform的实现。可以使用构造函数的n_components参数来设置要降到多少维。此参数对discriminant_analysis.LinearDiscriminantAnalysis.fitdiscriminant_analysis.LinearDiscriminantAnalysis.predict没有影响 。

例子:

鸢尾属植物数据集的LDA和PCA二维投影的比较:在鸢尾属植物数据集上使用LDA和PCA算法的降维比较。

1.2.2. LDA和QDA分类器的数学公式

LDA和QDA都可以从简单的概率模型中推导出来,该模型是对数据$P(X|y=k)$的每一类$k$的条件分布进行建模。然后可以使用贝叶斯规则进行预测: $$ P(y=k | X) = \frac{P(X | y=k) P(y=k)}{P(X)} = \frac{P(X | y=k) P(y = k)}{\sum_{l} P(X | y=l) \cdot P(y=l)} $$ 然后选择能够使该条件概率最大化的类$k$。

更具体地说,对于线性和二次判别分析,会把$P(X|y)$建模成多变量高斯分布(multivariate Gaussian distribution), 其密度函数如下所示:

$$ P(X | y=k) = \frac{1}{(2\pi)^{d/2} |\Sigma_k|^{1/2}}\exp\left(-\frac{1}{2} (X-\mu_k)^t \Sigma_k^{-1} (X-\mu_k)\right) $$ 其中$d$是特征分量的个数.

为要将这个模型当分类器进行使用,我们只需要从训练数据中估算出类的先验概率$P(y=k)$(按类$k$的数量的比例),类的均值$μ_k$(通过经验样本计算类的均值)和协方差矩阵(通过经验样本计算类的协方差矩阵,或通过正则估计器(estimator)计算得到:请参见下面有关收缩(shrinkage)的章节)。

对于LDA,假定每个类的高斯分布都与其他类共享同一个的协方差矩阵的话:$Σ_k=Σ$(是指对所有的$k$)。这导致了线性决策面(linear decision surfaces),,我们可以通过比较对数概率比(log-probability ratios): $log⁡[P(y=k|X)/P(y=l|X)]$来看到这一现象: $$ \log\left(\frac{P(y=k|X)}{P(y=l|X)}\right)=\log\left(\frac{P(X|y=k)P(y=k)}{P(X|y=l)P(y=l)}\right)=0\Leftrightarrow $$ $$ (\mu_k-\mu_l)^t\Sigma^{-1}X=\frac{1}{2} (\mu_k^t \Sigma^{-1} \mu_k - \mu_l^t \Sigma^{-1} \mu_l)-\log\frac{P(y=k)}{P(y=l)} $$

对于QDA,我们对于每个类的高斯分布的协方差矩阵 $Σ_k$ 没有做任何假设,这样就会产生二次决策面(quadratic decision surfaces)。 请参见 3来获得相关更多详细信息。

注意:QDA与高斯朴素贝叶斯的关系(Gaussian Naive Bayes)

如果在QDA模型中假设协方差矩阵是对角阵的话,则对于每个类来说假定输入是条件独立的,这就导致了分类器的结果等同于高斯朴素贝叶斯分类器naive_bayes.GaussianNB

1.2.3. LDA降维的数学公式

为了理解 LDA 在降维上的应用,我们从上面的 LDA 分类规则的几何重构(geometric reformulation)开始说起是十分有用的。 令$K$为目标类的总数量。既然我们在LDA中假定了所有类都共享同一个协方差矩阵$Σ$, 我们就可以重新改变数据规模(rescale the data)使得这个共享的协方差矩阵是个单位阵(identity): $$ X ^ * = D ^ {-1/2} U ^ t X \ text {与} \ Sigma = UDU ^ t $$ 然后,我们就会发现要对一个经过缩放的数据点进行分类就等价于在欧式空间中找到距离这个数据点最近的某个类的均值 $μ_k^∗$,只要找到这个均值, 我们要分类的那个数据点的类的标签就是该均值所代表的类的标签。但是这仅仅只是在由所有类的所有$μ_k^∗$形成$H_K$的仿射子空间$K-1$上效果才会很好. 这表明 LDA 分类器是通过把数据线性投影在$K−1$维空间上来实现降维的。

我们可以进一步缩小维度$L$,通过投影到线性子空间$H_L$上来最大化$μ_k^∗$的方差(实际上,我们正在为转换后的类的$μ_k^∗$提供一种PCA表示形式)。这个$L$对应于discriminant_analysis.LinearDiscriminantAnalysis.transform方法中使用的n_components参数 。请参见3来获得有关更多详细信息。

1.2.4. 收缩(Shrinkage)

在训练数据的样本数量比特征数量少的情况下,收缩(Shrinkage)是一种改进协方差矩阵估计的工具。在这种情况下,样本数据的经验协方差是一个不好的估计量。通过将类discriminant_analysis.LinearDiscriminantAnalysisshrinkage参数设置为“自动(auto)”,根据Ledoit 和 Wolf [4] 的介绍的引理(lemma),这样做可以以解析的方式自动确定最优的收缩参数。需要注意的是,目前收缩(Shrinkage)只能在求解器 solver 的参数为 “lsqr” 或 “eigen”的时候才能发挥作用。

shrinkage参数也可以手动设置在0和1之间。特别是,0对应于无收缩(这意味着将使用经验协方差矩阵),1对应于完全收缩(这意味着对角矩阵的方差将用作协方差矩阵的估计值)。将参数 shrinkage 的取值设定在0到1之间的话,就可以估计出一个收缩(Shrinkage)版的协方差矩阵。

shrinkage

1.2.5. 估计算法

默认的求解器(solver)是 “svd”。 它既可以进行分类也可以对数据进行变换(transform),而且不依赖于协方差矩阵的计算,在特征数量很大的时候这将是一个很大的优势。 然而,“svd”求解器(solver)不能与 shrinkage 参数同时使用。

“ lsqr”求解器(solver)是仅适用于分类的高效算法。它支持收缩(Shrinkage)。

“eigen”求解器(solver)是一种通过优化类间散度(between class scatter)与类内散度(within class scatter)的比率进行求解的方法。它也支持收缩(Shrinkage)。 然而, “eigen” 求解器(solver)需要计算协方差, 因此这种求解器不适用于高维特征的情况。

案例:

应用于分类任务的正常(Normal)和缩减(Shrinkage)的LDA: 具有和不具有收缩(Shrinkage)的LDA分类器的比较。

参考文献:

3(1,2)“The Elements of Statistical Learning”, Hastie T., Tibshirani R., Friedman J., Section 4.3, p.106-119, 2008.

[4]Ledoit O, Wolf M. Honey, I Shrunk the Sample Covariance Matrix. The Journal of Portfolio Management 30(4), 110-119, 2004.

©2007-2019,scikit-learn开发人员(BSD许可证)。 显示此页面源码