日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

K-means聚类详解

發布時間:2023/12/20 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 K-means聚类详解 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

聚類的思想

所謂聚類算法是指將一堆沒有標簽的數據自動劃分成幾類的方法,屬于無監督學習方法,這個方法要保證同一類的數據有相似的特征,如下圖所示:

根據樣本之間的距離或者說是相似性(親疏性),把越相似、差異越小的樣本聚成一類(簇),最后形成多個簇,使同一個簇內部的樣本相似度高,不同簇之間差異性高。

K-means方法是一種非監督學習的算法,它解決的是聚類問題

算法簡介

K-means方法是聚類中的經典算法,數據挖掘十大經典算法之一;算法接受參數k,然后將事先輸入的n個數據對象劃分為k個聚類以便使得所獲得的聚類滿足聚類中的對象相似度較高,而不同聚類中的對象相似度較小。

K-Means算法是聚類中的基礎算法,也是無監督學習里的一個重要方法。其基本原理是隨機確定k(人為指定)個初始點作為簇質心,然后將數據樣本中的每一個點與每個簇質心計算距離,依據此距離對樣本進行分配;之后將每次簇的質心更改為該簇內所有點的平均值

普通的K-Means算法因為初始簇質心的隨機性,很可能會收斂到局部最優。為解決這一情況,可以隨機初始化若干次,取最好結果,但這種方法在初始給定k值較大的情況下,可能只會得到比前一次好一點的結果(因為k值越大,簇質心越多,則隨機性帶來的不確定性越小

算法思想

以空間中k個點為中心進行聚類,對最靠近他們的對象歸類,通過迭代的方法,逐次更新各聚類中心的值,直到得到最好的聚類結果

相關概念

K值:要得到的簇的個數

質心:每個簇的均值向量,即向量各維取平均即可

距離量度:常用歐幾里得距離和余弦相似度(先標準化)

算法描述

K-means是一個反復迭代的過程,算法分為四個步驟:

  • 1.隨機選取數據空間中的K個對象作為初始中心,每個對象代表一個聚類中心
  • 2.對于樣本中的數據對象,根據它們與這些聚類中心的歐氏距離,按距離最近的準則將它們分到距離它們最近的聚類中心(最相似)所對應的類
  • 3.更新聚類中心:將每個類別中所有對象所對應的均值作為該類別的聚類中心,計算目標函數的值
  • 4.斷聚類中心和目標函數的值是否發生改變,若不變,則輸出結果,若改變,則返回2)

手算舉例

1.選擇初始中心,即質心

我們就選P1和P2

2.計算其他點與初始中心的距離

P3到P1的距離從圖上也能看出來(勾股定理),是√10 = 3.16;

P3到P2的距離√((3-1)2+(1-2)2 = √5 = 2.24,所以P3離P2更近,P3就跟P2混。

同理,P4、P5、P6也這么算,如下

第一次分組后的結果

組A:P1

組B:P2、P3、P4、P5、P6

3.再計算新的中心

A組質心還是P1=(0,0)

B組新的質心坐標為:P哥=((1+3+8+9+10)/5,(2+1+8+10+7)/5)=(6.2,5.6)

第二次分組結果

組A:P1、P2、P3

組B:P4、P5、P6

4.再次計算質心

P哥1=(1.33,1)

P哥2=(9,8.33)

第三次分組結果

組A:P1、P2、P3

組B:P4、P5、P6

可以發現,第三次分組結果和第二次分組結果一致,說明已經收斂,聚類結束。

常見的問題小結

1.K值怎么定?我怎么知道應該幾類?

  • 這個真的沒有確定的做法,分幾類主要取決于個人的經驗與感覺,通常的做法是多嘗試幾個K值,看分成幾類的結果更好解釋,更符合分析目的等。
  • 肘部法則

2.初始的K個質心怎么選?

最常用的方法是隨機選,初始質心的選取對最終聚類結果有影響,因此算法一定要多執行幾次,哪個結果更合理(reasonable),就用哪個結果

3.K-Means會不會陷入一直選質心的過程,永遠停不下來?

不會,有數學證明K-Means一定會收斂,大致思路是利用SSE的概念(也就是誤差平方和),即每個點到自身所歸屬質心的距離的平方和,這個平方和是一個函數,然后能夠證明這個函數是可以最終收斂的函數

4.關于離群值

離群值就是遠離整體的,非常異常、非常特殊的數據點,在聚類之前應該將這些“極大”“極小”之類的離群數據都去掉,否則會對于聚類的結果有影響。但是,離群值往往自身就很有分析的價值,可以把離群值單獨作為一類來分析

5.單位要一致

比如X的單位是米,Y也是米,那么距離算出來的單位還是米,是有意義的。但是如果X是米,Y是噸,用距離公式計算就會出現“米的平方”加上“噸的平方”再開平方,最后算出的東西沒有數學意義,這就有問題了

6.標準化

如果數據中X整體都比較小,比如都是1到10之間的數,Y很大,比如都是1000以上的數,那么,在計算距離的時候Y起到的作用就比X大很多,X對于距離的影響幾乎可以忽略,這也有問題。因此,如果K-Means聚類中選擇歐幾里德距離計算距離,數據集又出現了上面所述的情況,就一定要進行數據的標準化(normalization),即將數據按比例縮放,使之落入一個小的特定區間

停止收斂條件

先隨機選取K個對象作為初始的聚類中心。然后計算每個對象與各個種子聚類中心之間的距離,把每個對象分配給距離它最近的聚類中心。聚類中心以及分配給它們的對象就代表一個聚類。一旦全部對象都被分配了,每個聚類的聚類中心會根據聚類中現有的對象被重新計算。這個過程將不斷重復直到滿足某個終止條件。終止條件可以是以下任何一個:

  • 1.沒有(或最小數目)對象被重新分配給不同的聚類,即樣本所屬類別沒有發生改變
  • 2.沒有(或最小數目)聚類中心再發生變化。
  • 3.誤差平方和局部最小

K均值算法優缺點

優點

  • 原理簡單(算法簡單,容易實現)
  • 速度快
    • 它的復雜度大約是O(nkt),其中n是所有對象的數目,k是簇的數目,t是迭代的次數。通常k<<n。這個算法通常局部收斂。
  • 對大數據集有比較好的伸縮性
    • 對處理大數據集,該算法是相對可伸縮的和高效率的。
    • 算法嘗試找出使平方誤差函數值最小的k個劃分。當簇是密集的、球狀或團狀的,且簇與簇之間區別明顯時,聚類效果較好。

缺點

  • 需要指定聚類 數量K,K值比較難以選取

  • 對異常值敏感

    • 對于”噪聲”和孤立點數據敏感,少量的該類數據能夠對平均值產生極大影響
    • 不適合于發現非凸面形狀的簇,或者大小差別很大的簇
  • 對初始值敏感

    • 對初值的簇心值敏感,對于不同的初始值,可能會導致不同的聚類結果
    • 對數據類型要求較高,適合數值型數據
    • 可能收斂到局部最小值,在大規模數據上收斂較慢

應用例子

https://blog.csdn.net/qq_42363032/article/details/106505008

代碼實現

https://blog.csdn.net/qq_42363032/article/details/106505046

總結

以上是生活随笔為你收集整理的K-means聚类详解的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。