高斯判別分析-1
Gaussian Discriminant Analysis (GDA) - 1
1. 概述
高斯判別分析(GDA)是一種生成式分類模型,是機器學習中的概率模型。它假設每個類別的特徵都遵循高斯分佈,並利用貝式定理來進行分類。
2. 簡單舉例
假設我們手上有一些男生與女生的身高與體重資料。我們的目標是:未來只要給定一個人的身高和體重,就能判斷他比較可能是男生還是女生。
在 GDA(Gaussian Discriminant Analysis) 中,我們真正想回答的問題其實是:
在已知這個人的身高與體重之後,他是男生(或女生)的機率有多大?
為了回答這個問題,GDA 假設男生與女生的身高–體重資料,各自來自不同的二維高斯分布。透過現有資料,我們可以分別估計出男生與女生的平均身高體重,以及資料的變異程度(也就是分布的形狀與擴散情況)。
一旦這些分布被估計出來,對於任何一個給定的身高–體重組合,GDA 都可以計算:
- 在男生分布下,出現這個資料點的可能性
- 在女生分布下,出現這個資料點的可能性
再結合各類別本身出現的比例,就能算出這個人屬於男生或女生的後驗機率。
當某一點在「男生」與「女生」兩個類別下的機率剛好一樣時,這些點就形成了分類的分界線。把所有這樣的點連起來,就能在身高–體重平面上畫出一條決策邊界(decision boundary),用來區分男生與女生。
因此,GDA 模型實際上做了兩件事情:
- 對單一個體進行機率判斷:給定身高與體重,計算他屬於男生或女生的機率。
- 在整個特徵空間中建立分類規則:由機率相等的條件導出決策邊界,之後可以直接用這條邊界進行分類。
3. 為什麼 GDA 被稱為生成式模型?
生成式模型的核心想法是: 先學會每一類資料「長什麼樣子」,再用這個模型來做判斷。
具體來說,它會關心三件事:
- 這個點屬於哪一類?
- 每一類的資料大致分布在哪個區域、形狀如何?
- 如果只知道這一類的模型,甚至能不能「生成」看起來合理的新資料?
也就是說,生成式模型不是只關心「怎麼分」,而是試著回答一個更根本的問題:
現實世界中的資料是怎麼被產生出來的?
3.1 GDA 如何體現「生成式」的想法?
在 Gaussian Discriminant Analysis(GDA)中,我們直接假設資料的生成方式:
每一個類別的資料,都是由某個高斯分布隨機產生的。
回到身高–體重的例子,我們假設:
- 男生的身高–體重資料來自一個二維高斯分布
- 女生的身高–體重資料來自另一個二維高斯分布
透過已知的資料,我們可以分別估計:
- 每一類的平均位置(例如典型的身高與體重)
- 資料的擴散程度與方向(變異數與相關性)
一旦這些分布被學好,我們可以:
- 計算「某個人屬於男生或女生的機率」
- 畫出對應的決策邊界
- 從模型中隨機產生新的身高–體重資料點
這正是 GDA 被稱為生成式模型的原因: 它先建立「資料如何生成」的模型,再由這個模型自然地導出分類結果。
4. 與判別式模型的差別
到目前為止,我們看到 GDA 是一種生成式模型:它先嘗試理解「每一類資料是怎麼產生的」,再利用這個對資料生成機制的理解來進行分類。
那麼,另一大類在機器學習中同樣非常常見的方法——判別式模型(discriminative models)——又是在做什麼呢?
4.1 生成式 vs. 判別式模型
判別式模型(例如 Logistic Regression)不關心資料是怎麼產生的,它只關心一個問題:
給定一筆觀測到的資料,我要怎麼直接把它分到正確的類別?
換句話說,假設資料為 $\mathbf{x}$, 相對應的類別為 $y$,判別式模型直接學習的是 $$ P(y\mid \mathbf{x}), $$ 也就是:在已經看到資料 $\mathbf{x}$ 的情況下,它屬於類別 $y$ 類別的機率有多大。
相對地,生成式模型採取的是完全不同的觀點。它不直接問「這筆資料該分到哪一類」,而是先學習 $$ P(\mathbf{x} \mid y), $$ 也就是,如果資料真的來自類別 $y$,那我們觀察到 $\mathbf{x}$ 的機率會有多大?
一旦我們知道了每個類別「會產生什麼樣的資料」,再搭配類別本身出現的機率 $P(y)$,就可以透過貝氏定理反推出 $P(y\mid \mathbf{x})$,進而完成分類。
更白話一點的來說,GDA 關心的是「世界怎麼產生資料」,Logistic Regression 關心的是「邊界畫在哪裡」。
5. 決策邊界長什麼樣?
在 GDA 裡,模型最後畫出來的「分界線」長什麼樣子,其實取決於我們對資料分布做了多嚴格的假設。
5.1 情況一:所有類別看起來「形狀一樣」
如果我們假設不同類別的資料只是中心點不同,但「散開的方向與程度」都一樣(也就是:所有類別共用同一個共變異數矩陣)。那麼模型畫出來的分界線就會是一條直線(在高維空間則是一個超平面)。
在這種情況下,GDA 做出來的分類結果,其實和 Logistic Regression 非常接近,甚至在某些條件下是等價的。
5.2 情況二:每一類都有自己的「形狀」
如果我們允許不同類別的資料有不同的擴散方向與形狀(也就是:每一類都有自己的共變異數矩陣)。那模型就能畫出更彎曲、彈性的分界線,例如橢圓、拋物線這類的二次曲線。
這樣的 GDA 就能處理比較複雜、非線性的分類問題。
5.3 小總結
假設越簡單,邊界越直;假設越自由,邊界越彎。
- 如果所有類別共用同一個共變異數矩陣
- → 決策邊界是線性的(一條直線 / 超平面)
- → 這時其實等價於 Logistic Regression(在某些條件下)
- 如果每一類有自己的共變異數矩陣
- → 決策邊界 二次曲線(橢圓、拋物線等)
6. GDA 的優點與限制
為什麼大家會用 GDA?
- 在資料量不大時,效果往往很好
當資料量還不大的時候,GDA 常常能用「比較少的參數」抓到整體結構,反而比複雜模型表現更好。
- 模型有清楚的機率意義、可解釋
GDA 不只告訴你「分到哪一類」,還能說「有多像這一類」。這在需要解釋模型判斷理由的情境(例如科學或醫療)特別重要。
- 類別不平衡也處理得很自然
如果某一類本來就比較少,GDA 可以直接把「這一類本來就少見」這件事放進模型裡(先驗機率),不需要額外技巧。
使用 GDA 時要注意什麼?
- 高斯假設若不合理,效果會變差
GDA 假設資料「長得像高斯分布」,如果實際資料分布歪得很厲害,模型就容易判斷錯。
- 對離群值(outliers)較敏感
少數特別奇怪的資料(離群值)可能會影響平均值和變異數,進而拉歪整個模型。
- 高維時,共變異數估計可能不穩定
當特徵很多、但資料又不夠多時,共變異數矩陣會很難估,模型容易變得不可靠。
7. 小總結
Gaussian Discriminant Analysis(GDA)是一種以機率為核心的生成式分類方法。它不是直接學「怎麼分界」,而是先去理解每一類資料是怎麼產生的。
在 GDA 中,我們假設每個類別的資料都來自一個高斯分布,並透過資料估計出各類別的平均值與分布形狀。當看到一筆新資料時,GDA 會利用貝氏定理,計算它在不同類別下出現的可能性,並選擇最有可能的那一類。因此,分類結果與決策邊界並不是硬設計出來的,而是自然地由資料分布決定:
- 分布形狀相似時,邊界接近直線
- 分布形狀不同時,邊界會變成彎曲的曲線
整體而言,GDA 提供了一個直觀、可解釋、機率意義清楚的分類框架,也讓我們清楚看見「生成式模型」與「判別式模型」在思維上的根本差異。
備註:GDA 的數學推導部分請見 GDA - 2。