對於常見的分類算法,經常用到的都是判別學習算法,如 logistic二元分類器,還有softmax分類器等。它們都有一個共同的特點,那就是我們直接去求 p(y|x; θ), 有時候也表示為 hθ(x),這類方法的重點是去擬合參數θ。
還有一種算法:生成學習算法。它的中心思想是直接去求p(y|x; θ)很難,然后轉而去求 p(x|y) 與p(y ), 然后利用貝葉斯公式得到:p(y|x) = p(x|y) * p(y )/ p(x)。
下面介紹生成學習算法中的高斯判別分析:
它是核心假設為:p(x|y)服從高斯分布。這個假設的含義就是指在給定某一類別下,所屬類別的所有樣本的分布為高斯分布。這個假設在大多數情況下是成立的。
下面以兩分類(伯努利分布)來說明一個高斯判別分析:
當我們求p(y|x)時, 我們利用葉斯公式:
對於分類問題,我們不用關心p(x),因為我們求的是所屬類 Y 的概率大小啊,所以我們只關心分子就可以啦,即:
如果我們非得想求出p(x)也可以,利用全概率公式就可以求出來了,即 p(x) = p(x|y = 1)p(y = 1) + p(x|y = 0)p(y = 0)。
下面呢,讓我們看一下各自的分布情況哈:
由於 y服從伯努利分布,而p(x|y)服從的為高斯分布,所以呢,可以寫作:
注意:雖然類別分別為0與1,但是我們用了相同的協方差矩陣。當然也可以用不相同的協方差矩陣。
然后呢,對於一個訓練樣本集合來說,我們可以寫出它的擬然函數來,如下所示為log形式的擬然函數:
為使似然函數得到最大值,對參數求使層數為 0,我們得到對應的參數的值:
到現在為止,我們就得到了高斯判別分析模型了,它可以用於分類的哦,分類時,我們的核心假設為對於每類中的樣本分布呈現高斯分布。
我們來看一個直觀的的例子,下圖為二維的情況下的圖哈,變量x 為二維的。
高斯判別分析模型與logistic模型的關系:
在兩分類上,我們也可以用logistic模型進行分類(它屬於判別學習算法),我們看看高斯判別模型與logistic回歸模型的關系哈,先看個圖:
說明了什么呢?
其實 上圖中的losgtic回歸網線就是p(y=1|x) = p(x |y=1)p(y=1) / p(x)的曲線。 兩個高斯分布交界的地方就是logistic曲線等於0.5的地方, 因為在這一點 p(y = 0) 與 p(y =1)的概率相同。
當p(x |y )服從高斯分布時,我們可以推出logistic回歸,但是呢反推是不成立的。 所以呢, 當p(x |y)真的服從高斯分布時,我們用高斯判別分析比logistic模型更好。
總之呢,高斯判別作出了更強的假設,需要少的數據,並且大大部分的情況下結果很好的,而logistic回歸模型通常更加泛化。
參考:ufldl 教程;