# 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。