作者:hooly
微信公號:一口袋星光
想要判斷一個(gè)X到底屬于哪個(gè)分類?我們就判斷X從哪個(gè)分類生成的可能性最大,這就是generative model的原理。
假設(shè)我們的training data共有兩個(gè)class,分別是C1和C2。
如果P(C1|x)>0.5:那我們認(rèn)為x屬于C1的可能性比較大;
如果反之:那我們認(rèn)為x屬于C2的可能性比較大。
有以下公式成立:

我們要求解P(C1|x)
P(C1)和P(C2)是很容易計(jì)算的:P(C1)= C1/C1+C2;P(C2) = C2/C1+C2
難度在于計(jì)算P(x|C1)和P(x|C2)
計(jì)算P(x|C1):
我們假設(shè)C1是由一個(gè)Gaussian distribution來sample的。我們的目的是找到最有可能sample出C1的Gaussian Distribution。
我們知道Gaussian Distribution的公式為:

這個(gè)公式的核心是找到μ和Σ,使C1中所有的data來自于這個(gè)Gaussian Distribution的概率最大:
這就是maximum likelihood:
C1中所有的data來源于這個(gè)Gaussian Distribution的概率最大,也就是說C1中每一個(gè)data來自于這個(gè)Gaussian Distribution的概率的乘積最大。

我們可以求得以下μ和Σ:

也就是說 這個(gè)C1最有可能是從我們剛得到的這個(gè)μ和Σ構(gòu)成的Gaussian Distribution中sample來的,我們就用這個(gè)Gaussian Distribution來表示C1。

我們把x代入,得到C1中生成x的概率,也就是P(x|C1),依次類推,我們得到P(x|C2)。
然后把我們剛計(jì)算得到的P(C1)和P(C2),代入文章最開頭的公式:

即可得到P(C1|x)

但是:
我們往往發(fā)現(xiàn)這樣的效果不太好,testing data準(zhǔn)確率不夠高。怎么做?
在真正的進(jìn)行計(jì)算中,我們通常不會給class1和class2的這兩個(gè)Gaussian Distribution賦予兩個(gè)不同的協(xié)方差矩陣Σ。model的參數(shù)越多,越容易出現(xiàn)varience,也就是說越容易造成over-fitting。

如果我們要有效的減少參數(shù)的話,我們給這兩個(gè)Gaussian Distribution同樣的Σ。將C1sample的數(shù)量除以C1+C2中sample的數(shù)量作為Σ1的權(quán)重,同理作為Σ2的權(quán)重,我們得到了一個(gè)Σ作為新的同時(shí)代表C1和C2的Σ。

根據(jù)這個(gè)結(jié)果,我們可以看到分界線bonudary呈線性的:

神奇的是,我們得到了更高的準(zhǔn)確性。
在P(x|C1)中x可以用一個(gè)向量來表示,x = [x1,x2,x3,x4,...xk]

這時(shí)候,如果你認(rèn)為所有的維都是independent,那么其實(shí)你用的就是樸素貝葉斯分類器(navie Bayes classifier)
作者:hooly
微信公號:一口袋星光
我會在微信公號上持續(xù)更新我的文章,你來討論我很歡迎。