---
# System prepended metadata

title: 4.5 Parametric Classification
tags: [ML]

---

# 4.5 Parametric Classification

先回顧一下第三章的內容：

在 classification 裡面，我們有提過 given input $x$，$x$ 分類到 class $C_i$ 的 posterior probability 可以寫成下方式子：

![image](https://hackmd.io/_uploads/ByboQ70DR.png)

並且我們可以去定義 discriminant function：
> 圖中有簡單說明，但如果想複習更詳細的內容，可以參考筆記「[3.4 Discriminant Functions](https://hackmd.io/@pipibear/B1pu4naNR)」。

![image](https://hackmd.io/_uploads/rJWVE7Cv0.png)

這裡如果我們做一個假設，讓 likelihood 為 Gaussian，那我們就能簡化取 log 後的 discriminant function 的計算：

![image](https://hackmd.io/_uploads/Bki8NmAvC.png)

來看個例子：

如果有一間汽車公司要銷售 $K$ 種不同的車款，並且為了簡化討論，我們假設唯一影響顧客買車的因素是他的年收入，我們用 $x$ 表示。

另外，我們令 $P(C_i)$ 為買 type $i$ 的車的顧客比例。

如果買 type $i$ 的車的顧客，他們的年收入分佈，也就是 $p(x|C_i)$ 為 Gaussian，那麼：

買 type $i$ 的車的顧客年收入為 $x$ 的 distribution $\sim N(\mu_i,\sigma^2_i)$。
> 其中：
> - $\mu_i$ 為買 type $i$ 的車的顧客的平均年收入
> - $\sigma^2_i$ 為買 type $i$ 的車的顧客的年收入變異量

如果我們不知道 $P(C_i)$ 和 $p(x|C_i)$ ，我們會藉由取 sample ，來取它們的 estimates 來得到 discriminant function 的 estimate。

假設我們有一個 sample $X$：

\begin{equation}
X = \{x^t,\vec{r}^t\}_{t=1}^N
\end{equation}

其中：

- <font color = "green">$x^t$</font> 為 one dimensional，$t$ 代表 index，且 $x^t \in \mathbb{R}$
> $x^t$ 只有一維是因為現在我們的 input 只有一種，就是年收入。
- <font color = "green">$\vec{r}^t$</font> 為 $K$ dimensional 的向量，每個 dimension 的值 $\in \{0,1\}$，$t$ 一樣代表 index。
> 因為我們有 $K$ 種車款，所以每一種對應到一個維度，每一個維度不是零就是一（理想上只會有一個維度是一）詳細如下方式子：

\begin{equation}
r_i^t = 
\begin{cases}
1 \qquad \text{if} \quad x^t \ \in C_i\\
0 \qquad \text{if} \quad x^t \ \in C_k, \ k \ne i
\end{cases}
\end{equation}
> 舉個例子解釋意思：
> 
> 在我們取了 $N$ 筆資料後（這 $N$ 筆資料為 $N$ 個顧客的年收入），第 $t$ 筆資料 $x^t$ 假設為一百萬，因為我們一開始預設年收入為唯一衡量買什麼車的標準，所以根據這個值，假設會對應到買 type $10$ 的車（$1 \le 10 \le K$）
> 
> 那麼對應的 label $r^t$ 這個向量的第 $10$ 個 dimension 會是 $1$，其餘都是 $0$，也就是說 $r^t = [0,...,0,1,0,...,0]^T$。

對每個 class $C_i$，我們都可以去計算 mean, variance, prior 的 estimate：

![image](https://hackmd.io/_uploads/BkuzHURwC.png)
> 看例子應該就能懂這些式子代表的意義！

有了 $m_i, \ s_i^2, \ \hat{p}(C_i)$ 以後，如果我們代回前面 class $i$ 的 discriminant function（假設 $p(x|C_i)$ Gaussian），再進一步假設一些條件對每個 class 都相同，就會得到簡化的 $g_i(x)$：

![image](https://hackmd.io/_uploads/BkKFt8RD0.png)

除此之外，如果有兩個相鄰的 classes，那這兩個 class mean 的中點就是 threshold of decision，如下圖的例子：

![image](https://hackmd.io/_uploads/SyBXqUCPR.png)
> $C_1$ 的 mean $m_1=-2$，$C_2$ 的 mean $m_2=2$，我們發現他們的中點 $0$ 為 threshold。
>> 見右方分別代入兩個 class 的 discriminant function，會得到相同的值，因此我們無法透過選擇值較大的 $g_i(x)$ 來判斷 $x=0$ 要分到哪個 class。
>> 
> 除此之外，可以注意到圖的 (a) 代表 likelihood $p(x|C_i)$，也就是我們假設 Gaussian 的部分。圖 (b) 則是當 input 為一維、prior 相同，variance 也相同時，兩個 class 的 posterior 交會在一個點。交會的這個點就是 threshold。
>> 為什麼交會的點是 threshold 是因為在這個點 $g_1(x) = g_2(x)$ 。

再來看一個當 variance 不同的例子：

![image](https://hackmd.io/_uploads/HyvtED0D0.png)
> 圖（a）：兩個 classes 的 likelihood 雖然都是 normal，但是 varinace 不同（從 $C_1$ 比較集中，$C_2$ 比較扁、涵蓋更多的值看出）
> 
> 圖（b）：這樣的情況下，算出來的 posterior 就不像 variance 相同時只交會在一個點，產生了兩個 threshold。
> 
> 圖（c）：
> - 左側藍色螢光筆的線那個區段我們發現，如果 $x$ 的值落在這段（大概 $-7.$ 到 $-10$）分到 $C_1$ 的 risk $>$ 分到 $C_2$ 的 risk，且 reject 的 risk $\lambda = 0.2$ 也大於分到 $C_2$ 的 risk，所以如果 $x$ 落在這段，那我們就會分到 $C_2$。
> - 中間藍色螢光筆的線那個區段則是不管 $C_1$ 還是 $C_2$ 的 risk 都大於 reject 的 risk，所以如果 $x$ 落在這部分我們就會選擇 reject。
>> 關於 risk、reject 等概念如果忘記了可以回顧筆記「[3.3 Losses and Risks](https://hackmd.io/@pipibear/H1Mx7f4NC)」。  

到這裡，我們看過了 variance 相同和不同的例子，但不管是哪種，上面的例子都是建立在 prior 相同的情況下。

如果今天我們的 prior 並不相同，那麼會造成的影響是 ++threshold 會往機率比較低的 class 的 mean 靠近++。

另外，我們在上面計算 $\hat{p}(C_i)$ 用的是 MLE（Maximum likelihood estimator）
> 即因為我們取 $\hat{p}(C_i) = \frac{\sum_t r_i^t}{N}$。
> Recall 我們稱 MLE 是因為我們要找讓 likelihood 最大的那個點來當作 estimate，而在我們的例子裡，likelihood 假定為 normal distributed，既然如此，值最大的地方就會落在 mean，也就是我們的這個式子。
>> 詳細說明可參考前面的筆記「[4.2 Maximum Likelihood Estimation](https://hackmd.io/@pipibear/rk9DvfgSC)」中的 4.2.2 Multinomial Density 小節。

但是如果我們有一些關於 parameters 的 prior information，舉例來說像是我們知道各個 classes 的 means 大概會有什麼樣的分佈，那我們就可以透過 $\mu_i$ 的 prior 來計算 Bayesian estimate of $p(x|C_i)$。
> 這裡課本沒有實際舉例多講，我想只要知道除了 MLE 外，在不同的條件下可能有不同的選擇即可。

最後，Note：

> [!Caution]
> 如果 $x$ 是 ++continuous++ 的，那我們就不能馬上假設 likelihood $p(x|C_i)$ 是 Gaussian 的，因為如果實際上 likelihood 並非 Gaussian，那我們就會得到錯誤的 threshold points。
> 
> $\rightarrow$ 有可以測試 normality 的 tests，所以在我們假定 Gaussian 之前應該要先檢查是否真的 normal。

舉例來說，像我們上面的例子是 one dimensional data，最簡單的檢查 normality 的方式就是直接畫出長條圖，然後看看圖是否為 bell-shaped（也就是去檢查是否 unimodal, symmetric around the center）。

---

我們在這篇筆記中所介紹的方法是 likelihood-based approach
> 我們用 data 去分別計算 densities、用 Bayes' rule 計算 posterior densities，來得到 discriminant。

在後面的章節裡，我們會再介紹 discriminant-based approach，這種方式就會省略去估計 densities，直接估計 discriminants。