天天看點

【機器學習之K-means聚類算法】前言一、什麼是聚類算法?二、算法過程是怎樣的?總結

文章目錄

  • 前言
  • 一、什麼是聚類算法?
  • 二、算法過程是怎樣的?
    • 1.原理四步走
    • 2.詳細解讀K-means
      • 2-1.算法問題所在
      • 2-2.與普通的K-mean對比
      • 2-3.為何效率如此高?
      • 2.4.分組情況
      • 2.5.如何使用K-means?
      • 2.6.肘部法則
    • 3.問題總結
      • 3-1.K-means聚類的優缺點 ★★★☆☆
        • 3-1-1.優點
        • 3-1-2.缺點
    • 4.拔高亮點
      • 4-1.KNN和K-means的差別與相似點
      • 4-2.K-means的優缺點及改進
        • 4-2-1.二分k-means算法是什麼呢?
      • 4-3.K-means如何進行評估
  • 總結

前言

例如:随着人工智能的不斷發展,機器學習這門技術也越來越重要,很多人都開啟了學習機器學習,本文就介紹了機器學習K-means聚類的基礎内容。

一、什麼是聚類算法?

首先什麼是聚類算法?聚類就是一種機器學習的技術,它涉及到資料點的分組。比如說我們給定了一組資料點,我們可以使用聚類算法将每個資料點劃分為一個特定的組。在理論上來說,同一組中的資料點應該具有相似的屬性和(或)特征,而不同組中的資料點應該具有高度不同的屬性和(或)特征。聚類是一種無監督學習的方法,是許多領域中常用的一種統計資料分析技術,一般是在做大資料或者資料分析的時候會用到聚類多一些,比如一些資料挖掘工作中運用的多一些。

【機器學習之K-means聚類算法】前言一、什麼是聚類算法?二、算法過程是怎樣的?總結

二、算法過程是怎樣的?

1.原理四步走

K-means是常用的一個聚類算法,它其實是一個基于距離的聚類算法,采用的是距離作為相似性的評價名額,也就是說兩個對象距離越近,它們相似度就越高。它這個算法認為類簇是由距離靠近的對象組成的,是以把得到緊湊且獨立的簇作為最終目标。

K-means的算法過程是怎樣的呢?它能接受一個沒有标記的資料集,然後将它聚類成不同的組。它是一個疊代求解的算法,步驟如下

① 首先先設定一個K值,也就是說像把資料集聚類成K個集合,我們在資料集中選K個随機的點,把它當做初始的聚類中心;

【機器學習之K-means聚類算法】前言一、什麼是聚類算法?二、算法過程是怎樣的?總結

② 然後計算資料集中的每個資料對象,計算它們跟K個質心間的距離(如歐氏距離),将每個對象都配置設定給距離最近的聚類中心,然後把一個聚類中心和分給它們的對象表示為一個聚類的集合;

【機器學習之K-means聚類算法】前言一、什麼是聚類算法?二、算法過程是怎樣的?總結

③ 然後每配置設定一個樣本對象,聚類中心就會重新被計算,通過計算每個聚類裡資料對象跟聚類中心距離的平均值,然後把該聚類的中心點移動到平均值的位置;

【機器學習之K-means聚類算法】前言一、什麼是聚類算法?二、算法過程是怎樣的?總結

④ 然後就一直重複步驟,直到沒有或者最少個數的中心點不再變化,換一句話說就是新計算出來的質心和原先的質心間的距離小于一個門檻值(就是位置變化不大,趨于穩定或者收斂),誤差平方和就局部最小了,我們就認為聚類達到了期望,然後算法結束。

【機器學習之K-means聚類算法】前言一、什麼是聚類算法?二、算法過程是怎樣的?總結

2.詳細解讀K-means

2-1.算法問題所在

K-means這個算法本身存在一定的問題,比如說在大資料量下的計算時間過長就是一個重要問題。是以如果非要用的話,我們會選擇用 Mini Batch K-means,什麼情況下适合用它呢?它适合大資料量(樣本量>1w)的情況下,如果資料量少的話也就用不上聚類,但是我們也需要考慮它的一個算法效率(運作時間)以及準确度。

2-2.與普通的K-mean對比

它和我們普通的K-means有什麼差別?以及有什麼特點呢?就一個字快!有團隊試驗過,3萬的資料量,K-means和Mini Batch K-means相比,運作事件相差2倍多,但聚類結果差異卻很小。是以說該算法能盡量保持聚類準确性下但能大幅度降低計算時間,這也是我們如果要選擇聚類的話,選擇該模型算法。

【機器學習之K-means聚類算法】前言一、什麼是聚類算法?二、算法過程是怎樣的?總結

2-3.為何效率如此高?

它是怎麼做到這麼快的呢?該算法使用了一個種叫做Mini Batch(分批處理)的方法對資料點之間的距離進行了一個計算。Mini Batch的好處就是計算過程中不必使用所有的資料樣本,而是從不同類别的樣本中抽取一部分樣本來代表各自類型進行計算。總結來說就是由于計算樣本量少,是以會相應的減少運作時間,但是另一方面來說這樣進行抽樣也必然會帶來準确度的下降。實際上,這種思路在梯度下降、機器學習和深度學習的深度網絡算法中都有應用。

2.4.分組情況

聚類算法以很便利地将資料分為許多不同組,即便就是在沒有非常明顯區分的組群的情況下也是可以的。

K-means的最小化問題,就是要最小化所有的資料點與其所關聯的聚類中心點之間的距離之和。

2.5.如何使用K-means?

我們在運用K-means算法之前,肯定需要先随機初始化所有的聚類中心點。有亮點需要注意①我們應該選擇K < 𝑚,也就是說聚類中心點的個數小于所有訓練集執行個體的數量;②我們随機選擇K個訓練執行個體,然後讓K個聚類中心分别跟這K個訓練執行個體相等K-均值會存在一個問題,它有可能會停留在一個局部最小值處,然而這取決于一個初始化的情況。我們為了解決這個問題,一般我們會需要多運作幾次算法模型,每一次都重新進行随機初始化,最後再比較多次運作 K-均值的結果,選擇代價函數最小的結果。這種方法在K較小的時候,比如2到10還是可以的,但是如果K較大,這麼做也可能不會有明顯地改善。

2.6.肘部法則

沒有什麼所謂最好的選擇聚類數的方法,我們通常也是需要根據不同的問題來人工選擇的。這就可能引入了一個肘部法則了,關于它,我們所需要做的是改變K值,也就是聚類類别數目的總數。我們可能會得到一條類似于人胳膊肘的曲線,它會在某一個區間下降的非常快,還會有一個區間下降的速度會慢下來,中間有一個臨界點,這個臨界點就是我們要找的那個曲線的肘點,這就是一個選擇聚類個數比較合理的一個方法。

【機器學習之K-means聚類算法】前言一、什麼是聚類算法?二、算法過程是怎樣的?總結

3.問題總結

3-1.K-means聚類的優缺點 ★★★☆☆

3-1-1.優點

①原理比較簡單,實作也是比較容易的,收斂速度快;

②當結果簇是密集的,而簇與簇之間差別明顯時, 它的效果較好;

③主要需要調參的參數僅僅是簇數k。

3-1-2.缺點

①K值需要提前給定,很多情況下K值的估計是非常困難的;

②K-Means算法對初始選取的質心點是敏感的,不同的随機種子點得到的聚類結果完全不同,對結果影響很大;

③對噪音和異常點比較的敏感。可以用來檢測異常值;

④ 采用疊代方法,可能隻能得到局部最優解,而無法得到全局的最優解

4.拔高亮點

4-1.KNN和K-means的差別與相似點

KNN分類算法,是一個理論上比較成熟的方法,同時也是最簡單的機器學習算法之一。

【機器學習之K-means聚類算法】前言一、什麼是聚類算法?二、算法過程是怎樣的?總結

相似點:都包含這樣的過程,給定一個點,在資料集中找離它最近的點。

4-2.K-means的優缺點及改進

K-means算法,在大資料條件下,會耗費大量的時間和記憶體。是以我們需要對它進行一個優化,主要從以下幾點考慮:

① 減少聚類的數目K。因為每個樣本都要跟類中心計算距離;

② 減少樣本的特征次元。比如說,通過PCA等進行降維;

③ 考察其他的聚類算法,去測試不同聚類算法的性能,做取舍;

④ 利用hadoop叢集,K-means算法是很容易進行并行計算的;

⑤ 算法可能找到局部最優的聚類,而不是全局最優的聚類。使用改進的二分k-means算法。

4-2-1.二分k-means算法是什麼呢?

  1. 首先就是先将整個資料集看成一個簇;
  2. 然後進行一次k-means(k=2)算法将該簇一分為二,并計算每個簇的誤差平方和;
  3. 選擇平方和最大的簇疊代上述過程再次一分為二;
  4. 直至簇數達到使用者指定的k為止,此時可以達到的全局最優。

4-3.K-means如何進行評估

由于資料以及需求的多樣性,沒有一種算法能夠适用于所有的資料類型或應用場景,似乎每種情況都可能需要一種不同的評估方法或度量标準。比如說K均值聚類可以用誤差平方和來評估,但是基于密度的資料簇可能不是球形,誤差平方和就會失效。雖然判斷聚類算法結果的好壞強烈依賴于人的主觀解釋,但是對算法進行評估還是必要的步驟,不可忽視。

聚類評估的任務其實就是估計在資料集上進行聚類的可行性,以及聚類方法産生結果的品質這兩個要點,這個過程又分為三個子任務,分别是:

  • 估計聚類趨勢。就是檢測分析資料中是不是有非随機的簇結構,如果資料基本随機,那麼聚類的結果就沒意義了,它也找不到一個合适的K對應的簇數;
  • 判定資料簇數。确定好聚類趨勢之後,我們需要找到同真實資料分布最為吻合的簇數,借此來判定聚類結果的品質。方法比如說肘部法則;
  • 測定聚類品質。在無監督的情況下,我們可以通過考察簇的分離情況和簇的緊湊情況來評估聚類的效果。常見的測量名額,有輪廓系數、均方根标準偏差、R方(R-Square)、改進的HuBertΓ統計等

總結

以上就是今天要講的内容,本文僅僅簡單介紹了K-means的使用。K-means聚類方法能做到基于劃分的聚類、基于層次的聚類、基于密度的聚類、基于網絡的聚類、基于模型的聚類以及基于模糊的聚類。

繼續閱讀