K-means算法小記

K-means算法是聚類算法。即給定一個數(shù)據(jù)集,利用K-means算法可將其分為K類。

算法思想:
  1. 隨機從數(shù)據(jù)集中選取k個數(shù)據(jù)點作為k個分類的質(zhì)心
  2. 遍歷其余所有數(shù)據(jù)點,對每個數(shù)據(jù)點作這樣的操作:計算數(shù)據(jù)點到每個質(zhì)心的歐式距離,選取距離最小值的質(zhì)心與其歸為一類。這一步完成之后,得到的結(jié)果就是初始分類。
  3. 重新計算每個分類的質(zhì)心。一般是按維度來計算均值。
  4. 對于重新得到的質(zhì)心,運行第二步操作。
  5. 不斷重復2,3直到收斂。

那么如何確定算法是不是收斂呢。應(yīng)該也是一個cost函數(shù)優(yōu)化問題。

參數(shù)c是分類的標簽,類別1,類別2,類別三3...,第二個參數(shù)是每一類的質(zhì)心所在坐標。J所求就是每個樣本到它的質(zhì)心的距離平方和。K-means的優(yōu)化利用的是EM思想。固定質(zhì)心,改變樣本標簽c來減小j,固定標簽c,改變質(zhì)心來減小J。

用專業(yè)一些的話來說,E步估計隱含類別y的期望值,M步調(diào)整其他參數(shù)使得在給定類別c的情況下,極大似然估計P(x,c)最大。

極大似然的概念,我總忘,在這里記錄一個博客地址:http://blog.csdn.net/zouxy09/article/details/8537620 當時看EM算法的時候看到的,通俗易懂。

在K-means里,這個極大似然估計是怎么樣的。
在男生女生的例子中,我們的未知參數(shù)假設(shè)為在學校中男生比例為p,假如男生出現(xiàn)30次女生出現(xiàn)70次,那么也就是求p30×(1-p)70

的最大值。這是它的似然函數(shù)。我們只需要求導就能得到使得似然函數(shù)達到最大的p值。

那么在K-means中,那么這里的未知參數(shù)應(yīng)該是c的坐標。然后求J的最小值,這是一種EM思想的一種體現(xiàn)。

K-means的主要應(yīng)用,第一個想到的是對淘寶用戶數(shù)據(jù)進行聚類,得出這個用戶屬于哪個分類,然后進行針對性的推薦?感覺這個只是聚類而已,不一定要用到K-means吧。略微搜了一下,沒有搜到“K-means算法的應(yīng)用場景”之類的相關(guān)文章,明天再說。

K-means的缺點:再補

K-means的python實現(xiàn):http://blog.csdn.net/taoyanqi8932/article/details/53727841

參考了如下博客:

http://blog.csdn.net/csqazwsxedc/article/details/52225759

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

推薦閱讀更多精彩內(nèi)容