国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

K-means聚類算法的三種改進(jìn)(K-means++,ISODATA,Kernel K-means)介紹與對比

這篇具有很好參考價(jià)值的文章主要介紹了K-means聚類算法的三種改進(jìn)(K-means++,ISODATA,Kernel K-means)介紹與對比。希望對大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

?

目錄

?一、概述

二、經(jīng)典K-means算法

三、K-means++算法

四、ISODATA算法

六、數(shù)據(jù)集測試


?一、概述

????? 在本篇文章中將對四種聚類算法(K-means,K-means++,ISODATA和Kernel K-means)進(jìn)行詳細(xì)介紹,并利用數(shù)據(jù)集來真實(shí)地反映這四種算法之間的區(qū)別。

????? 首先需要明確的是上述四種算法都屬于"硬聚類”算法,即數(shù)據(jù)集中每一個(gè)樣本都是被100%確定得分到某一個(gè)類別中。與之相對的"軟聚類”可以理解為每個(gè)樣本是以一定的概率被分到某一個(gè)類別中。

??????先簡要闡述下上述四種算法之間的關(guān)系,已經(jīng)了解過經(jīng)典K-means算法的讀者應(yīng)該會(huì)有所體會(huì)。沒有了解過K-means的讀者可以先看下面的經(jīng)典K-means算法介紹再回來看這部分。

?????(1)?K-means與K-means++:原始K-means算法最開始隨機(jī)選取數(shù)據(jù)集中K個(gè)點(diǎn)作為聚類中心,而K-means++按照如下的思想選取K個(gè)聚類中心:假設(shè)已經(jīng)選取了n個(gè)初始聚類中心(0<n<K),則在選取第n+1個(gè)聚類中心時(shí):距離當(dāng)前n個(gè)聚類中心越遠(yuǎn)的點(diǎn)會(huì)有更高的概率被選為第n+1個(gè)聚類中心。在選取第一個(gè)聚類中心(n=1)時(shí)同樣通過隨機(jī)的方法。可以說這也符合我們的直覺:聚類中心當(dāng)然是互相離得越遠(yuǎn)越好。這個(gè)改進(jìn)雖然直觀簡單,但是卻非常得有效。

??????(2)?K-means與ISODATA:ISODATA的全稱是迭代自組織數(shù)據(jù)分析法。在K-means中,K的值需要預(yù)先人為地確定,并且在整個(gè)算法過程中無法更改。而當(dāng)遇到高維度、海量的數(shù)據(jù)集時(shí),人們往往很難準(zhǔn)確地估計(jì)出K的大小。ISODATA就是針對這個(gè)問題進(jìn)行了改進(jìn),它的思想也很直觀:當(dāng)屬于某個(gè)類別的樣本數(shù)過少時(shí)把這個(gè)類別去除,當(dāng)屬于某個(gè)類別的樣本數(shù)過多、分散程度較大時(shí)把這個(gè)類別分為兩個(gè)子類別。

????? (3)?K-means與Kernel K-means:傳統(tǒng)K-means采用歐式距離進(jìn)行樣本間的相似度度量,顯然并不是所有的數(shù)據(jù)集都適用于這種度量方式。參照支持向量機(jī)中核函數(shù)的思想,將所有樣本映射到另外一個(gè)特征空間中再進(jìn)行聚類,就有可能改善聚類效果。本文不對Kernel K-means進(jìn)行詳細(xì)介紹。

????? 可以看到,上述三種針對K-means的改進(jìn)分別是從不同的角度出發(fā)的,因此都非常具有代表意義。目前應(yīng)用廣泛的應(yīng)該還是K-means++算法(例如2016年底的NIPS上也有針對K-means++的改進(jìn),感興趣的讀者可以進(jìn)一步學(xué)習(xí)https://papers.nips.cc/paper/6478-fast-and-provably-good-seedings-for-k-means)。

二、經(jīng)典K-means算法

????算法描述如下,非常清晰易懂。經(jīng)典K-means算法應(yīng)該是每個(gè)無監(jiān)督學(xué)習(xí)教程開頭都會(huì)講的內(nèi)容,故不再多費(fèi)口舌說一遍了。

kmeans聚類改進(jìn),Algorithm,聚類,算法,kmeans

圖1. 經(jīng)典K-means算法

????? 值得一提的是關(guān)于聚類中心數(shù)目(K值)的選取,的確存在一種可行的方法,叫做Elbow Method:通過繪制K-means代價(jià)函數(shù)與聚類數(shù)目K的關(guān)系圖,選取直線拐點(diǎn)處的K值作為最佳的聚類中心數(shù)目。但在這邊不做過多的介紹,因?yàn)樯鲜龇椒ㄖ械墓拯c(diǎn)在實(shí)際情況中是很少出現(xiàn)的。比較提倡的做法還是從實(shí)際問題出發(fā),人工指定比較合理的K值,通過多次隨機(jī)初始化聚類中心選取比較滿意的結(jié)果。

三、K-means++算法

??????2007年由D. Arthur等人提出的K-means++針對圖1中的第一步做了改進(jìn)??梢灾庇^地將這改進(jìn)理解成這K個(gè)初始聚類中心相互之間應(yīng)該分得越開越好。整個(gè)算法的描述如下圖所示:

kmeans聚類改進(jìn),Algorithm,聚類,算法,kmeans

????圖2. K-means++算法

????? 下面結(jié)合一個(gè)簡單的例子說明K-means++是如何選取初始聚類中心的。數(shù)據(jù)集中共有8個(gè)樣本,分布以及對應(yīng)序號(hào)如下圖所示:

kmeans聚類改進(jìn),Algorithm,聚類,算法,kmeans

圖3. K-means++示例

????? 假設(shè)經(jīng)過圖2的步驟一后6號(hào)點(diǎn)被選擇為第一個(gè)初始聚類中心,那在進(jìn)行步驟二時(shí)每個(gè)樣本的D(x)和被選擇為第二個(gè)聚類中心的概率如下表所示:

kmeans聚類改進(jìn),Algorithm,聚類,算法,kmeans

??? 其中的P(x)就是每個(gè)樣本被選為下一個(gè)聚類中心的概率。最后一行的Sum是概率P(x)的累加和,用于輪盤法選擇出第二個(gè)聚類中心。方法是隨機(jī)產(chǎn)生出一個(gè)0~1之間的隨機(jī)數(shù),判斷它屬于哪個(gè)區(qū)間,那么該區(qū)間對應(yīng)的序號(hào)就是被選擇出來的第二個(gè)聚類中心了。例如1號(hào)點(diǎn)的區(qū)間為[0,0.2),2號(hào)點(diǎn)的區(qū)間為[0.2, 0.525)。

????? 從上表可以直觀的看到第二個(gè)初始聚類中心是1號(hào),2號(hào),3號(hào),4號(hào)中的一個(gè)的概率為0.9。而這4個(gè)點(diǎn)正好是離第一個(gè)初始聚類中心6號(hào)點(diǎn)較遠(yuǎn)的四個(gè)點(diǎn)。這也驗(yàn)證了K-means的改進(jìn)思想:即離當(dāng)前已有聚類中心較遠(yuǎn)的點(diǎn)有更大的概率被選為下一個(gè)聚類中心。可以看到,該例的K值取2是比較合適的。當(dāng)K值大于2時(shí),每個(gè)樣本會(huì)有多個(gè)距離,需要取最小的那個(gè)距離作為D(x)。

四、ISODATA算法

???? 放在最后也是最復(fù)雜的就是ISODATA算法。正如之前所述,K-means和K-means++的聚類中心數(shù)K是固定不變的。而ISODATA算法在運(yùn)行過程中能夠根據(jù)各個(gè)類別的實(shí)際情況進(jìn)行兩種操作來調(diào)整聚類中心數(shù)K:(1)分裂操作,對應(yīng)著增加聚類中心數(shù);(2)合并操作,對應(yīng)著減少聚類中心數(shù)。

??? 下面首先給出ISODATA算法的輸入(輸入的數(shù)據(jù)和迭代次數(shù)不再單獨(dú)介紹):

??????[1] 預(yù)期的聚類中心數(shù)目Ko:雖然在ISODATA運(yùn)行過程中聚類中心數(shù)目是可變的,但還是需要由用戶指定一個(gè)參考標(biāo)準(zhǔn)。事實(shí)上,該算法的聚類中心數(shù)目變動(dòng)范圍也由Ko決定。具體地,最終輸出的聚類中心數(shù)目范圍是 [Ko/2,?2Ko]。

??????[2] 每個(gè)類所要求的最少樣本數(shù)目Nmin:用于判斷當(dāng)某個(gè)類別所包含樣本分散程度較大時(shí)是否可以進(jìn)行分裂操作。如果分裂后會(huì)導(dǎo)致某個(gè)子類別所包含樣本數(shù)目小于Nmin,就不會(huì)對該類別進(jìn)行分裂操作。

??????[3] 最大方差Sigma:用于衡量某個(gè)類別中樣本的分散程度。當(dāng)樣本的分散程度超過這個(gè)值時(shí),則有可能進(jìn)行分裂操作(注意同時(shí)需要滿足[2]中所述的條件)。

??????[4] 兩個(gè)類別對應(yīng)聚類中心之間所允許最小距離dmin:如果兩個(gè)類別靠得非常近(即這兩個(gè)類別對應(yīng)聚類中心之間的距離非常?。瑒t需要對這兩個(gè)類別進(jìn)行合并操作。是否進(jìn)行合并的閾值就是由dmin決定。

????? 相信很多人看完上述輸入的介紹后對ISODATA算法的流程已經(jīng)有所猜測了。的確,ISODATA算法的原理非常直觀,不過由于它和其他兩個(gè)方法相比需要額外指定較多的參數(shù),并且某些參數(shù)同樣很難準(zhǔn)確指定出一個(gè)較合理的值,因此ISODATA算法在實(shí)際過程中并沒有K-means++受歡迎。

????? 首先給出ISODATA算法主體部分的描述,如下圖所示:

kmeans聚類改進(jìn),Algorithm,聚類,算法,kmeans

圖4. ISODATA算法的主體部分

???? 上面描述中沒有說明清楚的是第5步中的分裂操作和第6步中的合并操作。下面首先介紹合并操作:

kmeans聚類改進(jìn),Algorithm,聚類,算法,kmeans

圖5. ISODATA算法的合并操作

???? 最后是ISODATA算法中的分裂操作。

kmeans聚類改進(jìn),Algorithm,聚類,算法,kmeans

圖6. ISODATA算法的分裂操作

????? 最后,針對ISODATA算法總結(jié)一下:該算法能夠在聚類過程中根據(jù)各個(gè)類所包含樣本的實(shí)際情況動(dòng)態(tài)調(diào)整聚類中心的數(shù)目。如果某個(gè)類中樣本分散程度較大(通過方差進(jìn)行衡量)并且樣本數(shù)量較大,則對其進(jìn)行分裂操作;如果某兩個(gè)類別靠得比較近(通過聚類中心的距離衡量),則對它們進(jìn)行合并操作。

???????可能沒有表述清楚的地方是ISODATA-分裂操作的第1步和第2步。同樣地以圖三所示數(shù)據(jù)集為例,假設(shè)最初1,2,3,4,5,6,8號(hào)被分到了同一個(gè)類中,執(zhí)行第1步和第2步結(jié)果如下所示:

kmeans聚類改進(jìn),Algorithm,聚類,算法,kmeans

????? 而在正確分類情況下(即1,2,3,4為一類;5,6,7,8為一類),方差為0.33。因此,目前的方差遠(yuǎn)大于理想的方差,ISODATA算法就很有可能對其進(jìn)行分裂操作。

五、聚類算法源代碼

????? 我已經(jīng)將上述三種算法整合成一個(gè)Matlab函數(shù)Clustering.m。讀者可以直接使用該函數(shù)對數(shù)據(jù)集進(jìn)行聚類。由于代碼比較長,而且代碼插件還不怎么會(huì)用,就不在文中介紹了。需要使用的讀者可以點(diǎn)擊下面的鏈接下載使用(歡迎Star和Fork,之后會(huì)不定期補(bǔ)充新的算法和優(yōu)化的):

GitHub - xuyxu/Clustering: Clustering / Subspace Clustering Algorithms on MATLAB

?????使用方式非常簡單,目前支持三種形式的輸入,分別對應(yīng)著上面的三種算法:

???? [centroid, result] =?Clustering(data, ‘kmeans’, k , iteration);

?????[centroid, result] =?Clustering(data, ‘kmeans++’, k , iteration);

?????[centroid, result] =

???Clustering(data, ‘isodata’, desired_k , iteration, minimum_n, maximum_variance, minimum_d);

????? 其中的輸入data是一個(gè)矩陣,每一行代表數(shù)據(jù)集中的一個(gè)樣本。其他輸入的意義與上面的算法描述中一一對應(yīng)。輸出的centroid是聚類中心的位置,result是每個(gè)樣本所對應(yīng)的類別索引。

六、數(shù)據(jù)集測試

????? 最后以一個(gè)簡單的滿足二維高斯分布的數(shù)據(jù)集為例,展示上述三種算法的聚類結(jié)果,如下圖所示。

kmeans聚類改進(jìn),Algorithm,聚類,算法,kmeans

圖7. 一個(gè)簡單數(shù)據(jù)集上三種算法的聚類效果(綠色加號(hào)代表聚類中心位置)

引用參考:

K-means聚類算法的三種改進(jìn)(K-means++,ISODATA,Kernel K-means)介紹與對比https://www.cnblogs.com/yixuan-xu/p/6272208.html文章來源地址http://www.zghlxwxcb.cn/news/detail-817600.html

到了這里,關(guān)于K-means聚類算法的三種改進(jìn)(K-means++,ISODATA,Kernel K-means)介紹與對比的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • K-means++聚類算法(matlab實(shí)現(xiàn))

    K-means++聚類算法(matlab實(shí)現(xiàn))

    K-means++算法:K-means++算法是K-means算法的改進(jìn)版,其在選擇初始質(zhì)心時(shí)采用了一種更加聰明的方法,能夠有效地避免局部最優(yōu)解。具體來說,K-means++算法的初始質(zhì)心是根據(jù)距離數(shù)據(jù)點(diǎn)最遠(yuǎn)的原則來選擇的,這樣可以保證初始質(zhì)心的分布更加廣泛,從而使得算法更容易找到全局最

    2024年02月07日
    瀏覽(26)
  • K-means聚類算法原理及實(shí)現(xiàn)

    K-means聚類算法原理及實(shí)現(xiàn)

    1.1概念 聚類分析,也稱為分割分析或分類分析,可將樣本數(shù)據(jù)分成一個(gè)個(gè)組(即簇)。同一簇中的對象是相似的,不同簇中的對象則明顯不同。 Statistics and Machine Learning Toolbox? 提供了幾種聚類方法和相似性度量(也稱為距離度量)來創(chuàng)建簇。此外,簇計(jì)算可以按照不同的計(jì)

    2024年03月18日
    瀏覽(20)
  • 機(jī)器學(xué)習(xí)之K-means聚類算法

    機(jī)器學(xué)習(xí)之K-means聚類算法

    目錄 K-means聚類算法 算法流程 優(yōu)點(diǎn) 缺點(diǎn) 隨機(jī)點(diǎn)聚類 人臉聚類 旋轉(zhuǎn)物體聚類 K-means聚類算法是一種無監(jiān)督的學(xué)習(xí)方法,通過對樣本數(shù)據(jù)進(jìn)行分組來發(fā)現(xiàn)數(shù)據(jù)內(nèi)在的結(jié)構(gòu)。K-means的基本思想是將n個(gè)實(shí)例分成k個(gè)簇,使得同一簇內(nèi)數(shù)據(jù)相似度高而不同簇之間數(shù)據(jù)相似度低。 K-means的

    2024年02月11日
    瀏覽(28)
  • K-means聚類算法(附Python實(shí)現(xiàn)代碼)

    K-means聚類算法(附Python實(shí)現(xiàn)代碼)

    本文的代碼與數(shù)據(jù)地址已上傳至github:https://github.com/helloWorldchn/MachineLearning 1、基于劃分的聚類 劃分算法的思想是,將給定待挖掘數(shù)據(jù)集中的數(shù)據(jù)對象劃分成K組(k≤N,N代表數(shù)據(jù)集中對象數(shù)目),每一組表示一個(gè)聚類的簇。并且要滿足任何一個(gè)數(shù)據(jù)對象僅可以屬于一個(gè)聚類,

    2024年02月07日
    瀏覽(27)
  • 傳統(tǒng)機(jī)器學(xué)習(xí)(三)聚類算法K-means(一)

    傳統(tǒng)機(jī)器學(xué)習(xí)(三)聚類算法K-means(一)

    K-Means算法是無監(jiān)督的聚類算法,它實(shí)現(xiàn)起來比較簡單,聚類效果也不錯(cuò),因此應(yīng)用很廣泛。K-Means基于歐式距離認(rèn)為兩個(gè)目標(biāo)距離越近,相似度越大。 1.1.1 算法流程 (1)圖a表達(dá)了初始的數(shù)據(jù)集, 假設(shè)k=2; (2)在圖b中,隨機(jī)選擇兩個(gè)k類的對應(yīng)的類別質(zhì)心,即圖中的紅色質(zhì)

    2023年04月15日
    瀏覽(17)
  • K-means聚類算法及Python代碼實(shí)現(xiàn)

    K-means聚類算法及Python代碼實(shí)現(xiàn)

    K-means聚類算法(事先數(shù)據(jù)并沒有類別之分!所有的數(shù)據(jù)都是一樣的) 1、概述 K-means算法是集簡單和經(jīng)典于一身的 基于距離的聚類算法 采用距離作為相似性的評價(jià)指標(biāo),即認(rèn)為兩個(gè)對象的距離越近,其相似度就越大。 該算法認(rèn)為類簇是由距離靠近的對象組成的,因此把得到

    2023年04月24日
    瀏覽(24)
  • 【機(jī)器學(xué)習(xí)】K-means聚類算法:原理、應(yīng)用與優(yōu)化

    【機(jī)器學(xué)習(xí)】K-means聚類算法:原理、應(yīng)用與優(yōu)化

    一、引言 1、簡述聚類分析的重要性及其在機(jī)器學(xué)習(xí)中的應(yīng)用 ??聚類分析,作為機(jī)器學(xué)習(xí)領(lǐng)域中的一種無監(jiān)督學(xué)習(xí)方法,在數(shù)據(jù)探索與知識(shí)發(fā)現(xiàn)過程中扮演著舉足輕重的角色。它能夠在沒有先驗(yàn)知識(shí)或標(biāo)簽信息的情況下,通過挖掘數(shù)據(jù)中的內(nèi)在結(jié)構(gòu)和規(guī)律,將數(shù)據(jù)對象自動(dòng)

    2024年04月13日
    瀏覽(36)
  • K-Means(K-均值)聚類算法理論和實(shí)戰(zhàn)

    K-Means(K-均值)聚類算法理論和實(shí)戰(zhàn)

    目錄 K-Means 算法 K-Means 術(shù)語 K 值如何確定 K-Means 場景 美國總統(tǒng)大選搖爭取擺選民 電商平臺(tái)用戶分層 給亞洲球隊(duì)做聚類 ?編輯 其他場景 K-Means 工作流程 K-Means 開發(fā)流程 K-Means的底層代碼實(shí)現(xiàn) K-Means 的評價(jià)標(biāo)準(zhǔn) 對于 n 個(gè)樣本點(diǎn)來說,根據(jù)距離公式(如歐式距離)去計(jì)?算它們的

    2024年02月11日
    瀏覽(25)
  • K-means聚類算法原理、步驟、評價(jià)指標(biāo)和實(shí)現(xiàn)

    K-means聚類算法原理、步驟、評價(jià)指標(biāo)和實(shí)現(xiàn)

    1、聚類 聚類與分類不同,聚類分析分通過分析大量含有一定規(guī)律但雜亂數(shù)據(jù),得到數(shù)據(jù)間內(nèi)在的邏輯,將雜亂的數(shù)據(jù)按照所得的數(shù)據(jù)規(guī)律劃分成不同的種類。K-measn、DBSCAN和層次是當(dāng)前廣泛使用的三種聚類方法。以下對三種方法進(jìn)行分析,選擇適合的聚類方法。 方法 K-means

    2024年02月07日
    瀏覽(52)
  • 【聚類算法】帶你輕松搞懂K-means聚類(含代碼以及詳細(xì)解釋)

    【聚類算法】帶你輕松搞懂K-means聚類(含代碼以及詳細(xì)解釋)

    聚類是一個(gè)將數(shù)據(jù)集中 在某些方面相似的數(shù)據(jù)成員 進(jìn)行分類組織的過程,聚類就是一種發(fā)現(xiàn)這種內(nèi)在結(jié)構(gòu)的技術(shù),聚類技術(shù)經(jīng)常被稱為 無監(jiān)督學(xué)習(xí) 。 k均值聚類是最著名的劃分聚類算法,由于簡潔和效率使得他成為所有聚類算法中最廣泛使用的。給定一個(gè)數(shù)據(jù)點(diǎn)集合和需要

    2024年02月01日
    瀏覽(23)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包