# 2024-10-12 ML
- 主題(李宏毅老師2017年的講義):
- Classification
- Probabilistic Generative Model
- 影片:
- [`Classification: Probabilistic Generative Model`](https://speech.ee.ntu.edu.tw/~tlkagk/courses/ML_2017/Lecture/Classification.mp4)
- 資料:
- [Classification: Probabilistic Generative Model](https://speech.ee.ntu.edu.tw/~tlkagk/courses/ML_2017/Lecture/Classification%20(v2).pdf)
- 分工
- 教學組
- @SUERIC
---
## 目錄
[TOC]
---
# Classification:Probabilistic Generative Model
## 1. 分類模型 (Classification Model)
- **Input**: 一個物件 $x$
- **Output**: 該物件屬於哪一類(n個類別中的某一個)
分類模型的核心目標是透過觀測特徵,將物件歸類到特定類別中,廣泛應用於金融、醫療、手寫辨識等領域。
---
## 2. 應用場景
### 2.1 金融領域
- 使用分類模型進行貸款風險評估
- **Input**: 收入/儲蓄/工作/年紀/財務記錄
- **Output**: 是否可以放款(Binary Classification)
### 2.2 醫療診斷
- **Input**: 症狀/年紀/性別/就醫歷史
- **Output**: 可能的疾病類型
### 2.3 手寫辨識
- **Input**: 手寫字體圖像 (例:「金」字)
- **Output**: 字體所屬的類別
- 中文手寫辨識至少需處理8K個字,對應8K個類別。
### 2.4 人臉辨識
- **Input**: 人臉圖像
- **Output**: 人臉所屬的對象
<img src="https://hackmd.io/_uploads/rk1Mgfu0R.png" width="400px">
## 3. 寶可夢分類
- **Input**: 某隻寶可夢
- **Output**: 該寶可夢的屬性(如雷、水、草等)
### 3.1 數值化特徵
使用數字描述寶可夢的特性,例如:
- 整體強度、生命值、攻擊力、防禦力、特殊攻擊力、特殊防禦力、速度
- 一隻寶可夢,就可以用一個vector來描述它
- 這個vector裡面總共有7個數值;
- 所以1隻寶可夢,可以用這 7 個數字來描述它
- 把7個數字,輸進一個function,這個function就告訴我們它的output是哪一種寶可夢
<img src="https://hackmd.io/_uploads/H13SfiX1Jg.png" width="400px">
### 3.2 18種屬性相剋關係
<img src="https://hackmd.io/_uploads/HyaZHM_RA.png" width="400px">
### 3.3 寶可夢屬性預測的意義
在對戰中,遇到未在圖鑑中的寶可夢,透過預測模型預測其屬性並正確應對。
---
## 4. 預測模型 (Prediction Model)
### 4.1 收集數據
- 寶可夢編號400以下:訓練數據
- 寶可夢編號400以上:測試數據
<img src="https://hackmd.io/_uploads/HyqzKfuCR.png" width="400px">
### 4.2 分類問題解決方式
- 使用**硬解法**:將分類問題轉為回歸問題處理
- 理想的方法:Perceptron與SVM
- 機率的觀點:生成模型 (Generative Model)
### 4.3 硬解法:使用回歸進行二元分類
在某些情況下,我們可以將分類問題轉化為回歸問題來進行硬解。這種方法將二元分類視為回歸模型的問題處理。
#### 訓練與測試
- 在訓練階段,我們將二元分類的兩個類別分別映射為不同的目標值:
- **class 1**:設為 target 1
- **class 2**:設為 target -1
- 在測試階段,將 0 作為分界點,根據以下規則進行分類:
- 若回歸模型輸出大於 0,接近 1,則判定為 class 1
- 若回歸模型輸出小於 0,接近 -1,則判定為 class 2
#### 可能遇到的問題
在此方法中,假設回歸模型的輸出公式為:
$$
b + w_1 x_1 + w_2 x_2 = 0
$$
其中 $x_1$ 和 $x_2$ 是輸入的兩個特徵。class 1 和 class 2 的分界點位於回歸模型等於 0 的綠色線上,樣本值越接近 1 或 -1 越好。然而,當使用回歸時,可能出現以下問題:
- **class 1** 的輸出值越接近 1 越好,但如果超過 1 或遠小於 1 則可能被視為錯誤。
- **Regression定義的好壞標準不適用於分類問題**:對於回歸模型,通常將離預期值越近的輸出視為好的 function(例如紫色範圍),而對於分類模型,應該將分界線更清晰地定義(例如綠色範圍)。
<img src="https://hackmd.io/_uploads/HyqzKfuCR.png" width="400px">
#### Regression與Classification的差異
- **回歸**:適合預測連續數值,但在硬解法中,可能會出現過大或過小的值,導致分類誤差。
- **分類**:適合處理離散類別,模型的輸出是特定的類別,無法直接處理實數。
#### 回歸不適用於分類問題的原因
回歸模型的輸出是實數(real number),而分類模型的輸出則是離散的類別標籤(discrete)。因此,回歸模型對於定義分類邊界的效果較差,無法適當處理類別之間的清晰分界。
- **Regression output**:實數,對於回歸模型的好壞評價是基於結果與預期值的偏差。
- **Classification output**:離散類別,適用於二元或多類別分類問題,應更適合於預測類別而非實數值。
---
### 4.4 Perceptron與SVM
Perceptron與SVM無法直接應用於梯度下降法(不可微分),但這些方法在分類邊界的建立上有獨特的優勢。對於分類問題,這些方法能夠有效建立線性或非線性邊界。
<img src="https://hackmd.io/_uploads/H1mdPimkJx.png" width="400px">
### 4.5 機率的觀點
為了更靈活的分類性能,考慮使用**生成模型 (Generative Model)**,根據類別生成數據的機率來預測所屬類別。
<img src="https://hackmd.io/_uploads/B1RWnGdC0.png" width="400px">
#### 假設情境:抽取彩球
可以將分類問題類比為從不同盒子中抽取彩球的機率問題:
- 假設有兩個盒子,盒子一和盒子二,裡面都有藍球和綠球。
- 隨機從其中一個盒子中抽出一顆球,若這顆球是藍色的,則我們要計算它分別從盒子一和盒子二抽出的機率。
這種概率模型的視角可以幫助我們理解不同類別的生成概率,並用以應用於分類問題。
#### 將盒子換成分類
在分類問題中,可以將盒子類比為不同的類別。假設有一隻寶可夢,我們想要計算它從某一個類別 (class) 中被抽取出來的概率。
<img src="https://hackmd.io/_uploads/H1AxTzdC0.png" width="400px">
通過計算數據在不同類別中生成的概率,我們可以更好地預測其所屬類別。
#### 怎麼算x屬於class 1的機率
class 1 本身的機率 * class 1 sample 一個 object 是 x 的機率
再除掉
class 1 本身的機率 * class 1 sample 一個 object 是 x 的機率
加上
class 2 本身的機率 * class 2 sample 一個 object 是 x 的機率
#### 實例:判斷寶可夢屬於哪個 class 的機率
給定寶可夢 $x$,可以計算它屬於不同 class 的機率,選擇機率最大的 class 作為正確答案。
#### 計算這 4 個值的來源
這 4 個值是從 **training data** 中估測出來的,具體是:
1. **class 1 本身的機率**:在訓練數據中 class 1 的樣本比例
2. **class 1 中 sample 出 $x$ 的機率**:在 class 1 中觀察到 $x$ 的頻率
3. **class 2 本身的機率**:在訓練數據中 class 2 的樣本比例
4. **class 2 中 sample 出 $x$ 的機率**:在 class 2 中觀察到 $x$ 的頻率
#### 整體概念:Generative Model
這一整套從訓練數據中估算機率來進行分類的想法,稱為 **Generative Model**。
透過了解資料的機率分布,我們不僅可以進行分類,也可以生成新的樣本。
---
## 5. 生成模型 (Generative Model) 與 Gaussian Distribution
### 5.1 機率計算
在生成模型中,我們需要計算不同類別的先驗概率和條件概率,這樣可以用來判定某一觀測值屬於哪一類。具體來說,需要知道以下幾個值:
- **P(C₁)**:類別1的先驗概率,表示在沒有任何觀測數據的情況下,類別1出現的機率。
- **P(C₂)**:類別2的先驗概率,表示在沒有任何觀測數據的情況下,類別2出現的機率。
- **P(x | C₁)**:給定觀測值 x 出現的情況下,從類別1中取樣的條件概率。
- **P(x | C₂)**:給定觀測值 x 出現的情況下,從類別2中取樣的條件概率。
說明
這表示我們考慮了兩種情況:
1. **從 class 1 中選出 $x$**,並且在 class 1 中產生 $x$ 的機率。
2. **從 class 2 中選出 $x$**,並且在 class 2 中產生 $x$ 的機率。
把這兩種情況的機率相加,就得到了 $x$ 出現在這兩個 class 中的總機率。
這一整套基於機率的計算方法稱為 **生成模型 (Generative Model)**。當觀測值 x 從生成模型中獲得的概率最大時,即為最可能的正確答案。
<img src="https://hackmd.io/_uploads/B1jf-Q_AC.png" width="400px">
在這裡,P(C₁) 和 P(C₂) 稱為**先驗概率 (Prior Probability)**,表示在沒有考慮任何特徵數據的情況下,各類別的出現概率。
<img src="https://hackmd.io/_uploads/BJVRzQuAA.png" width="400px">
### 5.2 使用 Gaussian 分布進行分類
為了進一步確定某個觀測值屬於哪一類別,我們可以使用 Gaussian 分布來描述每一個類別的數據分布。假設每個類別(如寶可夢的水系)可以用一個向量(包含不同特徵值)來表示,則可以使用 Gaussian 分布來描述這些特徵的分布特性。
假設水系寶可夢的防禦力和特殊防禦力是從 Gaussian 分布中抽取的數值,生成的分布如下圖所示。
我們觀察到一隻沒有在訓練數據中的寶可夢(例如一隻海龜),其防禦力是103,特殊防禦力是45。我們可以計算其從水系寶可夢中抽取出來的概率,以確定它屬於水系的可能性。
<img src="https://hackmd.io/_uploads/SJgANX_RR.png" width="400px">
### 5.3 Gaussian Distribution 的應用
水系寶可夢的**防禦力**和**特殊防禦力**是從一個**Gaussian分布**中sample 出來的。
我們只sample了79個點,得到的分布如下所示:
1. **防禦力**:依據從 Gaussian 分布中抽樣的數據,呈現出防禦力的數值範圍。
2. **特殊防禦力**:同樣基於 Gaussian 分布抽樣,顯示特殊防禦力的數值範圍。
<img src="https://hackmd.io/_uploads/HkT7qiwJJg.png" width="400px">
水系的寶可夢,是從一個機率的分布裡面
它的防禦力跟特殊防禦力是從一個Gaussian的distribution裡面,sample 出來的
我們只是sample了 79 個點得到的分佈長這個樣子
但是從 Gaussian 的 distribution 裡面 sample 出這個點的機率,不是 0
而是假設說,這 79 個點是從一個Gaussian的distribution裡面sample出來的
假設水系寶可夢的防禦力和特殊防禦力是從 Gaussian 分布中抽取的數值,生成的分布如下圖所示。
#### 機率分佈的決定因素
機率分佈是由以下兩個主要參數決定的:
每隻寶可夢可以用一組特徵值來描述,如整體強度、防禦力、特殊防禦力等。這些特徵的分布可以從類別中樣本數據的均值 $\mu$ 和 $\Sigma$ 中得出。
1. **均值 (Mean)**,記作 $\mu$
- 是一個 **向量 (vector)**,表示分佈的中心位置。
2. **共變異數 (Variance)**,記作 $\Sigma$
- 是一個 **矩陣 (matrix)**,用來表示分佈的擴散程度或範圍,通常稱為 **共變異數矩陣 (Covariance Matrix)**。
這兩個參數 $\mu$ 和 $\Sigma$ 共同決定了整個分佈的形狀與範圍。
<img src="https://hackmd.io/_uploads/Hk93O7_C0.png" width="400px">
<img src="https://hackmd.io/_uploads/BJJqFQ_CA.png" width="400px">
#### Gaussian Distribution 解說
##### 概率密度函數
$$
f_{\mu, \Sigma}(x) = \frac{1}{(2\pi)^{D/2} |\Sigma|^{1/2}} \exp\left(-\frac{1}{2}(x - \mu)^T \Sigma^{-1} (x - \mu)\right)
$$
- **\(μ\)**:均值向量,決定分布的中心位置。
- **\(Σ\)**:共變異數矩陣,決定分布的形狀和方向。
### 5.4 範例
1. **同樣的 Σ、不同的 μ**:
- 機率分佈的形狀(擴散程度)相同,但 **最高點的位置** 不一樣,因為均值 \(μ$ 決定了分佈的中心位置。
2. **同樣的 μ、不同的 Σ**:
- 機率分佈的最高點相同,但 **分佈的散布程度** 不一樣。變異數 \(Σ\) 決定了分佈的寬度,即擴散或收縮的程度。
##### 圖片說明
這張圖展示了不同均值向量 \(μ$ 和共變異數矩陣 \(Σ\) 下的二維高斯分布形狀。圖片分為上下兩部分,每部分包含兩組不同的均值和共變異數矩陣配置:
---
###### 上部分
<img src="https://hackmd.io/_uploads/Hk93O7_C0.png" width="400px">
- **左圖**
$\mu = [0, 0]$,共變異數矩陣 $\Sigma = \begin{bmatrix} 2 & 0 \\ 0 & 2 \end{bmatrix}$ 分布呈現對稱的圓形。
- **右圖**
$\mu = [2, 3]$,共變異數矩陣相同,但均值不同。分布中心偏移。
---
###### 下部分
<img src="https://hackmd.io/_uploads/BJJqFQ_CA.png" width="400px">
- **左圖**
$\mu = [0, 0]^T$,共變異數矩陣 $\Sigma= \begin{bmatrix} 2 & 0 \\ 0 & 6 \end{bmatrix}$ 分布在 $x_2$ 方向上被拉伸。
- **右圖**
$\mu = [0, 0]^T$,共變異數矩陣 $\Sigma= \begin{bmatrix} 2 & -1 \\ -1 & 2 \end{bmatrix}$ 分布呈現傾斜的橢圓形,表示變量之間的相關性。
---
### 5.5 結論
以上圖示說明了共變異數矩陣對高斯分布形狀的影響,包括分布的方向和延伸程度。不同的共變異數矩陣配置會改變分布的形狀,從對稱圓形到椭圆形,甚至產生傾斜的效果。
## 6. 機率密度計算
$$
f(x) = e^{-\left[(x-\mu)/2\sigma\right]^2}
$$
https://www.desmos.com/calculator/bmnenbvqzz
<iframe src="https://www.desmos.com/calculator/bmnenbvqzz?embed" width="500" height="500" style="border: 1px solid #ccc" frameborder=0></iframe>
機率密度計算:假設我們知道數據的「平均值」和「範圍」,我們可以用這些數據來判斷新觀測到的數據出現的機率。
<img src="https://hackmd.io/_uploads/SkU4jXdRC.png" width="400px">
#### New x
New x是從來沒有看過的點,不在這79個sampling裡面
但是我們知道μ跟x,就可以把Gaussian distribution的function 寫出來
這個function是depend on μ跟x
把x帶進去就可以算出一個x從這個mean是μ、covariance matrix是Σ的
Gaussian被sample出來的機率
### 6.1 Maximum Likelihood Estimation
#### 怎麼找這個 μ 跟怎麼找這個 Σ ?
這邊用的這個概念呢,叫做 Maximum Likelihood
每一個Gaussian都有可能sample出這79個點
但是,他們sample出這79個點的可能性是不一樣的
因為sample出這79個點的Likelihood是不一樣的
Likelihood做的事就是把μ跟Σ,帶到這個likelihood的function裡面
那它會告訴我們說這個μ跟Σ,它sample出這79個點的機率到底有多大?
找到那一個Gaussian,它sample出這79個點的機率的 Likelihood 是最大的
在所有可能的Gaussian分佈中,**Likelihood 最大的分佈**用 μ*, Σ* 表示,其中:
- **μ***:是最大 Likelihood 對應的均值。
- **Σ***:是最大 Likelihood 對應的變異數矩陣。
這個 μ*, Σ*表示出最能解釋這 79 個點的最佳 Gaussian 分佈參數。
<img src="https://hackmd.io/_uploads/H1Tijm_AC.png" width="400px">
---
<img src="https://hackmd.io/_uploads/SyRg-VOAA.png" width="400px">
---
### 6.3 Gaussian 分佈參數簡述
- **μ1**:均值向量,表示分佈中心在 $x = 75.0$、$y = 71.3$。
- **Σ1**:共變異數矩陣,表示數據的擴散程度和 $x$、$y$ 的相關性。
-- **對角元素**:$874$ 和 $929$ 分別表示 $x$ 和 $y$ 軸上的變異程度。
-- **非對角元素**:$327$ 表示 $x$ 和 $y$ 之間的相關性,正值表示兩者有正相關,即傾向於一起增大或減小。
<img src="https://hackmd.io/_uploads/HkmKzVOAR.png" width="400px">
### 6.4 Likelihood最大化
通過最大化 Gaussian 分布中所有樣本的生成概率,我們找到使這79個樣本點的生成概率最大的 μ* 和 Σ*。
---
<img src="https://hackmd.io/_uploads/S1Cr7NOA0.png" width="400px">
#### P(x|C1)
它就是一個Gaussian distribution的mean跟variance分別是μ1跟Σ1
根據class 1那79隻寶可夢的分布
他們是從一個mean是μ1,covariance是Σ1的distribution裡面sample
#### P(x|C2)
它的這個Gaussian distribution是從mean是μ2,covariance是 Σ2
的distribution裡面sample出來
<img src="https://hackmd.io/_uploads/BJ3Gf5PJ1l.png" width="400px">
---
## 7. Boundary 與 Covariance Matrix 共用
不同的 class可以 share 同一個 covariance matrix \(Σ\)
Σ跟input的feature size的平方成正比
所以當feature size很大的時候,它的Σ增長是非常快的
所以如果你把兩個不同的 Gaussian都給它不同的Σ
那你的model參數可能就太多,model 參數多,variance 就大,也就是容易 overfitting
### 7.1 不同的邊界情況
當不同類別有各自獨立的共變異數矩陣時,分界線通常呈現曲線;但若共用同一共變異數矩陣,分界線則會變成一條直線,這可以簡化模型並避免過擬合。
<img src="https://hackmd.io/_uploads/HkG8cqvy1x.png" width="400px">
<img src="https://hackmd.io/_uploads/r1tQUNd0A.png" width="400px">
### 7.2 Gaussian分類分布
Linear model
在不共用共變異數矩陣的情況下,類別之間的分界線是曲線。而當共用共變異數矩陣時,分界線轉變為直線,這使得模型的正確率約為73%。
<img src="https://hackmd.io/_uploads/rJjwvVdR0.png" width="400px">
---
## 8. 回顧 機率模型的三步驟
建立機率模型的過程可以分為三個步驟:
1. **選擇模型複雜度**:定義簡單或複雜的機率模型。
function set的function說明 :
input 一個x
會有model的參數,分別是required probability和probability distribution
class 1的required probability
class 2的required probability
class 1產生x的probability distribution
class 2產生x的 probability distribution
選擇不同的probability distribution就得到不同的function
就像Gaussian不同的mean跟不同的covariance matrix就得到不同的 probability distribution
把這些不同的probability distribution積分起來就是一個 model,就是一個function set
<img src="https://hackmd.io/_uploads/S1iHAcDyke.png" width="400px">
---
2. **參數估計**:選擇合適的模型參數。
找一個 probability distribution,它可以最大化產生這些 data 的 likelihood
這個是定義 function 的好壞
---
3. **模型訓練**:使用訓練數據來調整模型的複雜度。
**生成模型** 中對 **機率分布** 的應用,特別是在條件為類別 $C₁$ 下觀測值 $x$ 的分布。
主要內容包括:
- **條件機率分解**:給定類別 $C₁$,可以將 $P(x | C₁)$ 分解為各個特徵的條件機率相乘,即:
$$
P(x | C₁) = P(x_1 | C₁) \cdot P(x2 | C₁) \cdots P(x_k | C₁)
$$
- **1-D Gaussian 分布**:每個特徵(如 $x1, x2, \dots, x_k$)可以假設符合 1 維的 Gaussian 分布。
- **二元特徵**:若特徵是二元的(例如 0 或 1),可以使用 Bernoulli 分布。
當假設所有特徵彼此獨立時,可應用 **Naive Bayes 分類器**。
<img src="https://hackmd.io/_uploads/HJCjOVO0R.png" width="400px">
---
## 9. Sigmoid Function
**後驗概率 (Posterior Probability)** 的計算公式,用於估算在觀測值 $x$ 的條件下,屬於類別 $C₁$ 的機率。公式分解過程如下:
1. **Bayes 定理**:後驗概率 $P(C₁ | x)$ 依據 Bayes 定理計算為:
$$
P(C₁ | x) = \frac{P(x | C₁) P(C₁)}{P(x | C₁) P(C₁) + P(x | C₂) P(C₂)}
$$
2. **簡化公式**:可以化簡為:
$$
P(C₁ | x) = \frac{1}{1 + \frac{P(x | C₂) P(C_2)}{P(x | C₁) P(C_1)}}
$$
3. **指數表示**:最後,透過設置 $z = \ln \left( \frac{P(x | C₁) P(C₁)}{P(x | C₂) P(C₂)} \right)$,我們得到:
$$
P(C₁ | x) = \frac{1}{1 + \exp(-z)}
$$
這個結果可以被視為**邏輯回歸**中的 Sigmoid 函數形式,用來將分數 $z$ 轉換成概率。
<img src="https://hackmd.io/_uploads/BypnONuCA.png" width="400px">
在模型的最後階段,我們可以使用 **Sigmoid 函數** 來將輸出結果映射到 0 和 1 之間,這樣可以方便地解釋為機率。
當輸入趨近於正無窮大時,輸出接近1;當輸入趨近於負無窮大時,輸出接近0,這可以作為模型判別的依據。
---
# 補充資料
---
## Probabilistic Generative Model 概率生成模型
是一種統計模型,用於描述生成數據的過程。這類模型可以從觀察到的數據中學習並生成新的數據點。其主要特點是,它們假設數據是由潛在的隱藏變量或因素生成的,並且可以對這些隱藏變量進行建模。
主要特徵
生成過程:模型描述了如何從潛在變數生成觀察數據。通常包括以下步驟:
先選擇隱藏變數(例如,潛在的特徵或類別)。
根據這些隱藏變數生成觀察數據。
機率分佈:生成模型使用概率分佈來描述隱藏變數和觀察變數之間的關係。這使得模型能夠對新數據進行推斷。
學習與推斷:通過觀察數據,模型可以學習隱藏變數的分佈,並在需要時生成新的數據。
常見的例子
隱馬爾可夫模型(HMM):用於時間序列數據的建模。
潛在狄利克雷分配(LDA):用於主題建模,能夠從文本中識別潛在主題。
生成對抗網絡(GAN):一種現代的深度學習生成模型,用於生成逼真的數據樣本。
應用
概率生成模型廣泛應用於圖像生成、語音合成、文本生成等領域,並在機器學習和人工智慧中扮演著重要的角色。它們能夠捕捉數據的潛在結構,從而生成具有相似特徵的新數據。
___
## 回歸(Regression)與分類(Classification)
在機器學習中,回歸和分類是兩種主要的監督學習任務。回歸模型側重於預測連續數值,而分類模型則針對離散類別。這些模型根據輸入數據的特徵模式進行預測,分類模型尤其適合處理需要區分多個類別的場景。
| 特點 | 回歸(Regression) | 分類(Classification) |
|--------------|-------------------------------------------|------------------------------------------|
| **預測目標** | 連續值(如價格、溫度) | 離散類別(如「貓」或「狗」) |
| **模型範例** | 線性回歸、多項式回歸、支持向量回歸 | 邏輯回歸、決策樹、隨機森林、SVM |
| **評估指標** | MSE、MAE、RMSE、R平方 | 準確率、精確率、召回率、F1分數、AUC-ROC |
| **適用場景** | 預測連續值,如房價預測、溫度預測 | 分類問題,如垃圾郵件檢測、圖片分類 |
| **輸出** | 實數(連續) | 類別標籤(離散) |
---
## 什麼是分類問題?
分類問題的目標是將數據樣本分配到預定義的類別中,即預測數據的離散標籤。例如,在垃圾郵件檢測、圖像識別、醫學診斷中常見的分類任務,分類模型的輸出是某個類別標籤(如「是/否」或「A/B/C」等),而非連續數值。
### 常見分類模型及其特點
1. **邏輯回歸(Logistic Regression)**
- **特點**:儘管名稱包含“回歸”,邏輯回歸實際上是一種二元分類模型。它基於邏輯函數(sigmoid function)將輸出壓縮至 0 到 1 之間,用於預測樣本屬於某類別的概率。
- **應用**:垃圾郵件檢測(垃圾郵件或非垃圾郵件)、癌症診斷(陽性或陰性)。
- **優點**:計算簡單,結果易於解釋。
- **缺點**:對非線性數據效果不佳,需特徵工程來改善。
2. **支持向量機(Support Vector Machine, SVM)**
- **特點**:SVM 嘗試找到一條決策邊界,最大化不同類別間的間隔,適合二元和多元分類。
- **應用**:文本分類(如情感分析)、圖像識別(如貓狗分類)。
- **優點**:在小數據集上表現良好,適合高維數據。
- **缺點**:計算複雜,對大數據集訓練耗時。
3. **k 最近鄰(k-Nearest Neighbors, KNN)**
- **特點**:基於距離的非參數模型,依據樣本的鄰近數據點進行分類。
- **應用**:小型數據集的推薦系統、醫學診斷。
- **優點**:簡單易理解,無需訓練階段。
- **缺點**:高維數據或大數據集上表現不佳,容易受數據分佈影響。
4. **決策樹分類(Decision Tree Classification)**
- **特點**:通過數據特徵進行分支決策分類。
- **應用**:市場分析、風險預測、醫療分類。
- **優點**:易於解釋,可處理非線性數據。
- **缺點**:容易過擬合,尤其數據較小時。
---
## Perceptron 與 SVM
| 特點 | Perceptron | SVM |
|--------------------|---------------------------------------|------------------------------------------|
| **分類邊界** | 線性可分邊界 | 最大化邊界,邊界上的支持向量決定分類結果 |
| **適用範圍** | 僅適用於線性可分的二元分類 | 可擴展至多元分類及非線性問題(通過核技巧)|
| **訓練效率** | 計算簡單,收斂速度快 | 訓練時間長,計算成本較高 |
### Perceptron
Perceptron 是一種簡單的二元分類算法,是最早的人工神經網絡模型之一。其主要目的是找到一條線性邊界將兩個類別分開。
---
### 支持向量機(Support Vector Machine, SVM)
SVM 是一種強大的分類算法,旨在找到能夠最大化邊界的超平面,從而使不同類別的樣本盡可能分開。與 Perceptron 類似,SVM 也是線性分類器,但它通過最大化邊界來增強分類效果,並可使用核函數(Kernel)擴展至非線性分類。
---
## Gaussian 分布(Normal Distribution)
Gaussian 分布(又稱正態分布)是統計學和機器學習中的常見連續概率分布。它以對稱的鐘形曲線描述數據在平均值周圍的分佈情況。
### Gaussian 分布的特性
1. **鐘形曲線**:對稱的鐘形曲線,中心代表數據的平均值。
2. **參數**:
- **平均值 \(μ\) **:分布的中心點,表示數據的平均水平。
- **標準差 \(Σ\) **:描述數據分散程度,標準差越大,數據越分散。
3. **概率密度函數(PDF)**:
$$
f(x) = \frac{1}{\sqrt{2 \pi \sigma^2}} e^{ -\frac{(x - \mu)^2}{2\sigma^2} }
$$
---
## Posterior Probability 在機器學習的運用
**Posterior Probability**(後驗概率)在機器學習中的應用非常廣泛,特別是在分類、生成模型以及不確定性估計等任務中。以下是一些具體的應用場景:
### 1. 貝葉斯分類器(Bayesian Classifiers)
在機器學習中,**後驗概率**最常用於貝葉斯分類器。例如,在朴素貝葉斯分類器(Naive Bayes Classifier)中,我們使用 Bayes 定理計算每個類別的後驗概率 $P(C | x)$,其中 $C$ 是類別,$x$ 是觀測值或特徵。這樣可以在給定特徵的情況下,選擇具有最高後驗概率的類別作為預測結果。
- 公式:$P(C | x) = \frac{P(x | C) P(C)}{P(x)}$
- 用途:垃圾郵件分類、文本分類、情感分析等。
### 2. 貝葉斯推理(Bayesian Inference)
在貝葉斯統計中,後驗概率用於更新對模型參數的信念。通過結合先驗概率和觀測數據,可以計算出後驗分布,從而量化模型參數的可信度或不確定性。這在以下場景中應用廣泛:
- **模型不確定性估計**:例如在醫療診斷中,利用後驗概率評估模型對某個診斷結果的置信度。
- **貝葉斯神經網絡(Bayesian Neural Networks)**:在訓練過程中,對每個參數建立後驗分布,以表達模型預測的不確定性。
### 3. 生成模型(Generative Models)
在生成模型(如隱馬爾可夫模型、Gaussian 混合模型)中,後驗概率用於計算某一樣本來自某一類別的概率。例如,Gaussian 混合模型(GMM)可以通過後驗概率來判斷一個觀測點屬於某個高斯分布成分的可能性,從而進行聚類分析。
- 用途:聚類分析、異常檢測、推薦系統等。
### 4. 邏輯回歸和 Softmax 回歸
在邏輯回歸和多類分類中的 Softmax 回歸中,後驗概率也被用於預測。模型輸出的是每個類別的後驗概率,表示在觀測特徵下,數據點屬於不同類別的可能性。這些後驗概率可以進一步用於決策、排序或不確定性估計。
- 公式:邏輯回歸的後驗概率表示為 $P(C = 1 | x) = \frac{1}{1 + e^{-z}}$,其中 $z$ 是特徵和權重的線性組合。
- 用途:分類任務,如圖像識別、文本分類。
### 5. 強化學習中的信念更新
在強化學習中,後驗概率有助於在觀測到新的數據後更新對狀態或行動的信念。這尤其在貝葉斯強化學習中十分重要,例如在未知環境中估計不同行動的後驗概率,以逐步改善行動策略。
- 用途:貝葉斯強化學習、探索-利用平衡、策略改善。
### 6. 異常檢測與置信度估計
後驗概率還可以用於異常檢測和置信度估計。當模型對某個觀測值的後驗概率非常低時,可以判斷該觀測值為異常。例如在欺詐檢測中,可以使用後驗概率來判定交易是否屬於正常行為。
### 總結
Posterior Probability 是機器學習中不可或缺的工具,透過結合先驗信息和觀測數據,用於分類、參數估計、不確定性量化以及決策等多種任務。它幫助模型在不同情境下進行概率性預測,從而提高模型的解釋性和穩健性。
---
## Required Probability、Probability Distribution 和 Posterior Probability 三者的關聯
**Required Probability**、**Probability Distribution** 和 **Posterior Probability** 這三者在機器學習和統計中密切相關,它們共同協助我們理解隨機事件的概率特性、進行推斷和做出決策。以下是這三者的關聯:
### 1. Probability Distribution(機率分布)是基礎
**Probability Distribution** 是隨機變量的所有可能取值及其對應概率的完整描述。它是機器學習中計算各種概率的基礎,尤其在生成模型、分類模型和不確定性估計中具有重要應用。例如,**高斯分布**或 **伯努利分布** 可以描述數據在特定條件下的分布情況。
### 2. Required Probability(所需概率)從 Probability Distribution 中提取
**Required Probability** 是特定事件發生的概率,通常是我們想要回答的問題。它是從 Probability Distribution 中提取的。例如,擲骰子的情況下,我們可以從骰子的概率分布中得到「出現6的概率」。
在機器學習中,我們通常使用 Probability Distribution 來計算 Required Probability,例如某個觀測值在某類別下的發生概率 $P(x | C)$。
### 3. Posterior Probability(後驗概率)透過 Bayes 定理計算
**Posterior Probability** 是在觀測到特定數據後,根據 Bayes 定理計算的更新後的概率,表示在已知某觀測值的情況下屬於某個類別的可能性。Posterior Probability 通常依賴於以下兩個部分:
- **先驗概率(Prior Probability)**:在未觀測任何數據時,各類別出現的基本概率 $P(C)$。
- **Likelihood(似然)**:即 Required Probability,也就是在給定類別的條件下,觀測到特定數據的概率 $P(x | C)$。
Posterior Probability 計算方式如下:
$$
P(C | x) = \frac{P(x | C) P(C)}{P(x)}
$$
其中 $P(x)$ 是數據的總概率,可以通過 Probability Distribution 計算得到。
### 三者之間的關係總結
- **Probability Distribution** 提供了整體數據或事件的概率模型,是所有概率計算的基礎。
- **Required Probability** 是從 Probability Distribution 中提取出來的具體事件的發生概率。
- **Posterior Probability** 則使用 Bayes 定理,根據 Required Probability 和先驗概率計算,得出在觀測到特定數據後,某事件或類別的更新後概率。
在機器學習中,這三者的結合使得模型可以通過觀測值來進行推斷、分類或決策。
---
# 課程提問
## Maximum Likelihood 為什麼平均值是最大?
在最大似然估計(Maximum Likelihood Estimation, MLE)中,我們假設一組數據(例如“水屬性寶可夢”的特徵數據)是從某個正態分佈產生的。我們希望找到最佳的「平均值」和「變異量」,讓這個分佈最能代表我們的數據。
為什麼平均值是最佳解?
假設我們有很多水屬性寶可夢的體重數據,我們想知道這些寶可夢的「真實」平均體重是多少。最大似然估計的概念是:找到一組參數(例如平均值),使得觀察到的數據「最有可能」來自這個分佈。
1. 最大似然的想法
想像你有許多水屬性寶可夢的體重數據。要找到最合適的分佈,就需要讓這些數據出現在分佈的「中心」,而「中心」正是平均值的位置。
2. 舉例
假設我們測量了 79 個水屬性寶可夢的體重,得到的平均體重是 60 公斤。這意味著,設置這個平均值(60 公斤)最能反映這 79 個樣本的整體體重分佈。
如果選擇一個較小的數字(例如 50 公斤)或較大的數字(例如 70 公斤)作為平均值,那麼分佈的中心會偏離我們的數據,使得數據的「可能性」降低。因此,選擇數據的平均值作為分佈的平均值,讓數據的似然性最大。
總結
平均值是最大似然的最佳解,因為它能讓我們的數據出現在分佈的中心,使得數據最符合這個分佈的特徵。
## 為什麼可以共用Σ ?
在這個模型中,Σ(共變異數矩陣)可以共用的原因是「水屬性」和「普通屬性」這兩個類別的資料分佈形狀相似。當共變異數矩陣被設定為共用時,模型假設這兩個類別的數據來自於擁有相同分佈形狀的群體,也就是說,它們的分散程度或變異性是一致的。
共用共變異數矩陣的另一個好處是可以減少模型的參數數量,讓模型變得更簡單且更穩定。這樣的設計在實務上通常稱為「線性判別分析(LDA)」,因為在此方法中,只需要計算一個共同的共變異數矩陣,而不需要為每個類別分別計算,進而降低了模型過度擬合的風險。
<img src="https://hackmd.io/_uploads/rk2RVgd1Jl.png" width="400px">
## 將分類問題轉為回歸問題處理的主要缺點
分界模糊:回歸模型輸出連續值,需要手動設定閾值來分割類別,這容易導致分類不準確。
對極端值敏感:回歸模型容易被異常值影響,使分類結果偏差。
無法處理非線性邊界:回歸模型假設數據有線性關係,無法準確處理複雜的非線性分類。
損失函數不適合:回歸的損失計算方式不適合分類,可能降低準確度。
不適合多分類:回歸方法在多分類情況下難以正確區分多個類別。
簡言之,回歸模型無法有效應對分類的特點,導致分類準確性下降。
<img src="https://hackmd.io/_uploads/Syihbldy1x.png" width="400px">
# 提案分享
## 一維高斯分佈
https://www.desmos.com/calculator/bmnenbvqzz?lang=zh-TW
## 可以用 scikit-learn 和 Gaussian Mixture Model 來分類鳶尾花嗎?
https://colab.research.google.com/drive/1811tZtoikn3iRsSlu9HTLKve4kfO7Zen?usp=sharing
## Gaussian mixture models
https://scikit-learn.org/1.5/modules/mixture.html