天天看點

kmeans算法_機器學習算法—KMEANS算法原理

kmeans算法_機器學習算法—KMEANS算法原理

概述:

KMEANS算法又被成為K均值算法,是一種常用的聚類算法,由于不需要根據給定的訓練集訓練模型是以是一種無監督學習算法。其本質是根據標明的參數K将資料分類成K類,在聚類過程中從單一樣本開始通過不斷計算聚類資料的均值來作為整個類的中心進而再将距離此類别中心最近的資料納入同一類。

算法原理:

1、以下圖樣本散點圖展示資料集的整體分布情況

kmeans算法_機器學習算法—KMEANS算法原理

2、K值是KMEANS最重要的選擇參數,直接決定着資料聚類的類别數量,在選擇K值後,會在資料中随機選擇K個資料樣本最為初始中心點,如K=3,則結果如下圖所示

kmeans算法_機器學習算法—KMEANS算法原理

3、計算和中心點距離最近的點,将其歸入同類

kmeans算法_機器學習算法—KMEANS算法原理

4、每個類别當有了兩個以上的資料時,類的中心就會發生變化,是以類中一旦有新的資料被劃入時就需要重新計算整個類的中心點,這一步的計算也是整個算法的核心,是以稱為K均值算法

kmeans算法_機器學習算法—KMEANS算法原理

5、通過幾步計算之後的結果,能夠更直覺的展示出類的聚合情況和中心點的位置情況

kmeans算法_機器學習算法—KMEANS算法原理

6、判斷聚類過程結束的标準有兩個,一是中心點的位置不再發生變化,即結果收斂;二是執行了最夠多次的疊代次數(通俗可以了解為計算了幾次中心點位置)

kmeans算法_機器學習算法—KMEANS算法原理

注意事項:

1、K值是整個算法中最重要的參數,但是也是最不好确定的參數,如果需要比較好的确定K值,需要采用其他驗證算法,如計算樣本離最近聚類中心的總和,總和越小,則聚類的效果越好;輪廓系數,輪廓系數的範圍為-1至1之間,數字越大則聚類效果越好;蘭德指數,範圍為-1至1之間,數字越大則聚類效果越好;同質化得分,如果所有的聚類都隻包含屬于單個類的成員的資料點則聚類結果将滿足同質性,其取值範圍為0至1之間,值越大意味着聚類結果與真實情況越吻合。

2、以上驗證方法雖然對于确定K值有效,但是驗證過程需要額外的計算力資源,并且占用的計算力接近于聚類過程所需要的計算力資源,資料集如果較大,則計算力的消耗會産生疊加效應。

3、較為簡易的方法為,從資料集中随機抽取部分小規模資料,以散點圖等可視化手段來觀察資料的可能聚類數量,以此來判斷K的取值。這種方法可以認為是經驗法的一種表現形式,相比經驗法的完全定性分析,随機抽取資料觀察能夠在經驗的基礎上增加定量的分析部分,雖然随機抽取的資料也可能有誤差,但是抽取的資料量越多,則準确度越高。

4、因為初始的中心點選擇是根據K的值随機選擇K個點,是以選擇的随機性加上疊代過程造成算法的結果隻是局部最優解,畢竟反複的計算最短距離的點和類的中心都是在局部已經聚合的類的基礎上進行的,而不是從全局的範圍進行。

算法使用場景:

1、隐含類别的資料較為平衡的情況,如隐含類别的資料量差别較大,則聚類的效果就較差。

2、資料最好是凸資料,即隐含類别間的差異越大,則聚類效果越好,因為中心點不再變化所需要的疊代次數較少,比較容易收斂。

3、一般作為資料預處理,或者用于輔助分類貼标簽使用,因為在已經經過分類的資料上再進行聚類,準确度會非常高。

繼續閱讀