k-means 演算法介紹

Max_Lyu發表於2019-05-22

    

概述

  聚類屬於機器學習的無監督學習,在資料中發現資料物件之間的關係,將資料進行分組,組內的相似性越大,組間的差別越大,則聚類效果越好。它跟分類的最主要區別就在於有沒有“標籤”。比如說我們有一組資料,資料對應著每個“標籤”,我們通過這些資料與標籤之間的相關性,預測出某些資料屬於哪些“標籤”,這屬於分類;而聚類是沒有“標籤”的,因此說它屬於無監督學習,分類則屬於監督學習。

  k-means(k-均值)屬於聚類演算法之一,籠統點說,它的過程是這樣的,先設定引數k,通過歐式距離進行計算,從而將資料集分成k個簇。為了更好地理解這個演算法,下面更加詳細的介紹這個演算法的思想。

演算法思想

  我們先過一下幾個基本概念:

 (1) K值:即要將資料分為幾個簇;

 (2) 質心:可理解為均值,即向量各個維度取平均值,這個是我們聚類演算法一個重要的指標;

 (3) 歐式距離:

 

  上面的這3條基本概念你大可不必太糾結,因為這是為了讓你看下面的內容時,能夠更好理解。假如說,我們現在有一堆資料集,在影像上的分佈是這樣的:

     

 

  從影像上看,貌似可以直接把他分為3個簇,因此,我們設定 k=3,然後我們隨機生成3個點,再通過歐式距離公式,計算每個點到這三個點之間的距離,距離哪個點最近的,就歸類,於是它就變成了這樣:

    

  當然,這樣還不夠,畢竟這三個點只是隨機生成的,而且我們還需要不斷調整以達到更好的聚類效果;因此我們計算初次分好的簇的均值,即上面提到的質心,讓這三個質心替代掉隨機點,然後迭代重複上面的過程,以達到最優。

         

            

  ......(重複迭代n次)......

  最後,才生成最優解,如圖:

           

  上面的圖是在這個網站通過演示得到的,可以上這個網址實際操作一波,加深理解。

 缺點

  幾乎每個演算法都有其缺點,這個演算法也不例外,優點是原理簡單,實現容易,缺點如下:

 (1)不規則點的聚類結果會有所偏差,如下圖,比如我們想分成4個簇,倆眼睛一嘴巴以及外輪廓,但效果總是難以達到。

     

 (2)k值難以確定。比如下面這樣的圖,應該把它從中間分割得到兩塊呢還是分成左中右三塊呢,難以確定。

    

  想要第一時間獲取更多有意思的推文,可關注公眾號: Max的日常操作

                            

 

相關文章