機器學習:利用K-均值聚類算法對未標註數據分組——筆記
聚類:
聚類是一種無監督的學習,它將相似的對象歸到同一個簇中。有點像全自動分類。聚類方法幾乎可以應用於所有對象,簇內的對象越相似,聚類的效果越好。聚類分析試圖將相似對象歸入同一簇,將不相似對象歸到不同簇。相似這一概念取決於所選的相似度計算方法。
K-均值聚類算法:
優點:易於實現。
缺點:可能收斂到局部最小值,在大規模數據集上收斂較慢。
適用於:數值型數據。
k-均值是發現給定數據集的k個簇的算法。簇的個數k是用戶給定的,每一個簇通過其質心,即簇的所有點的中心來描述。
工作流程:首先,隨機確定k個初始點作為質心。然後將數據集中的每個點分配到一個簇中,具體來講,為每個點找距離最近的質心,並將其分配給該質心所對應的簇。這一步完成之後,每個簇的質心更新為該簇所有點的質心。
計算質心——分配——重新計算,反復循環,直到所有數據點的簇分配結果不再改變。
k-均值算法收斂但是聚類效果較差的原因是:收斂到了局部最小值,而非全局最小值。
聚類度量指標:
一種用於度量聚類效果的指標是SSE(誤差平方和)。SSE越小,表示數據點越接近它們的質心,聚類效果也越好。
增加簇的數目肯定可以降低SSE值,但是這違背了聚類目標(在保持簇數目不變的情況下提高簇的質量)。
另一種方法是將具有最大SSE值得簇劃分為兩個簇。在這些點上再進行k-均值算法。
為了保持簇總數不變,可將某兩個簇合並:合並最近的質心,或者合並兩個使得SSE增幅最小的質心。
二分k-均值算法:
為克服k-均值算法收斂於局部最小解的問題,提出二分k-均值算法。
首先,將所有點作為一個簇,然後將該簇一分為二。之後,選擇其中一個簇繼續劃分。選擇哪一個簇取決於對其劃分是否可以最大程度降低SSE值。上述基於SSE劃分過程不斷重復,直到得到用戶指定的簇數目為止。(另一種是選擇SSE最大的簇進行劃分。)
機器學習:利用K-均值聚類算法對未標註數據分組——筆記