K-means算法是聚類算法秃症。即給定一個數據集银亲,利用K-means算法可將其分為K類厂榛。
算法思想:
- 隨機從數據集中選取k個數據點作為k個分類的質心
- 遍歷其余所有數據點盖矫,對每個數據點作這樣的操作:計算數據點到每個質心的歐式距離丽惭,選取距離最小值的質心與其歸為一類。這一步完成之后辈双,得到的結果就是初始分類责掏。
- 重新計算每個分類的質心。一般是按維度來計算均值湃望。
- 對于重新得到的質心换衬,運行第二步操作。
- 不斷重復2证芭,3直到收斂瞳浦。
那么如何確定算法是不是收斂呢。應該也是一個cost函數優(yōu)化問題废士。
參數c是分類的標簽叫潦,類別1,類別2,類別三3...,第二個參數是每一類的質心所在坐標官硝。J所求就是每個樣本到它的質心的距離平方和矗蕊。K-means的優(yōu)化利用的是EM思想。固定質心泛源,改變樣本標簽c來減小j拔妥,固定標簽c,改變質心來減小J达箍。
用專業(yè)一些的話來說没龙,E步估計隱含類別y的期望值,M步調整其他參數使得在給定類別c的情況下缎玫,極大似然估計P(x,c)最大硬纤。
極大似然的概念,我總忘,在這里記錄一個博客地址:http://blog.csdn.net/zouxy09/article/details/8537620 當時看EM算法的時候看到的赃磨,通俗易懂筝家。
在K-means里,這個極大似然估計是怎么樣的邻辉。
在男生女生的例子中溪王,我們的未知參數假設為在學校中男生比例為p,假如男生出現30次女生出現70次值骇,那么也就是求p30×(1-p)70
的最大值莹菱。這是它的似然函數。我們只需要求導就能得到使得似然函數達到最大的p值吱瘩。
那么在K-means中道伟,那么這里的未知參數應該是c的坐標。然后求J的最小值,這是一種EM思想的一種體現蜜徽。
K-means的主要應用祝懂,第一個想到的是對淘寶用戶數據進行聚類,得出這個用戶屬于哪個分類拘鞋,然后進行針對性的推薦砚蓬?感覺這個只是聚類而已,不一定要用到K-means吧盆色。略微搜了一下怜械,沒有搜到“K-means算法的應用場景”之類的相關文章,明天再說傅事。
K-means的缺點:再補
K-means的python實現:http://blog.csdn.net/taoyanqi8932/article/details/53727841
參考了如下博客: