线性判别分析法(discriminant_analysis.LinearDiscriminantAnalysis) 和二次判别分析法(discriminant_analysis.QuadraticDiscriminantAnalysis) 是两种经典的分类器。正如他们的名字所示,分别为线性的与二次决策面。
这两种方法很具有吸引力,因为他们拥有容易计算,并且本质是多类的闭合解,提供了在无超参数情况下的良好性能。
![](https://i-blog.csdnimg.cn/blog_migrate/c9adae254aa297d88301e9f7fe41d901.webp?x-image-process=image/format,png)
这个绘图展示了线性与二次判别分析法各自的决策边界。第二行展示了线性判别分析法只能得出一个线性的边界,而二次判别分析法能够得到一个更灵活的二次边界。
示例
Linear and Quadratic Discriminant Analysis with confidence ellipsoid: Comparison of LDA and QDA on synthetic data.
1.2.1 使用线性判别分析法的维数下降
discriminant_analysis.LinearDiscriminantAnalysis 能够同来执行监督降维,通过把输入数据到投影由最大化类间隔(空间)的方向的线性子空间(在下面的数学部分会讨论其确切含义)。让输出的维数个数比类的个数少是必要的,所以这通常是一个相当巨大的维数降维,并且只在多类中才有效。
discriminant_analysis.LinearDiscriminantAnalysis.transform 的实现使得可以通过设置构造器参数 n_components 来设置所需的维度。但是这个参数丝毫不会影响discriminant_analysis.LinearDiscriminantAnalysis.fit 或 discriminant_analysis.LinearDiscriminantAnalysis.predict。
示例
Comparison of LDA and PCA 2D projection of Iris dataset: Comparison of LDA and PCA for dimensionality reduction of the Iris dataset
1.2.2 LDA与QDA分类器的数学公式
LDA(线性判别分析法)和QDA(二次判别分析法)能够使用一个简单的概率模型来分别派生出。这个模型是关于每一类 k 中关于数据概率 P(X|y = k) 的条件分布。然后可以通过使用贝叶斯来获得预测结果:
![](https://i-blog.csdnimg.cn/blog_migrate/c505f8a3b26d73d8bde768467366e76f.webp?x-image-process=image/format,png)
然后我们再选取出这个能使的条件概率达到最大的类。
进一步来说,对于LDA和QDA的 P(X|y) 被建模为具有密度的多元高斯分布。
![](https://i-blog.csdnimg.cn/blog_migrate/fb6c1315e0fa81ce653a60b18910b639.webp?x-image-process=image/format,png)
为了把该模型作为分类器,我们只需要从训练数据中估计其类的先验概率 P(y = k) (通过类 k 示例的规模),类的均值 μk (通过计算经验样本的类均值)和协方差矩阵(通过经验样本类的协方差矩阵或一个正则化估量器:可以看看下面的收缩章节)。
在LDA的情况下,每一个类的高斯代表共享相同的协方差矩阵: Σk 代表所有的 k 上的总和 。这导致其出现线性决策表面,如通过比较对数概率比 log[P(y = k|X) / P(y = l|x)] 可以看出其比例。
![](https://i-blog.csdnimg.cn/blog_migrate/d005fb46a74f960e3726e97d3526865f.webp?x-image-process=image/format,png)
在QDA的情况下,在其高斯下没有对协方差矩阵的假设,使其出现了二次决策表面。可以查看 [3] 以获得更多的细节
注意事项:与高斯朴素贝叶斯的关系
如果在QDA模型中假设协方差矩阵是对角的,那么可以输入数据被假设为在每个类中是条件独立的。并且所得到的分类器等效于高斯朴素贝叶斯分类器 naive_bayes.GaussianNB。
1.2.3 LDA降维的数学公式
为了了解LDA在降维中的是如何应用的,根据上面解释的LDA分类规则开始几何重构是有必要的。我们定义 K 作为目标类的总数。自从在LDA里,我们定义所有的类拥有相同的被估计出的协方差 Σ ,我们可以重缩放输入数据以使得将其定义为如下:
![](https://i-blog.csdnimg.cn/blog_migrate/02647f82673b5ad20b0482b7e6b7e097.webp?x-image-process=image/format,png)
然后可以表明在缩放之后对数据点进行分类等效于获得估计类平均值 μk^* ,其在欧氏距离上最靠近数据点。但是这一点可以通过投影到由所有类的均值 μk^* 生成的仿射 K - 1 子空间之后完成。这表明其是内置在LDA分类器中,通过线性投影在 K - 1 维度空间上的降维操作。
我们可以进一步的降低更多的维度,为了选出 L ,可以通过投影在线性子空间 HL ,其使得投影后, μk^* 的方差最大化(实际上,我们正在为被转换的类均值 μk^* 提供一种PCA的形式)。在 discriminant_analysis.LinearDiscriminantAnalysis.transform 函数,L 在这函数中代表的是 n_components 参数。可以查看 [3] 来获得更多的细节。
1.2.4 收缩
收缩是一个用于提高估量协方差矩阵的工具,其中训练集的数据是比特征的数量要小。在这种情况下,经验样本协方差是一种不好的估计。收缩LDA可以通过在 discriminant_analysis.LinearDiscriminantAnalysis 类中设置 shrinkage 参数为 auto。这样会在通过引入Ledoit and Wolf [4] 的论点后,以分析的方式自动选出合适的收缩参数。但要注意的是,当前的收缩只适合在 solver 参数设置为 'lsqr' 或 'eigen' 时有效。
shrinkage 参数同样也可以手动设置为[0, 1]之间的值。尤其是值设置为0时代表着不收缩(其意味着会使用经验样本协方差矩阵)。和值设置为1时对应着完全收缩(其意味着方差的对角矩阵会被用来作为协方差矩阵的估计)。设置其之间值(即(0, 1))将会估计出对应的协方差矩阵的收缩。
![](https://i-blog.csdnimg.cn/blog_migrate/996fd72554822086b3c2e9456ebaf0da.webp?x-image-process=image/format,png)
1.2.5 估量算法
默认的求解器是 'svd'。它可以执行分类和变换,并且不依赖协方差矩阵的计算。这一特性在应对大量特征数量时是一个优点,但 'svd' 求解器却无法进行收缩。
'lsqr' 求解器是一个对于分类问题是十分有效的算法(只能处理分类问题),并且其支持收缩。
'eigen' 求解器是基于类散射与类散射比之间的最优值。他可以处理分类和变换问题,同时也支持收缩。但是,'eigen' 求解器需要计算器协方差矩阵,所以它在处理大量特征的情况下可能不是一个好选择。
示例
Normal and Shrinkage Linear Discriminant Analysis for classification: Comparison of LDA classifiers with and without shrinkage.
引用
作者:HabileBadger
链接:http://www.jianshu.com/p/d73dd8f48562
來源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。