1. 程式人生 > >k-median聚類演算法【基本概念篇】

k-median聚類演算法【基本概念篇】

寫在前面的話

難道最近這種文章看的人比較多,unbelievable!
因為覺得這些都是特別老的演算法,應該別人會不怎麼看的,但是沒想到,我覺得有意思的文章反倒是沒有人看,覺得就是很多東西不寫,想要回顧的時候自己的記憶又沒有自己認為的那麼牛逼,有些東西還是全面的理解透徹了,寫下來的話更持久一些。當然我的blog 主要是我遺忘時候的寶典,偶爾能幫助很多人,我也是很開心的。

有時候看到有的文章的閱讀量有點虛高我自己也會莫名其妙的,但是大家喜歡看什麼多寫點幫我增加點人氣也是好的,哎,人都是這種虛偽的動物,我就這麼直白的承認了吧。
啊哈哈哈哈哈

因為覺得網上應該有很多的資料了,但是發現,大家寫的就是那樣了。這個時候就到了我們女程式設計師來拯救世界的時候了。

不正經的正文

k-median 演算法

k-median 演算法是k-means 演算法的一種變形。 它的基本原理和我們的k-means 相似。這個就是最重要的一句話。

如果你會了k-means 演算法,那麼k-median 演算法對你來說就是相當簡單的啦。因為k-means 定義的時候就是不斷的更換我們的中心,中心的選取是根據聚類的平均值也就是我們的means 來定的。那麼k-medians 選取的就是我們的中位數。中位數median 和means 到底有什麼區別呢,如果你還不知道的可以看我的 這篇文章 mean,median, mode 之間的區別

感覺自己真的是太貼心了,哈哈,幫你弄懂了你學習道路上的每一個細節以及我認為的難點。哈哈,有沒有覺得這個世界還是需要很多的我這麼體貼又聰明的程式設計師的。啊哈哈哈~

當然,如果你還沒有弄懂k-means 演算法也可以看我的文章:https://blog.csdn.net/chichoxian/article/details/84075128


k-median 演算法和k-means 演算法的區別

  • 距離公式可能不同。 k-means 一般會選取歐幾里得距離公式,你看有的英文書的時候我們會把這個叫做2-norm 因為這個時候我們要算一個平方。當然了,k-means 也是可以用我們的曼哈頓距離公式來計算的,也就是1-norm. k-median 一般是用1-norm 的距離公式來計算的,我們一般用我們曼哈頓距離公式來計算。

  • 歐幾里得距離計算公式

  • 在數學中,歐幾里得距離或歐幾里得度量是歐幾里得空間中兩點間“普通”(即直線)距離。使用這個距離,歐氏空間成為度量空間。相關聯的範數稱為歐幾里得範數。較早的文獻稱之為畢達哥拉斯度量

  • 曼哈頓距離
    在這裡插入圖片描述

  • 中心點的選取方式不同。 k-means 用的是平均值來重新計算分佈我們的每個聚類當中的點,但是k-medians 演算法選取的就是我們的中位值。這個好處就是針對一個數據集來了幾個噪音特別大的點,也就是和其他的點分佈遠的離譜的點,中位值的變化也是不是很大的。甚至可能沒有變化。

所以說k-median 的Robustness 比k-means 的要好

看下面的這個例子
在這裡插入圖片描述


k-median 演算法的描述

  1. 選取我們的初始的中心點的個數
  2. 計算剩餘的點的距離到初始的中心點的距離
  3. 將距離到中心點的距離最短的歸為一類
  4. 用曼哈頓距離重新計算中心點
  5. 重複3,4兩個步驟,直到中心點不會變化為止

我們來看下面的這個例子

在這裡插入圖片描述

這裡我們有十個點,我們要將我們的資料劃分為兩個類,這個時候,我們選取兩個初始的中心點為3號,和6號。
我們用曼哈頓距離公式為他們進行劃分:
在這裡插入圖片描述

得到的結果是:
在這裡插入圖片描述

這個時候我們第一次的迭代發現
1,2,3,4,5,7,9,10
是一個類
6,8 是另一個類

我們的點集是下面這個樣子的
(3,8)
(3,6)
(3,4)
(4,5)
(4,7)
(5,5)
(7,5)
(8,5)
對橫座標排序之後的中位數是4,
對縱座標排序之後的中位數是5
這個時候第一個集合的中心點就變成了(4,5)
第二個集合的點集是 (5,1)(7,3) 中心點就是(6,2)
這個時候我們在重新計算新的聚類
在這裡插入圖片描述

這個時候得到的結果還是一樣的,迭代結束。
得到了我們的聚類的結果。



Reference

[1] https://zh.wikipedia.org/wiki/歐幾里得距離
[2] https://zh.wikipedia.org/wiki/曼哈頓距離