機器學習中五種常用的聚類算法

2021-02-08 電子發燒友
機器學習中五種常用的聚類算法

李倩 發表於 2018-05-25 17:10:51

聚類是機器學習中一種重要的無監督算法,它可以將數據點歸結為一系列特定的組合。理論上歸為一類的數據點具有相同的特性,而不同類別的數據點則具有各不相同的屬性。在數據科學中聚類會從數據中發掘出很多分析和理解的視角,讓我們更深入的把握數據資源的價值、並據此指導生產生活。以下是五種常用的聚類算法。

K均值聚類

這一最著名的聚類算法主要基於數據點之間的均值和與聚類中心的聚類迭代而成。它主要的優點是十分的高效,由於只需要計算數據點與劇類中心的距離,其計算複雜度只有O(n)。其工作原理主要分為以下四步:

1.首先我們需要預先給定聚類的數目同時隨機初始化聚類中心。我們可以初略的觀察數據並給出較為準確的聚類數目;

2.每一個數據點通過計算與聚類中心的距離了來分類到最鄰近的一類中;

3.根據分類結果,利用分類後的數據點重新計算聚類中心;

4.重複步驟二三直到聚類中心不再變化。(可以隨機初始化不同的聚類中心以選取最好的結果)

這種方法在理解和實現上都十分簡單,但缺點卻也十分明顯,十分依賴於初始給定的聚類數目;同時隨機初始化可能會生成不同的聚類效果,所以它缺乏重複性和連續性。

和K均值類似的K中值算法,在計算過程中利用中值來計算聚類中心,使得局外點對它的影響大大減弱;但每一次循環計算中值矢量帶來了計算速度的大大下降。

均值漂移算法

這是一種基於滑動窗口的均值算法,用於尋找數據點中密度最大的區域。其目標是找出每一個類的中心點,並通過計算滑窗內點的均值更新滑窗的中心點。最終消除臨近重複值的影響並形成中心點,找到其對應的類別。

1.首先以隨機選取的點為圓心r為半徑做一個圓形的滑窗。其目標是找出數據點中密度最高點並作為中心;

2.在每個迭代後滑動窗口的中心將為想著較高密度的方向移動;

3.連續移動,直到任何方向的移動都不能增加滑窗中點的數量,此時滑窗收斂;

4.將上述步驟在多個滑窗上進行以覆蓋所有的點。當過個滑窗收斂重疊時,其經過的點將會通過其滑窗聚類為一個類;

下圖中每一個黑點都代表一個滑窗的中心,他們最終重疊在每一類的中心;

與K均值相比最大的優點是我們無需指定指定聚類數目,聚類中心處於最高密度處也是符合直覺認知的結果。但其最大的缺點在於滑窗大小r的選取,對於結果有著很大的影響。

基於密度的聚類算法(DBSCAN)

DBSCAN同樣是基於密度的聚類算法,但其原理卻與均值漂移大不相同:

1.首先從沒有被遍歷的任一點開始,利用鄰域距離epsilon來獲取周圍點;

2.如果鄰域內點的數量滿足閾值則此點成為核心點並以此開始新一類的聚類。(如果不是則標記為噪聲);

3.其鄰域內的所有點也屬於同一類,將所有的鄰域內點以epsilon為半徑進行步驟二的計算;

4.重複步驟二、三直到變量完所有核心點的鄰域點;

5.此類聚類完成,同時又以任意未遍歷點開始步驟一到四直到所有數據點都被處理;最終每個數據點都有自己的歸屬類別或者屬於噪聲。

這種方法最大的優點在於無需定義類的數量,其次可以識別出局外點和噪聲點、並且可以對任意形狀的數據進行聚類。

但也存在不可迴避的缺點,當數據密度變化劇烈時,不同類別的密度閾值點和領域半徑會產生很大的變化。同時在高維空間中準確估計領域半徑也是不小的挑戰。

利用高斯混合模型進行最大期望估計

對於較為複雜的分布K均值將會產生如下圖般較為離譜的聚類結果。

而高斯混合模型卻具有更高的靈活性。通過假設數據點符合均值和標準差描述的高斯混合模型來實現的。下圖以二維情況下為例描述了如何利用最大期望優化算法來獲取分布參數的過程:

1.首先確定聚類的數量,並隨機初始化每一個聚類的高斯分布參數;

2.通過計算每一個點屬於高斯分布的概率來進行聚類。與高斯中心越近的點越有可能屬於這個類;

3.基於上一步數據點的概率權重,通過最大似然估計的方法計算出每一類數據點最有可能屬於這一聚類的高斯參數;

4.基於新的高斯參數,重新估計每一點歸屬各類的概率,重複並充分2,3步驟直到參數不再變化收斂為止。

在使用高斯混合模型時有兩個關鍵的地方,首先高斯混合模型十分靈活,可以擬合任意形狀的橢圓;其次這是一種基於概率的算法,每個點可以擁有屬於多類的概率,支持混合屬性。

凝聚層次聚類

層次聚類法主要有自頂向下和自底向上兩種方式。其中自底向上的方式,最初將每個點看做是獨立的類別,隨後通過一步步的凝聚最後形成獨立的一大類,並包含所有的數據點。這會形成一個樹形結構,並在這一過程中形成聚類。

1.首先將每一個數據點看成一個類別,通過計算點與點之間的距離將距離近的點歸為一個子類,作為下一次聚類的基礎;

2.每一次迭代將兩個元素聚類成一個,上述的子類中距離最近的兩兩又合併為新的子類。最相近的都被合併在一起;

3.重複步驟二直到所有的類別都合併為一個根節點。基於此我們可以選擇我們需要聚類的數目,並根據樹來進行選擇。

層次聚類無需事先指定類的數目,並且對於距離的度量不敏感。這種方法最好的應用在於恢復出數據的層次化結構。但其計算複雜度較高達到了O(n^3).

每個聚類算法都有各自的優缺點,我們需要根據計算需求和應用需求選擇合適的算法來進行處理。隨著深度學習的出現,更多的神經網絡、自編碼器被用來提取數據中的高維特徵用於分類,是值得注意的研究熱點。

最後如果想練練手的話,scikit Learn上有很多例子可以操練,實踐才是最好的老師~~http://scikit-learn.org/stable/modules/clustering.html#clustering

打開APP閱讀更多精彩內容

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容圖片侵權或者其他問題,請聯繫本站作侵刪。 侵權投訴

相關焦點

  • 機器學習中的聚類算法有哪幾種?
    來源:博學谷 作者:照照目前,聚類算法被廣泛應用於用戶畫像、廣告推薦、新聞推送和圖像分割等等。聚類算法是機器學習中一種「數據探索」的分析方法,它幫助我們在大量的數據中探索和發現數據的結構。那麼機器學習中的聚類算法有哪幾種呢?
  • 機器學習之SKlearn(scikit-learn)的K-means聚類算法
    Sklearn 包含了很多種機器學習的方式:· Classification 分類· Regression 回歸· Clustering 非監督分類· Dimensionality reduction 數據降維· Model Selection 模型選擇· Preprocessing 數據預處理
  • 無監督機器學習中,最常見的聚類算法有哪些?
    在機器學習過程中,很多數據都具有特定值的目標變量,我們可以用它們來訓練模型。但是,大多數情況下,在處理實際問題時,數據不會帶有預定義標籤,因此我們需要開發能夠對這些數據進行正確分類的機器學習模型,通過發現這些特徵中的一些共性,來預測新數據的類。
  • 機器學習算法實踐 K均值聚類的實用技巧
    在本文中,他詳細介紹了一種稱為 K-Means Clustering(k均值聚類)的算法,其中包括如何衡量算法效果,以及如何確定你需要生成的數據段集數量。雷鋒網編譯整理,更多AI開發技術文章,關注AI研習社(微信號:okweiwu)。Bilal Mahmood:我們最常做的分析之一,便是在數據中提取模式。 比方說,某公司的客戶可被劃分入哪些細分市場?
  • 數據科學中必須熟知的5種聚類算法
    整理 | 菠蘿妹原文連結:https://towardsdatascience.com/the-5-clustering-algorithms-data-scientists-need-to-know-a36d136ef68聚類算法是機器學習中涉及對數據進行分組的一種算法
  • 機器學習算法實踐之K均值聚類的實用技巧
    在本文中,他詳細介紹了一種稱為 K-Means Clustering(k均值聚類)的算法,其中包括如何衡量算法效果,以及如何確定你需要生成的數據段集數量。雷鋒網編譯整理,更多AI開發技術文章,關注AI研習社(微信號:okweiwu)。Bilal Mahmood:我們最常做的分析之一,便是在數據中提取模式。 比方說,某公司的客戶可被劃分入哪些細分市場?
  • 14種機器學習常見算法分類匯總!
    很多人在平時的工作中都或多或少會用到機器學習的算法。這裡總結一下常見的機器學習算法,以供您在工作和學習中參考。機器學習的算法很多。很多時候困惑人們都是,很多算法是一類算法,而有些算法又是從其他算法中延伸出來的。這裡,我們從兩個方面來給大家介紹,第一個方面是學習的方式,第二個方面是算法的類似性。根據數據類型的不同,對一個問題的建模有不同的方式。
  • 五分鐘了解機器學習十大算法
    本文為有志於成為數據科學家或對此感興趣的讀者們介紹最流行的機器學習算法。機器學習是該行業的一個創新且重要的領域。我們為機器學習程序選擇的算法類型,取決於我們想要實現的目標。現在,機器學習有很多算法。因此,如此多的算法,可能對於初學者來說,是相當不堪重負的。
  • 聚類算法中的若干挑戰問題
    國防科技大學祝恩教授圍繞聚類算法,探討在實際應用中面臨的若干現實挑戰問題。作者:祝恩,國防科技大學計算機學院教授聚類是模式識別、機器學習、數據挖掘等領域中的基礎算法,在商業選址、金融產品推薦、異常檢測等方面有廣泛應用,但在實際應用中聚類可能遇到一些現實挑戰問題。物以類聚,人以群分。
  • K-Means聚類算法詳解
    寫在前面如果想從事數據挖掘或者機器學習的工作,掌握常用的機器學習算法是非常有必要的,常見的機器學習算法:監督學習算法:邏輯回歸,線性回歸,決策樹,樸素貝葉斯,K近鄰,支持向量機,集成算法Adaboost等無監督算法:聚類,降維,關聯規則, PageRank等為了詳細的理解這些原理
  • 17個機器學習的常用算法!
    在機器學習或者人工智慧領域,人們首先會考慮算法的學習方式。在機器學習領域,有幾種主要的學習方式。將算法按照學習方式分類是一個不錯的想法,這樣可以讓人們在建模和算法選擇的時候考慮能根據輸入數據來選擇最合適的算法來獲得最好的結果。1. 監督式學習:
  • 回歸、分類與聚類:三大方向剖解機器學習算法的優缺點(附Python和R...
    選自EliteDataScience機器之心編譯參與:蔣思源、晏奇在本教程中,作者對現代機器學習算法進行一次簡要的實戰梳理。雖然類似的總結有很多,但是它們都沒有真正解釋清楚每個算法在實踐中的好壞,而這正是本篇梳理希望完成的。因此本文力圖基於實踐中的經驗,討論每個算法的優缺點。而機器之心也在文末給出了這些算法的具體實現細節。
  • ...分類與聚類:三大方向剖解機器學習算法的優缺點(附Python和R實現)
    選自EliteDataScience機器之心編譯參與:蔣思源、晏奇在本教程中,作者對現代機器學習算法進行一次簡要的實戰梳理。雖然類似的總結有很多,但是它們都沒有真正解釋清楚每個算法在實踐中的好壞,而這正是本篇梳理希望完成的。因此本文力圖基於實踐中的經驗,討論每個算法的優缺點。而機器之心也在文末給出了這些算法的具體實現細節。
  • 9種常用的機器學習算法實現
    2、非監督學習(Unsupervised Learning,UL),這類算法的工作原理是從無標籤的訓練數據中學習數據的底層結構。,如通過分析超市購物籃,發現啤酒總是和尿片一起購買(啤酒與尿片的故事),較基礎的算法有:Apriori聚類(Clustering):對數據進行分組,以便組內對象比組間對象更相似,較基礎的算法有:K-Means
  • 機器學習十大經典算法之K-Means聚類算法
    聚類介紹聚類在機器學習,數據挖掘,模式識別,圖像分析以及生物信息等領域有廣泛的應用。聚類是把相似的對象通過靜態分類的方法分成不同的組別或者更多的子集(subset),這樣讓在同一個子集中的成員對象都有相似的一些屬性,常見的包括在坐標系中更加短的空間距離(一般是歐式距離)等。
  • 機器學習聚類算法綜述
    基本上這就是DBSCAN算法的主要內容了,是不是很簡單?但是我們還是有三個問題沒有考慮。第一個是一些異常樣本點或者說少量游離於簇外的樣本點,這些點不在任何一個核心對象在周圍,在DBSCAN中,我們一般將這些樣本點標記為噪音點。
  • 阿里工程師也在用的頂級機器學習聚類算法,了解一下!
    K-均值聚類旨在將數據分為k個聚類,以使同一聚類中的數據點相似,而不同聚類中的數據點相距更遠。兩個點的相似性取決於它們之間的距離。有許多測量距離的方法。歐幾裡德距離(p = 2的minkowski距離)是最常用的距離測量之一。K-均值聚類試圖使聚類內的距離最小化,並使不同聚類之間的距離最大化。K-均值算法無法確定簇數。
  • 如何選擇正確的機器學習算法
    如果模型的輸出是一組輸入組,則是一個聚類問題。2 - 了解數據在為正確的問題選擇正確的算法的過程中,數據的理解過程起著關鍵的作用。一些算法可以處理較小的樣本集,而另一些算法則需要大量的樣本。某些算法處理分類數據,而另一些算法則喜歡處理數值輸入。
  • 機器學習十大算法都是何方神聖?
    跟我們生活息息相關的最常見機器學習算法包括電影推薦算法、圖書推薦算法。這些算法都是基於你的電影觀看記錄或圖書購買記錄來給你做推薦的。James Le在KDnuggets上發布了一篇文章,介紹了他是如何入門機器學習的。此外,他在其中摸索出十大常用的機器學習算法,並逐一進行介紹。雷鋒網編譯如下,未經許可不得轉載。如果你想學機器學習,那怎麼入門呢?
  • 7 種機器學習算法的 7 個要點
    有些庫和框架更進一步,可以讓你在短時間內實現和比較多種算法。但在使用方便的同時,也帶來了一些缺點。我們可能會忽略這些算法背後的關鍵概念或思想,而這些概念或思想對於這些算法的理解是必不可少的。在本文中,我將提到關於 7 種機器學習算法的 7 個要點。我想指出的是,這些並不是對算法的完整解釋,所以,如果你對它們有基本了解的話,那就更好不過了。