GDA是生成学习方法的一个典型代表。
判别学习方法是直接对P(y | x)进行建模,也就是说生成学习方法学到的是P(y | x)这样一个条件概率;另外一种判别学习方法是直接输出 hθ(x) h θ ( x ) ,表示预测结果是关于样本x的显式函数。
生成学习方法是先对P(x | y)和P(y)进行建模,然后通过条件概率公式计算P(y | x)。
在高斯判别分析中,假设不同类别的样本分别服从于不同均值和协方差下的多元高斯分布。
即
假设样本在给定类别的条件下: x|y ~ (u,Σ)=1(2π)n2|Σ|12e−12(x−u)TΣ−1(x−u) N ( u , Σ ) = 1 ( 2 π ) n 2 | Σ | 1 2 e − 1 2 ( x − u ) T Σ − 1 ( x − u ) 。这里 (u,Σ) N ( u , Σ ) 表示多元高斯分布, u u 表示样本的均值, Σ Σ 表示协方差矩阵。
对于2分类问题,假设类别 P(y=1)=ϕ P ( y = 1 ) = ϕ ,那么 P(y=0)=1−ϕ P ( y = 0 ) = 1 − ϕ ,那么 P(y)=ϕy(1−ϕ)1−y P ( y ) = ϕ y ( 1 − ϕ ) 1 − y 。
注意到 ϕ=sum(y=1)n ϕ = s u m ( y = 1 ) n 。表示训练集中正例样本个数,实际上,真实的 ϕ ϕ 是未知的,我们只能通过训练集去估计 ϕ ϕ ,用的方法也是极大似然估计。我们有
(x|y=0) ( x | y = 0 ) ~ (u0,Σ0) N ( u 0 , Σ 0 ) , (x|y=1) ( x | y = 1 ) ~ (u1,Σ1) N ( u 1 , Σ 1 )
显然地,根据Beyas公式,我们有,
P(y|x)=P(x|y)P(y)P(x) P ( y | x ) = P ( x | y ) P ( y ) P ( x ) ,
具体地,
P(y=0|x)=P(x|y=0)P(y=0)P(x) P ( y = 0 | x ) = P ( x | y = 0 ) P ( y = 0 ) P ( x ) ,
P(y=1|x)=P(x|y=1)P(y=1)P(x) P ( y = 1 | x ) = P ( x | y = 1 ) P ( y = 1 ) P ( x ) 。
然后分别极大化上面两式的似然函数即可求得分布中的未知参数 u0,Σ0,u1,Σ1 u 0 , Σ 0 , u 1 , Σ 1 。
那么分类结果就是
多元高斯分布是一元高斯分布的推广,一元高斯分布的情况下含有一个距离的平方项 d=||x−u||2 d = | | x − u | | 2 ,在多元高斯分布的情况下这个距离变成的 d=(x−u)TΣ−1(x−u)‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾√ d = ( x − u ) T Σ − 1 ( x − u ) ,即马氏距离。当多元高斯分布降成一元高斯分布的时候,协方差矩阵就变成了方差 σ2 σ 2 。