版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_31823267/article/details/89135350
项目地址:https://github.com/Daya-Jin/ML_for_learner/blob/master/discriminant_analysis/LinearDiscriminantAnalysis.ipynb
原博客:https://daya-jin.github.io/2018/12/05/LinearDiscriminantAnalysis/
LDA
单变量二分类
假设现在有一个单变量二分类问题,并且标签服从二项分布,特征条件概率服从等方差的高斯分布:
P(y=1)=ϕP(y=0)=1−ϕP(x∣y=1)=2π
σ1exp[−2σ2(x−μ1)2]P(x∣y=0)=2π
σ1exp[−2σ2(x−μ0)2]
那么在给定样本的条件下,这两个类别发生的条件概率分别为:
P(y=1∣x)=P(y=0)P(x∣y=0)+P(y=1)P(x∣y=1)P(y=1)P(x∣y=1)P(y=0∣x)=P(y=0)P(x∣y=0)+P(y=1)P(x∣y=1)P(y=0)P(x∣y=0)
两者之间的对数几率可以写成:
logP(y=0∣x)P(y=1∣x)=logP(y=0)P(y=1)+logP(x∣y=0)P(x∣y=1)=log1−ϕϕ+logexp[−2σ2(x−μ0)2]exp[−2σ2(x−μ1)2]=log1−ϕϕ−2σ2(x−μ1)2+2σ2(x−μ0)2=σ2μ1−μ0⋅x−2σ2μ12−μ02+log1−ϕϕ
由上式可以得到,LDA对于某一样本的线性判别函数可写成:
δ1(x)=σ2μ1⋅x−2σ2μ12+logϕδ0(x)=σ2μ0⋅x−2σ2μ02+log(1−ϕ)
单变量多分类
不难得到,对于多分类问题,LDA模型的预测输出为:
f(x)=argkmaxδk(x)=argkmax σ2μk⋅x−2σ2μk2+logpk
其中
pk为类分布概率。
多变量多分类
更一般的,讨论多变量的情况下,假如数据
X有
p个特征,在
y=k的条件下,引入协方差矩阵,特征条件概率可以写成:
P(x∣y=k)=(2π)p/2∣Σ∣1/21exp(−21(x−μk)TΣ−1(x−μk))
线性判别函数为:
δk(x)=xTΣ−1μk−21μkTΣ−1μk+logpk
LDA模型的预测输出为:
f(x)=argkmaxδk(x)
其中各参数均由观测数据估计得到:
-
p^k=NNk,
Nk为某个类别的样本数,
N为总样本数
-
μ^k=Nk1∑x∈Ckxi,
Ck表示第
k个类别的样本集合
-
Σ^=N−K1∑k=1K∑x∈Ck(xi−μ^k)(xi−μ^k)T,
K表示类别数
所以可以看出LDA就是一个简单的贝叶斯模型,并没有用到最大似然策略。
QDA
LDA模型有一个前提假设:数据的特征条件概率服从均值不等、方差相等的高斯分布,如果真实情况下方差不等呢?下图展示了方差相等于方差不等的情况:
同理,可以得到QDA(quadratic discriminant analysis)的判别函数:
δk(x)=−21log∣Σk∣−21(x−μk)TΣk−1(x−μk)+logpk
QDA模型的预测输出为:
f(x)=argkmaxδk(x)
其中各参数均由观测数据估计得到:
-
p^k=NNk,
Nk为某个类别的样本数,
N为总样本数
-
μ^k=Nk1∑x∈Ckxi,
Ck表示第
k个类别的样本集合
-
Σ^k=Nk−11∑x∈Ck(xi−μ^k)(xi−μ^k)T.
Fisher角度解析LDA
待补充,这部分没太理解
LDA用于降维
对于
K个类别的数据,假定“物以类聚”的条件成立,那么对于
K个中心,在不影响分类器性能的条件下,我们至少可以将其映射到一个
K−1维的空间。如对于两个聚类中心,我们可以将其映射到一条直线上并且还能将其分开,对于
K>3的情况,可以找到一个
L<K−1维的映射空间。所以LDA算法还有一个用途就是作为有监督的降维算法,其核心思想在于将原数据映射到一个新空间,使得在新空间中各类的均值差尽量大,而每个类内部的方差尽量小,那么在二分类的情况下很容易给出一个直观的优化目标:
maxσ12+σ22(μ1−μ2)2
为了将概念拓展到高维空间,首先给出几个概念:
- 类间(between-class)散度矩阵:
Sb=i=k∑KNk(μk−μ)(μk−μ)T,其中
μk为类均值,
μ为数据均值
- 类内(within-class)散度矩阵:
Sw=k∑Kxi∈Ck∑(xi−μk)(xi−μk)T
在Fisher提出的方法中,降维过程可以写成:
Z=aTX
其中
a为映射矩阵,
X为原数据。那么低维数据的类间方差为
aTSba,类内方差为
aTSwa,降维的优化目标就等同于最大化一个瑞利熵:
amaxaTSwaaTSba
该优化问题还等价于:
amaxaTSbas.t. aTSwa=K
使用拉格朗日数乘法解上述问题:
L(a)=aTSba−λ(aTSwa−K)∂a∂L(a)=2Sba−2λSwa=0Sba=λSwa
假设
Sw可逆:
Sw−1Sba−λa=0(Sw−1Sb−λI)a=0
可以看到这就是一个特征值问题。
实现指导
完整代码