补:写完算法才发现这章内容有点长,所以我决定把LDA和QDA的区别和有关降维的应用放到下一章去讲
西瓜书里是这样介绍的线性判别的:
LDA的思想十分朴素:给定训练样例集,设法将样例投影到一条直线上,使得同类样例的投影点尽可能接近、异类样例的投影点尽可能远离;在对新样本进行分类时,将其投影到同样的这条直线上,再根据投影点的位置来确定新样本的类别。
sklearn的这段话给出了几个信息:
第一,判别的核心叫做决策面(decition surface),而线性判别和二次判别具有不同的决策面。
第二,线性判别和二次判别作为经典的分类算法,有几个很是吸引人的优点:
线性判别有概率模型和非概率模型两种阐述方式
(依据李航老师的《统计学习方法》,概率模型和非概率模型的主要区别在于,其内部变量是否可以表示为联合概率分布的形式)
西瓜书上是从非概率模型的角度对LDA阐述的,因为从这个角度,我们可以更直观的理解LDA的内核。
根据我们在简介里对其思想的阐述,我们发现有两个抽象的概念在约束模型。分别是 “同类样例的投影点尽可能接近” 和 “异类样例的投影点尽可能远离”。
首先,我们要找到一个线性变换 ω \omega ω 来将数据集投影到一条直线上(一维空间)。( ω \omega ω是优化目标)
于是,我们计算正负两类的样本中心点,并记为 μ 0 , μ 1 \mu_0,\mu_1 μ0,μ1.
既然 μ 0 , μ 1 \mu_0,\mu_1 μ0,μ1表示原空间(二维空间)同类样本的中心,那么 ω T μ 0 , ω T μ 1 \omega^T\mu_0,\omega^T\mu_1 ωTμ0,ωTμ1 是不是就可以可以投影空间中(一维空间)同类样本的中心。
要让“异类样例的投影点尽可能远离”,实际上,就是让这两个类的中心远离,也就是让它们之间的“距离”最远。 这里,我们距离的定义为 l 2 − n o r m l_2-norm l2−norm。
这样,我们得到了第一个优化目标,即最大化 ∥ ω T μ 0 − ω T μ 1 ∥ 2 2 \parallel\omega^T\mu_0-\omega^T\mu_1\parallel_2^2 ∥ωTμ0−ωTμ1∥22
化简一下为 ω T ( μ 0 − μ 1 ) ( μ 0 − μ 1 ) T ω \omega^T(\mu_0-\mu_1)(\mu_0-\mu_1)^T\omega ωT(μ0−μ1)(μ0−μ1)Tω(这是一个常数)
为了方便表示,记 ( μ 0 − μ 1 ) ( μ 0 − μ 1 ) (\mu_0-\mu_1)(\mu_0-\mu_1) (μ0−μ1)(μ0−μ1)为 S w S_w Sw
( S w S_w Sw)的意思是“类间散度矩阵”(within-class scatter matrix)
μ 0 , μ 1 \mu_0,\mu_1 μ0,μ1只能表示样本的中心,却不能表示样本的离散程度。对于离散程度,我们用协方差来表示。
记正负类样本的协方差矩阵为 Σ 0 , Σ 1 \Sigma_0,\Sigma_1 Σ0,Σ1. 则每类样本的离散程度可表示为 ω T Σ 0 ω , ω T Σ 1 ω \omega^T\Sigma_0\omega,\omega^T\Sigma_1\omega ωTΣ0ω,ωTΣ1ω .
这样,我们又得到了第二个目标,即最小化 ω T Σ 0 ω + ω T Σ 1 ω \omega^T\Sigma_0\omega+\omega^T\Sigma_1\omega ωTΣ0ω+ωTΣ1ω
化简一下为 ω T ( Σ 0 + Σ 1 ) ω \omega^T(\Sigma_0+\Sigma_1)\omega ωT(Σ0+Σ1)ω(这是也一个常数)
为了方便表示,记 Σ 0 + Σ 1 \Sigma_0+\Sigma_1 Σ0+Σ1为 S b S_b Sb
( S b S_b Sb)的意思是“类内散度矩阵”(between-class scatter matrix)
结合两个目标,我们采用比值定义的方法来定义我们的目标函数
J = ω T S b ω ω T S w ω J = \frac{\omega^TS_b\omega}{\omega^TS_w\omega} J=ωTSwωωTSbω (成为广义瑞利商)
我们的目的是最大化目标函数J
线性判别在多分类上的推广体现在定义了整个样本集的数据分布。具体可参照西瓜书第三章第4小节。
sklearn对线性判别的阐述是基于贝叶斯决策理论的。从这个角度,我们将引出二次判别分析(QDA)并阐明它与LDA的不同
在这部分,GDA与LDA保持一致,没有分别。
看到sklearn给出的公式,我们可以发现这部分其实很好理解。
最神奇的事情来了,为了方便计算,我们对后验概率P(y=k|x)取对数,得到了以上的新的目标函数log-posterior
。
这就是QDA的全部内容。
哈哈哈哈哈哈,开玩笑。我们来对这个目标还是做个简单的分析。
目标函数分为四项:
LDA是QDA的一种特殊情况,它对所有样本集做了一个假设,那就是,所有的样本都服从一个分布(我查资料的时候,发现有的博客里写高斯分布,其实是不严谨的。只能说,它们满足同分布,而生活中的数据一般情况下满足高斯分布)
在这种情况下,我们对数后验概率中的第一项(表示数据分布的一项),对不同类别就没有区分度了,可舍弃或视为常数。
对这个对数后验概率化简,我们可以得到一个关于样本x的一次函数,这就是为什么这个算法为什么被称为线性判别的原因。
这篇博客里,我主要介绍了LDA和QDA的思想与算法
我们还有关于它们的区别、应用没有介绍。
大家可以看下一篇博客(如果我已经写完了的话)。
说实话,最近我都是日更,还翘了很多课,制作不易,还请点个赞,哈哈哈哈哈哈。