K-means聚類算法——機器學習

聚類屬於無監督學習,以往的迴歸、樸素貝葉斯、SVM 等都是有類別標籤 y 的,也就 是說樣例中已經給出了樣例的分類。而聚類的樣本中卻沒有給定 y,即監督樣本。

在聚類問題中,給我們的訓練樣本是{𝑥(1),…,𝑥(𝑚)},每個𝑥(𝑖) ∈ ℝ𝑛,沒有了 y。 

K-means 算法是將樣本聚類成 k 個簇(cluster),具體算法描述如下: 

K 是我們事先給定的聚類數,𝑐(i)代表樣例 i 與 k 個類中距離最近的那個類,𝑐(i)的值是 1 到 k 中的一個。質心𝜇𝑗代表我們對屬於同一個類的樣本中心點的猜測。

其中重複過程的理解:

①對於每個樣例,計算其屬於的類,爲c(i)

②對於每個類,再重新計算質心

拿星團模型來解釋就 是要將所有的星星聚成 k 個星團,首先隨機選取 k 個宇宙中的點(或者 k 個星星)作爲 k 個 星團的質心,然後第一步對於每一個星星計算其到 k 個質心中每一個的距離,然後選取距離 最近的那個星團作爲𝑐(i),這樣經過第一步每一個星星都有了所屬的星團;第二步對於每一 個星團,重新計算它的質心𝜇𝑗(對裏面所有的星星座標求平均)。重複迭代第一步和第二步 直到質心不變或者變化很小。

下圖展示了對 n 個樣本點進行 K-means 聚類的效果,這裏 k 取 2。 

ab圖中都爲綠色表示還未分類,X代表質心,紅與藍表示兩種類。

K-means 面對的第一個問題是如何保證收斂,前面的算法中強調結束條件就是收斂,可 以證明的是 K-means 完全可以保證收斂性。下面我們定性的描述一下收斂性,我們定義畸變 函數(distortion function)如下: 

J 函數表示每個樣本點到其質心的距離平方和。K-means 是要將 J 調整到最小。假設當 前 J 沒有達到最小值,那麼首先可以固定每個類的質心𝜇𝑗,調整每個樣例的所屬的類別𝑐(i)來 讓 J 函數減少,同樣,固定𝑐(i),調整每個類的質心𝜇𝑗也可以使 J 減小。這兩個過程就是內循 環中使 J 單調遞減的過程。當 J 遞減到最小時,μ和 c 也同時收斂。(在理論上,可以有多組 不同的μ和 c 值能夠使得 J 取得最小值,但這種現象實際上很少見)。 由於畸變函數 J 是非凸函數,意味着我們不能保證取得的最小值是全局最小值,也就是 說 k-means 對質心初始位置的選取比較感冒,但一般情況下 k-means 達到的局部最優已經滿 足需求。但如果你怕陷入局部最優,那麼可以選取不同的初始值跑多遍 k-means,然後取其 中最小的 J 對應的μ和 c 輸出。 
 
下面累述一下 K-means 與 EM 的關係,首先回到初始問題,我們目的是將樣本分成 k 個 類,其實說白了就是求每個樣例 x 的隱含類別 y,然後利用隱含類別將 x 歸類。由於我們事 先不知道類別 y,那麼我們首先可以對每個樣例假定一個 y 吧,但是怎麼知道假定的對不對 呢?怎麼評價假定的好不好呢?我們使用樣本的極大似然估計來度量,這裏是就是 x 和 y 的 聯合分佈 P(x,y)了。如果找到的 y 能夠使 P(x,y)最大,那麼我們找到的 y 就是樣例 x 的最佳類 別了,x 順手就聚類了。但是我們第一次指定的 y 不一定會讓 P(x,y)最大,而且 P(x,y)還依賴 於其他未知參數,當然在給定 y 的情況下,我們可以調整其他參數讓 P(x,y)最大。但是調整 完參數後,我們發現有更好的 y 可以指定,那麼我們重新指定 y,然後再計算 P(x,y)最大時 的參數,反覆迭代直至沒有更好的 y 可以指定。 
這個過程有幾個難點,第一怎麼假定 y?是每個樣例硬指派一個 y 還是不同的 y 有不同 的概率,概率如何度量。第二如何估計 P(x,y),P(x,y)還可能依賴很多其他參數,如何調整裏 面的參數讓 P(x,y)最大。這些問題在以後的篇章裏回答。 
 
這裏只是指出 EM 的思想,E 步就是估計隱含類別 y 的期望值,M 步調整其他參數使得 在給定類別 y 的情況下,極大似然估計 P(x,y)能夠達到極大值。然後在其他參數確定的情況 下,重新估計 y,周而復始,直至收斂。 上面的闡述有點費解,對應於 K-means 來說就是我們一開始不知道每個樣例x(𝑖)對應隱 含變量也就是最佳類別c(𝑖)。最開始可以隨便指定一個c(𝑖)給它,然後爲了讓 P(x,y)最大(這 裏是要讓 J 最小),我們求出在給定 c 情況下,J 最小時的𝜇𝑗(前面提到的其他未知參數), 然而此時發現,可以有更好的c(𝑖)(質心與樣例x(𝑖)距離最小的類別)指定給樣例x(𝑖),那麼c(𝑖) 得到重新調整,上述過程就開始重複了,直到沒有更好的c(𝑖)指定。這樣從 K-means 裏我們 可以看出它其實就是 EM 的體現,E 步是確定隱含類別變量c,M 步更新其他參數μ來使 J 最 小化。這裏的隱含類別變量指定方法比較特殊,屬於硬指定,從 k 個類別中硬選出一個給樣 例,而不是對每個類別賦予不同的概率。總體思想還是一個迭代優化過程,有目標函數,也 有參數變量,只是多了個隱含變量,確定其他參數估計隱含變量,再確定隱含變量估計其他 參數,直至目標函數最優。 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章