我眼裡K-Means演算法

來源:互聯網
上載者:User

標籤:一個人   映像   樣本   出現   method   解決辦法   類型   資料集   目的   

在我眼裡一切都是那麼簡單,複雜的我也看不懂,最討厭那些複雜的人際關係,唉,像孩子一樣交流不好嗎。

學習K-Means演算法時,會讓我想起三國志這個遊戲,介面是一張中國地圖,諸侯分立,各自為據。但是遊戲開始,玩家會是一個人一座城池(我比較喜歡這樣,就有挑戰性),然後不斷的征戰各方,佔領城池

不斷的擴大地盤,正常來說,征戰的城池是距離自己較為近的,然後選擇這些城池的中心位置作為主城。所以過來一段時間後,地圖上就會出現幾個主要的勢力範圍,三足鼎立正是如此。這個過程和K-Means演算法十分相似。

接下來我們以為遊戲地圖為例來講解K-Means演算法,地圖中的每一個城池為一個資料範例(包含城池的座標),假如遊戲開始設定三個遊戲玩家(三個聚類中心K),遊戲目的希望最後三個玩家各自為據形成右圖的格局。開始遊戲!

                                                                         

 

 

K-Means(k均值演算法):

一開始先要介紹演算法的整體流程

(1)隨機初始化聚類中心的位置

(2)計算每一個點到聚類中心的距離,選取最小值分配給k(i)

  

 

(3)移動聚類中心(其實就是對所屬它的樣本點求平均值,就是它移動是位置)

  

 

(4)重複(2),(3)直到損失函數(也就是所有樣本點到其所歸屬的樣本中心的距離的和最小)

最後整體分類格局會變得穩定。

最佳化目標,也就是之前我們經常提到的損失函數

   

在不斷的迴圈過程中,聚類中心也在不斷地更新,直到上式距離總和收斂精確值的時候,獲得最優解。

 

(1) 隨機初始化

  為了遊戲的公平性,使用隨機的方式把三個遊戲玩家分配到地圖上三個城池中(這裡需要注意聚類中心的個數一定要小於資料樣本的個數)。隨機初始化會遇見下面幾種情況

  1 好的情況

  

  這種情況最為好,因為三個聚類中心已經很好的散布在三個主要的樣本類上,再執行下面的演算法就可以形成我們想要的分類。

   2

  

  這種情況就不太好,紅點和綠點一開始就分配在以起,所以一開就會產生對立,對於不好的初始化可能會產生以下聚類結果

  

 

  這種情況就是就很糟糕了,不符合要求。

  對於這種情況我們沒有很好的解決辦法,可以嘗試多次初始化,擷取最好的結果,例如設定1000次隨機初始化,選取損失函數值最小的一個。

 還有一種情況,對於有些資料集天生分布不明顯的資料集,怎麼才能正確的選擇聚類中心的個數,例如:

 

使用(elbow method)“胳膊肘演算法”:

 擷取損失函數和聚類中心K的函數映像,大致有兩種映像類型

 

 

左圖的拐點明顯,而右圖的拐點不是很明顯,對於左圖我們可以選取拐點處的k作為聚類中心的個數,而如果是右圖,那麼就需要根據情況選取,比如說,如果資料集是衣服的尺碼的資料,如果你想確定這些衣服的尺碼類型,那麼根據你想要分成幾種尺碼類型決定(例如:L,M,S)(還有,M,L,XL,XXL,S)

 

我眼裡K-Means演算法

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.