--- disqus: ierosodin --- # Clustering > Organization contact [name= [ierosodin](ierosodin@gmail.com)] ###### tags: `machine learning` `學習筆記` ==[Back to Catalog](https://hackmd.io/@ierosodin/Machine_Learning)== 前面所介紹的方法,無論是 regression 還是 classification,都是屬於 supervise learning,也就是 training data 為 complete data。 然而時常我們所蒐集的資料室 incomplete data,也就是缺少 label 的資料,此時就必須依靠 unsupervise learning 來進行分類,常見的分類有: 1. K means clustering 2. Hierarchical clustering 3. EM algorithm 4. Gaussian Mixture model(GMM) ## K-means 先隨機找尋 k 個中心,並對所有的 training data 進行分類,靠近誰就加入那個中心。分類完後,對於每一群,重新計算群中心,並利用新的群中心再次進行分類,不斷迭代下去,直到收斂為止。 這種方法有可能會卡在 local minimum,因此需要多次實驗,找到真正的最小值。 ## Hierarchical clustering 分成了 divisive 與 agglomerative algorithm,前者一開始假設為一群,並不斷的分裂,直到達到指定的群數,後者則是由一點一群開始,慢慢聚集直到達到指定群數。 ### agglomerative algorithm 舉幾個聚集法的例子: 1. 單一連結聚合演算法(single-linkage agglomerative algorithm) * 找兩群最近的距離作為判斷依據,也就是找 ${D_{min}}$ 最小的來合併 * ![](https://i.imgur.com/ZelIVCf.png) 2. 完整連結聚合演算法(complete-linkage agglomerative algorithm) * 找兩群最遠的距離作為判斷依據,也就是找 ${D_{max}}$ 最小的來合併 * ![](https://i.imgur.com/k1T4Eia.png) 3. 平均連結聚合演算法(average-linkage agglomerative algorithm) * 找兩群所有可能距離的平均值為依據,也就是找 ${D_{avg}}$ 最小的來合併 4. 沃德法(Ward's method) * 以兩群合併後,每一點到新的群中心的平均值為依據 * ![](https://i.imgur.com/TxMTC73.png) ## EM algorithm 在推導 EM algorithm 之前,我們先來看一個處裡 complete data 過程: ### one coin toss 在前面的章節,我們有推導過,如果今天投擲一個硬幣 N 次,則 ${P_{MLE}\ =\ \frac{\sum x}{N}}$,而 ${P_{MLE}}$ 為這個硬幣投擲出正面最有可能的機率。 ### two coin toss 如果今天有兩個硬幣呢?我們必須先假設三個變數: 1. ${P_0}$ 為 ${C_0}$ 硬幣出現正面的機率 2. ${P_1}$ 為 ${C_1}$ 硬幣出現正面的機率 3. ${\lambda}$ 為投擲 ${C_0}$ 硬幣的機率 假設今天我們投擲了硬幣十次,${X}$ 為該次投擲的 random variable(正面或反面),而 ${Z}$ 為該次投擲的硬幣 index(0 或 1)。 因為是 complete data,所以我們可以得到以上所有資訊,接下來就要找出在 MLE 的時候,三個變數為多少。 要 maximum 的式子為: ${P\ =\ \prod (\lambda P_0^{x_i}(1-P_0)^{1-x_i})^{1-z_i}((1-\lambda)P_1^{x_i}(1-P_O)^{1-x_i})^{z_i}}$ 一樣,我們先取 ${log}$: $\begin{split}J\ =\ &\sum (1-z_i)(log\lambda\ +\ x_ilogP_0\ +\ (1-x_i)log(1-P_0))\ +\ z_i(log(1-\lambda)\ \\ &+\ x_ilogP_1\ +\ (1-x_i)log(1-P_1))\end{split}$ 首先,求 ${\lambda_{MLE}}$: ${\begin{split}\frac{\partial J}{\partial \lambda}\ &=\ \sum (1-z_i)\frac{1}{\lambda}\ +\ z_i\frac{-1}{1-\lambda}\ =\ 0 \\ &\Rightarrow\ \sum (1-z_i)\frac{1}{\lambda}\ =\ \sum z_i\frac{1}{1-\lambda} \\ &\Rightarrow\ (1-\lambda)\sum(1-z_i)\ =\ \lambda\sum z_i \\ &\Rightarrow\ \sum(1-z_i)\ =\ \lambda\sum z_i\ +\ \lambda\sum(1-x_i)\ =\ \lambda N\\ &\Rightarrow\ \lambda_{MLE}\ =\ \frac{\sum(1-z_i)}{N}\end{split}}$ ${P_0}$: ${\begin{split}\frac{\partial J}{\partial P_0}\ &=\ \sum (1-z_i)(\frac{x_i}{P_0}\ +\ (1-x_i)\frac{-1}{1-P_0})\ =\ 0 \\ &\Rightarrow\ \sum (1-z_i)\frac{x_i}{P_0}\ =\ \sum (1-z_i)\frac{1-x_i}{1-P_0} \\ &\Rightarrow\ (1-P_0)\sum(1-z_i)x_i\ =\ P_0\sum (1-z_i)(1-x_i) \\ &\Rightarrow\ \sum(1-z_i)x_i\ =\ P_0\sum (1-z_i)(1-x_i)\ +\ P_0\sum(1-z_i)x_i\ =\ P_0 \sum(1-z_i)\\ &\Rightarrow\ P_{0,MLE}\ =\ \frac{\sum(1-z_i)x_i}{\sum(1-z_i)}\end{split}}$ ${P_1}$: ${\begin{split}\frac{\partial J}{\partial P_1}\ &=\ \sum z_i(\frac{x_i}{P_1}\ +\ (1-x_i)\frac{-1}{1-P_1})\ =\ 0 \\ &\Rightarrow\ \sum z_i\frac{x_i}{P_1}\ =\ \sum z_i\frac{1-x_i}{1-P_1} \\ &\Rightarrow\ (1-P_1)\sum z_ix_i\ =\ P_1\sum z_i(1-x_i) \\ &\Rightarrow\ \sum z_ix_i\ =\ P_1\sum z_i(1-x_i)\ +\ P_1\sum z_ix_i\ =\ P_1 \sum z_i\\ &\Rightarrow\ P_{1,MLE}\ =\ \frac{\sum z_ix_i}{\sum z_i}\end{split}}$ 亦即: ${\lambda\ =\ \frac{C_0\ 出現次數}{總投擲次數}}$ ${P_0\ =\ \frac{C_0\ 出現且為正面的次數}{C_0\ 出現次數}}$ ${P_1\ =\ \frac{C_1\ 出現且為正面次數}{C_1\ 出現次數}}$ ### Incomplete date 那如果今天我們拿不到 ${z_i}$ 的資料呢? 取而代之,我們假設今天第 ${i}$ 次投擲投到 ${x_i}$ 時,是 ${C_0}$ 的機率為 ${w_i}$ 假設今天第 ${i}$ 次投到正面,則 ${w_i}$ 代表在所有投擲結果為正面的情況下,是 ${C_0}$ 投出來的機率是多少。 > 注意,${w_i}$ 是會根據 outcome 不同而改變的,在這個例子,就會有投擲到正面的 ${w_i}$ 和投擲到反面的 ${w_i}$。 > ${w_i}$ 又被稱為 responsibility 現在就可以開始我們的 EM algorithm: 首先我們先隨意假設 ${P_0,\ P_1,\ \lambda}$ E step: 分別計算兩個 ${w_i}$, 1. 投擲到正面的 ${w_i\ =\ \frac{P_0\lambda}{P_0\lambda\ +\ P_1(1-\lambda)}}$ 2. 投擲到反面的 ${w_i\ =\ \frac{(1-P_0)\lambda}{(1-P_0)\lambda\ +\ (1-P_1)(1-\lambda)}}$ M step: 找出在這組 ${w_i}$ 下,${P_0,\ P_1,\ \lambda}$ 的 weight likelihood。 ${\lambda\ =\ \frac{\Sigma w_i}{N}}$ ${P_0\ =\ \frac{\sum w_ix_i}{\sum w_i}}$ ${P_1\ =\ \frac{\sum(1-w_i)x_i}{\sum(1-w_i)}}$ > 再次強調,每個 ${w_i}$ 要根據當次的 ${x_i}$ 為正面或反面來決定 ### Why EM work 在解說為何 EM 會成功以前,我們先介紹一個工具: #### Jensen’s inequality ![](https://i.imgur.com/1R9EBYn.png) 上圖說明了,當今天一個函數為 convex 時,${f(\sum x_i) \leq \sum f(x_i)}$ 反之,當今天一個函數為 concave 時,則 ${f(\sum x_i) \geq \sum f(x_i)}$ #### EM algorithm for incomplete data 回到我們的 EM algorithm,首先必須知道,${log}$ function 屬於 concave function,因此觀察我們的 function J: ${J\ =\ \sum P(X, z_i|\theta)}$ 然而在 incomplete data 中,我們並沒有 ${z_i}$ 的資訊,因此我們假設一個未知分佈 ${q(z_i)}$,式子變成: ${log\sum q(z_i)\frac{P(X, z_i|\theta)}{q(z_i)}}$ 又因為 ${log}$ function 屬於 concave function: ${\begin{split}&log\left(\Sigma q(z_i)\frac{P(X, z_i|\theta)}{q(z_i)}\right) \geq \sum q(z_i)log\left(\frac{P(X, z_i|\theta)}{q(z_i)}\right) \\ =\ &\sum q(z_i)log\left(\frac{P(z_i|X, \theta)P(X|\theta)}{q(z_i)}\right) \\ =\ &\sum q(z_i)log\left(P(X|\theta)\right)\ +\ \sum q(z_i)log\left(\frac{P(z_i|X, \theta)}{q(z_i)}\right) \\ =\ &\sum q(z_i)log\left(P(X|\theta)\right)\ -\ \sum q(z_i)log\left(\frac{q(z_i)}{P(z_i|X, \theta)}\right)\end{split}}$ 可以發現,${\sum q(z_i)log\left(\frac{q(z_i)}{P(z_i|X, \theta)}\right)}$ 其實就是 ${KL(q||p)}$,而 ${q(z_i)}$ 其實就是 ${w_i}$。 因此每次我們在做 E step 的時候,其實就是在 minimum ${KL(q||p)}$(還記得 ${KL(q||p)\ =\ 0}$ 的情況為:${q}$ 與 ${p}$ 的分佈相同)。 所以在 E step,我們計算 ${w_i}$ 就是使 ${w_i}$ 與當下 ${P_0,\ P_1,\ \lambda}$ 所產生的硬幣分佈是相同的。 而在 M step 的過程,其實就是在 ${\sum P(X, z_i|\theta)\ =\ \sum q(z_i)log\left(P(X|\theta)\right)}$ 的情況下,找到 MLE 的 ${P_0,\ P_1,\ \lambda}$(或者說這三項的 weight likelihood) 又因為改分佈後,${q}$ 與 ${p}$ 的分佈又會不同,因此回到 E step 重新找 ${KL\ =\ 0}$ 的 ${w_i}$,不斷的重複。 而每次更新 ${P_0,\ P_1,\ \lambda}$ 都只會讓 lower bound 更高,因此只會更好,不會更遭,直到收斂為止。 ## Gaussian Mixture model (GMM) GMM 其實就是把 Bernoull 分佈改為 Gaussian distribution,因此對應前面的例子,我們必須要有五個參數:${\lambda,\ \mu_0,\ \mu_1,\ \sigma_0,\ \sigma_1}$ ### Complete data in special case 先看一個特殊的例子,當所有的 Gaussian distribution 的 variance 都是 1 時,我們可以簡化參數到三個:${\lambda,\ \mu_0,\ \mu_1}$ 則按照前面的推導: ${P(X|\theta)\ =\ \prod (\lambda \frac{1}{\sqrt{2\pi}}e^{-(x_i-\mu_0)^2})^{1-z_i}((1-\lambda) \frac{1}{\sqrt{2\pi}}e^{-(x_i-\mu_0)^2})^{z_i}}$ ${J\ =\ \sum(1-z_i)(log\frac{1}{\sqrt{2\pi}}+log\lambda-(x_i-\mu_0)^2)+\sum z_i(log\frac{1}{\sqrt{2\pi}}+log(1-\lambda)-(x_i-\mu_1)^2)}$ ${\begin{split}\frac{\partial J}{\partial \lambda}\ &=\ \sum (1-z_i)\frac{1}{\lambda}\ +\ z_i\frac{-1}{1-\lambda}\ =\ 0 \\ &\Rightarrow\ \sum (1-z_i)\frac{1}{\lambda}\ =\ \sum z_i\frac{1}{1-\lambda} \\ &\Rightarrow\ (1-\lambda)\sum(1-z_i)\ =\ \lambda\sum z_i \\ &\Rightarrow\ \sum(1-z_i)\ =\ \lambda\sum z_i\ +\ \lambda\sum(1-x_i)\ =\ \lambda N\\ &\Rightarrow\ \lambda_{MLE}\ =\ \frac{\sum(1-z_i)}{N}\end{split}}$ ${\begin{split}\frac{\partial J}{\partial \mu_0}\ &=\ \sum (1-z_i)(x_i-\mu_0)\ =\ 0 \\ &\Rightarrow\ \sum (1-z_i)x_i\ -\ \sum (1-z_i)\mu_0\ =\ 0 \\ &\Rightarrow\ \sum (1-z_i)x_i\ =\ \sum (1-z_i)\mu_0 \\ &\Rightarrow\ \mu_{0,MLE}\ =\ \frac{\sum (1-z_i)x_i}{\sum (1-z_i)}\end{split}}$ ${\begin{split}\frac{\partial J}{\partial \mu_1}\ &=\ \sum z_i(x_i-\mu_1)\ =\ 0 \\ &\Rightarrow\ \sum z_ix_i\ -\ \sum z_i\mu_1\ =\ 0 \\ &\Rightarrow\ \sum z_ix_i\ =\ \sum z_i\mu_1 \\ &\Rightarrow\ \mu_{1,MLE}\ =\ \frac{\sum z_ix_i}{\sum z_i}\end{split}}$ ### Complete data in general case 推廣到五個變數: ${P(X|\theta)\ =\ \prod (\lambda \frac{1}{\sqrt{2\pi\sigma_0^2}}e^{\frac{-(x_i-\mu_0)^2}{2\sigma_0^2}})^{1-z_i}((1-\lambda) \frac{1}{\sqrt{2\pi\sigma_1^2}}e^{\frac{-(x_i-\mu_1)^2}{2\sigma_1^2}})^{z_i}}$ ${J\ =\ \sum(1-z_i)(log\frac{1}{\sqrt{2\pi\sigma_0^2}}+log\lambda-\frac{(x_i-\mu_0)^2}{2\sigma_0^2})+\sum z_i(log\frac{1}{\sqrt{2\pi\sigma_1^2}}+log(1-\lambda)-\frac{(x_i-\mu_1)^2}{2\sigma_1^2})}$ ${\begin{split}\frac{\partial J}{\partial \lambda}\ &=\ \sum (1-z_i)\frac{1}{\lambda}\ +\ z_i\frac{-1}{1-\lambda}\ =\ 0 \\ &\Rightarrow\ \sum (1-z_i)\frac{1}{\lambda}\ =\ \sum z_i\frac{1}{1-\lambda} \\ &\Rightarrow\ (1-\lambda)\sum(1-z_i)\ =\ \lambda\sum z_i \\ &\Rightarrow\ \sum(1-z_i)\ =\ \lambda\sum z_i\ +\ \lambda\sum(1-x_i)\ =\ \lambda N\\ &\Rightarrow\ \lambda_{MLE}\ =\ \frac{\sum(1-z_i)}{N}\end{split}}$ ${\begin{split}\frac{\partial J}{\partial \mu_0}\ &=\ \sum (1-z_i)(x_i-\mu_0)\ =\ 0 \\ &\Rightarrow\ \sum (1-z_i)x_i\ -\ \sum (1-z_i)\mu_0\ =\ 0 \\ &\Rightarrow\ \sum (1-z_i)x_i\ =\ \sum (1-z_i)\mu_0 \\ &\Rightarrow\ \mu_{0,MLE}\ =\ \frac{\sum (1-z_i)x_i}{\sum (1-z_i)}\end{split}}$ ${\begin{split}\frac{\partial J}{\partial \mu_1}\ &=\ \sum z_i(x_i-\mu_1)\ =\ 0 \\ &\Rightarrow\ \sum z_ix_i\ -\ \sum z_i\mu_1\ =\ 0 \\ &\Rightarrow\ \sum z_ix_i\ =\ \sum z_i\mu_1 \\ &\Rightarrow\ \mu_{1,MLE}\ =\ \frac{\sum z_ix_i}{\sum z_i}\end{split}}$ ${\begin{split}\frac{\partial J}{\partial \sigma_0}\ &=\ \sum (1-z_i)(\frac{-2}{\sigma_0}+\frac{(x_i-\mu_0)^2}{\sigma_0^3})\ =\ 0 \\ &\Rightarrow\ \sum (1-z_i)\frac{(x_i-\mu_0)^2}{\sigma_0^3}\ -\ \sum (1-z_i)\frac{1}{2\sigma_0} =\ 0 \\ &\Rightarrow\ \sum (1-z_i)\frac{(x_i-\mu_0)^2}{\sigma_0^3}\ =\ \sum (1-z_i)\frac{2}{\sigma_0} \\ &\Rightarrow\ \sigma_{0,MLE}^2\ =\ \frac{\sum (1-z_i)(x_i-\mu_0)^2}{2\sum (1-z_i)}\end{split}}$ ${\begin{split}\frac{\partial J}{\partial \sigma_1}\ &=\ \sum (1-z_i)(\frac{-2}{\sigma_1}+\frac{(x_i-\mu_1)^2}{\sigma_1^3})\ =\ 0 \\ &\Rightarrow\ \sum z_i\frac{(x_i-\mu_1)^2}{\sigma_1^3}\ -\ \sum z_i\frac{2}{\sigma_1} =\ 0 \\ &\Rightarrow\ \sum z_i\frac{(x_i-\mu_1)^2}{\sigma_1^3}\ =\ \sum z_i\frac{2}{\sigma_1} \\ &\Rightarrow\ \sigma_{1,MLE}^2\ =\ \frac{\sum z_i(x_i-\mu_1)^2}{2\sum z_i}\end{split}}$ ### Incomplete data 其實和 EM algorithm 一樣,分成 E step 與 M step,在每次的 E step,需要計算 ${w_i}$: ${w_{i, outcome=0}\ =\ \frac{\lambda e^{\frac{-(x_i-\mu_0)^2}{2\sigma_0^2}}}{\lambda e^{\frac{-(x_i-\mu_0)^2}{2\sigma_0^2}}+(1-\lambda)e^{\frac{-(x_i-\mu_1)^2}{2\sigma_1^2}}}}$ ${w_{i, outcome=1}\ =\ \frac{(1-\lambda) e^{\frac{-(x_i-\mu_1)^2}{2\sigma_1^2}}}{\lambda e^{\frac{-(x_i-\mu_0)^2}{2\sigma_0^2}}+(1-\lambda)e^{\frac{-(x_i-\mu_1)^2}{2\sigma_1^2}}}}$