考慮一個分類問題:
根據一個動物的特征來區分該動物是大象(y=1)還是狗(y = 0).利用邏輯回歸找到一條直線,即分界線,將訓練集中的大象和狗分開,當給定一個新的動物特征時,檢查該動物位於分界線的哪一邊,然后做出判斷是大象,還是狗,就是對p(y|x;θ)進行建模。
這里我們來看另一種不同的思路,首先根據訓練集,我們找出大象有什么特征,然后找出狗有什么特征,當要對一個新的動物進行分類的時候,我們就對比該動物是與大象的特征更加匹配還是與狗的特征更加匹配,從而進行分類。
直接學習p(y|x)的算法是直接把特征x映射到類別{0,1},被稱為判別式學習算法(discriminative learning algorithms).這里,我們將要討論另外一種學習算法:生成式學習算法(generative learning algorithms).例如,如果y表示某一個樣本是狗(y=0)還是大象(y=1),那么p(x|y=0)就是狗的特征分布,p(x|y=1)表示大象的特征分布。
在我們知道p(y)(這個值可以根據訓練集中各個類別的多少容易統計出來),並且對p(x|y)建模后,利用貝葉斯規則,就可以得到在給出x時y的后驗分布:
分母p(x) = p(x|y=1)p(y=1)+p(x|y=0)p(y=0).
1.高斯判別分析(Gaussian discriminant analysis,GDA)
用多元正態分布對p(x|y)進行建模:
其中是均值向量,
是協方差矩陣,y不是0就是1,顯然服從伯努利(Bernoulli)分布.
把上面的表達式展開寫:
這個模型的參數有:和
,於是參數的對數似然函數:
通過對上述對數似然函數進行最大化(通過程序,逐步迭代),可以得出各個參數的最大似然評估(下面是理論上數學計算出的具有最大似然性的參數值):
2. GDA和邏輯回歸
如果我們把看作是關於
的函數,則可以發現下面有趣的現象:
是關於
的函數,等式右邊正是邏輯回歸的模型——一種判別式算法,用來建模p(y=1|x).
但是哪一個模型更好呢?GDA還是邏輯回歸?由上面的等式可以看出,如果p(x|y)是多元的高斯分布,可以得出p(y|x)必然就是一種邏輯函數,但是反過來說就不對了。
也就是說GDA比邏輯回歸對模型的假設更強。事實證明,當我們的假設正確(就是假設p(x|y)服從高斯分布)的時候,沒有那個算法在嚴格意義上比GDA好(即准確地估計出p(y|x)).
但需要注意的是,GDA好的前提是假設正確(假設p(x|y)服從高斯分布),即GDA作為一個強假設模型,它對假設的正確與否很敏感,當假設不正確的時候,結果往往很糟糕。
而邏輯回歸作為一個弱假設,對假設的正確與否沒有強假設那么敏感,即使假設不正確,邏輯回歸的同樣可以做出不錯的預測。正是由於這個原因,在實踐中,邏輯回歸要比GDA用的更加
頻繁。