亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 開發 > 綜合 > 正文

聚類分析: k-means算法

2024-07-21 02:51:39
字體:
來源:轉載
供稿:網友

k-means算法

聚類分析是數據分析中,非常重要的一類課題。他的作用是將大量的無標簽數據通過計算,自動為其標注標簽。眾所周知,這一點是區別于數據分類技術的。而現實的場景中,無標簽的數據顯然多于有標簽數據,因此,我在這里也是先說聚類,后面的博文,再說分類。

聚類的目的,是要將數據歸為不同的類,基本原則是要相近的數據盡量歸為一類,而不同類之間的數據則要盡量有比較大的差別。

說到聚類,當然最先想到的就是k-means算法。它不僅是最簡單的聚類算法,也是最普及且最常用的。k-means算法是一種基于形心的劃分數據的方法。我們給定一個數據集D,以及要劃分的簇數k,就能通過該算法將數據集劃分為k個簇。一般來說,每個數據項只能屬于其中一個簇。具體方法可以這樣描述:

假設數據集在一個m維的歐式空間中,我們初始時,可隨機選擇k個數據項作為這k個簇的形心Ci,i∈{1,2,…k},每個簇心代表的其實是一個簇,也就是一組數據項構成的集合。然后對所有的n個數據項,計算這些數據項與Ci的距離(一般情況下,在歐式空間中,數據項之間的距離用歐式距離表示)。比如對于數據項Dj,j∈{1,…n},它與其中的一個簇心Ci最近,則將Dj歸類為簇Ci.通過上面這一步,我們就初步將D劃分為k個類了?,F在重新計算這k個類的形心。方法是計算類中所有數據項的各個維度的均值。這樣,構成一個新的形心,并且更新這個類的形心。每個類都這樣計算一次,更新形心。對上一步計算得到的新的形心,重復進行第(1),(2)步的工作,直到各個類的形心不再變化為止。

下面,通過一個例子,展示k-means的細節。

我們來處理一個簡單的二維平面上的聚類問題。數據集為:A1(2, 10), A2(2, 5), A3(8, 4), B1(5, 8), B2(7, 5), B3(6, 4), C1(1, 2), C2(4,9),如圖Fig.1:

現在,我們選擇:A1, B1, C1三個點作為初始的簇心,將這個數據集分成三類。

第一步,令所有數據點選擇距離他們最近的簇心,并且執行歸類:歸類的結果如圖Fig.1中虛線所圈出來的那樣:

第二步,更新簇心,重新計算距離,再次執行歸類,結果如圖Fig.2所示,圖中,我用紅色*號表示簇心:

第三步,重復進行前兩步,直到簇心不在變更為止,最終,得到Fig.3中所示的聚類結果,圖中,我用紅色*號表示簇心:

可見,整個算法就是一個迭代的過程。需要注意的是,初始簇心的選擇有時候會影響最終的聚類結果,所以,實際操作中,我們一般會選用不同的數據作為初始簇心,多次執行k-means算法。

由于篇幅限制,詳細的實現代碼我在我的github主頁中給出:kmeans,這里省略。

最后,我們對k-means算法作簡要分析:

時間復雜度:O(nkt),其中,n為數據項個數,k為要聚類成的簇數,t為迭代次數。而通常,k<<n,所以,對于大數據集,k-means算法相對可伸縮,且有效。局限性:k-means算法有其相應的局限性,我們必須明白這些缺點,才能避免不正確的使用: 只能應用于可計算均值的數據,比如對于一些標稱屬性的數據,就不能使用k-means。所以,后來人們設計了k-眾數算法,來解決對于標稱屬性數據的聚類;必須事先給出要生成的簇數k,而實際上我們大多時候并不知道這些數據應該生成的簇數,后來ISODATA算法通過類的自動合并和分裂,得到較為合理的類型數目k;前面已經說過,k-means對于初始點的選擇很重要,不同初始點,會導致不同效果的聚類。為了解決這個問題,k-means++算法應運而生。

k-means++算法

k-means++是k-means的變形,通過小心選擇初始簇心,來獲得較快的收斂速度以及聚類結果的質量,本文中,我們將簡單介紹k-means++. 首先,一定要先理解k-means++的原理。

它是這樣去做的:先隨機選擇一個數據項作為第一個初始的簇心(當然,最終我們要選擇k個),根據這1個簇心,我們通過一系列計算,獲得第2個簇心,再根據這2個簇心,通過計算獲得第3個簇心。。。以此類推,最終,獲得全部的k個簇心,然后,再按照上面k-means的做法,做聚類分析。其中,至于下一個簇心的選擇需要經過怎樣的計算,我們放到后面再說?,F在需要明白的是,通過增加合理計算的方式,我們不再是隨機選取k個簇心作為初始值,而是通過一種迭代算法,合理選擇簇心。

那么究竟怎樣的選擇就是合理的選擇呢?在此我們有這樣一個原則:假設現在已經選擇了r個簇心,要接著選取第r+1個簇心。那么當然是應該選擇距離其簇心較遠的數據點當新的簇心??梢阅X補這樣一個場景:r個簇心,每個數據點都對應著且只對應著一個簇心,這個簇心當然是相對于其他r?1個簇心來說,是距離這個數據點最近的。于是每個點,都與其簇心有條連線,連線的長度就是這個數據點到簇心的距離,我們現在要做的,就是選擇距離其簇心距離較大的那個數據點。

你可能會說,這個道理很簡單,但是應該是選擇距離“最大”的才對,為什么選擇距離“較大”的呢?那是因為這里面可能會存在數據噪聲的問題,也可能由于我們至少第一個簇心的選擇還是隨機的緣故,導致如果這樣每次都“精確”選擇,反而最終的聚類效果不佳。所以,一種比較合理的做法是選擇“較大”,而非“最大”。當然,從這一點,我們也能看出,k-means++即使比傳統的k-means更好,卻依然是一種啟發式的算法,不能說這種做法最終的結果就一定是最優的。

現在的問題就全部集中在如何選擇離簇心距離“較大”的數據點了。假設,現在將所有的數據點與其對應簇心連接,那么會構成n條連線(n是數據項的個數,自己與自己連接的情況,可以看做是構成了一條長度為0的線),我們記這n條連線的長度為Dis1,Dis2,…Disn,然后把這n條連線按隨機的順序,首尾相連,構成一條長度為∑Disi的連線,然后現在隨機拋出一點,落在這條“總線”上,那么顯然,落在距離較長的線上的概率更高一些,如Fig.4所示,假設D1,D2,D3距離其對應簇心的長度分別是1, 2, 3,那當然是落在Dis3上的概率最高了。選擇下一簇心的具體方法操作如下:

對已經選出作為簇心的r個點(r<k),計算數據集中每個數據項應該歸類的簇,以及距離將這n個距離求和,得到sum(Dis_i),然后隨機選取一個小于sum(Dis_i)的值Random令Random依次減去Disi,Random -= Disi,直到Random <= 0為止,此時,Random減去的Disi所對應的數據項就是新的簇心。

綜上,k-means++算法步驟如下:

隨機選擇一個數據項,作為第一個簇心根據選擇下一個簇心的操作方法(上面列出的3步),選擇下一簇心重復步驟2,直到得到全部的k個簇心

k-means++雖然在初始簇心的選擇上比k-means更優,但是依然也有缺陷,比如,下一個簇心的選擇總是依賴于已有的簇心,后來k-means||算法,改進了這一缺點,這里就不再做過多介紹了。

k-means++算法和前面k-means算法的全部代碼以及測試數據我都放在了github上:kmeans,歡迎參考指正。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲国产欧美一区二区三区久久| 欧美xxxwww| 久久精品国产91精品亚洲| 久久99国产综合精品女同| 亚洲欧洲国产一区| 久久韩剧网电视剧| 欧美黄色www| 国产精品爱久久久久久久| 亚洲午夜av久久乱码| 欧美理论电影在线播放| 81精品国产乱码久久久久久| 欧美性高潮在线| 国产久一一精品| 国产狼人综合免费视频| 日韩免费高清在线观看| 97在线观看视频国产| 91在线观看免费网站| 国产精品白丝jk喷水视频一区| 亚洲iv一区二区三区| 日韩视频在线免费观看| www日韩中文字幕在线看| 麻豆一区二区在线观看| 欧美国产日本在线| 亚洲欧洲美洲在线综合| 国产一区视频在线| 中文字幕日韩欧美精品在线观看| 日本中文字幕不卡免费| 亚洲资源在线看| 国产欧美一区二区三区视频| 伊人久久久久久久久久久久久| 日韩av大片在线| 国产精品入口日韩视频大尺度| 久久国产精品久久国产精品| 国产一区二区在线播放| 日韩在线www| 欧美国产日韩二区| 亚洲午夜精品久久久久久久久久久久| 高清一区二区三区日本久| 成人久久18免费网站图片| 69久久夜色精品国产69乱青草| 成人av资源在线播放| 国产成人精品免费视频| 亚洲最大激情中文字幕| 欧美交受高潮1| 久久精品国产久精国产一老狼| 琪琪第一精品导航| 91日本视频在线| 俺去啦;欧美日韩| 亚洲成人免费在线视频| 国产精品久久久999| 亚洲第一男人av| 欧美精品久久一区二区| 精品国产一区二区三区久久| 欧美激情小视频| 欧美乱人伦中文字幕在线| 欧美极品xxxx| 欧美床上激情在线观看| 国产成人免费av电影| 久久精品欧美视频| 亚洲国产精品小视频| 日本中文字幕成人| 欧美午夜美女看片| 国产女精品视频网站免费| 久久精品一偷一偷国产| 成人免费直播live| 中文字幕亚洲天堂| 欧美性生交大片免网| 91久久国产婷婷一区二区| 欧美电影免费观看电视剧大全| 色综合男人天堂| 88国产精品欧美一区二区三区| 久久久精品国产亚洲| 久久久久在线观看| 国产精品ⅴa在线观看h| 亚洲aⅴ日韩av电影在线观看| 亚洲第一精品夜夜躁人人爽| 成人h猎奇视频网站| 欧美疯狂xxxx大交乱88av| 欧美大奶子在线| 国产成人精品电影久久久| 日韩欧美国产骚| 日韩精品久久久久久福利| 中文字幕日韩在线播放| 在线观看欧美日韩| 国产精品丝袜视频| 亚洲女性裸体视频| 午夜精品免费视频| 久久久精品美女| 91在线视频九色| 成人免费视频网址| 欧美成人免费在线观看| 成人在线精品视频| 欧美午夜精品伦理| 欧美做爰性生交视频| 亚洲国产精品久久久久秋霞不卡| 欧美激情综合色综合啪啪五月| 最近2019好看的中文字幕免费| 欧美激情视频播放| 日本精品久久久| 久久夜色精品亚洲噜噜国产mv| 欧美夫妻性视频| 国产情人节一区| 国产免费久久av| 欧美性感美女h网站在线观看免费| 午夜精品一区二区三区在线视| 国产精品十八以下禁看| 欧美老少配视频| 国产精品白丝jk喷水视频一区| 亚洲欧洲av一区二区| 成人精品久久一区二区三区| 国产精品伦子伦免费视频| 热99精品只有里视频精品| 欧美视频二区36p| 久操成人在线视频| 日韩av日韩在线观看| 欧美限制级电影在线观看| 亚洲精品99久久久久中文字幕| 亚洲成人中文字幕| 亚洲电影av在线| 中文欧美日本在线资源| 欧美做爰性生交视频| 国产中文字幕亚洲| 亚洲色无码播放| 综合欧美国产视频二区| 欧美日韩在线视频一区二区| 亚洲电影免费观看高清| 日韩高清人体午夜| 91国产在线精品| 在线观看日韩欧美| 九九久久精品一区| 日本久久亚洲电影| 国产精品天天狠天天看| 国产美女精品免费电影| 亚洲国产精品久久久久| 日本免费一区二区三区视频观看| 欧美精品在线播放| 在线观看国产成人av片| 久久亚洲精品成人| 日韩在线激情视频| 精品视频偷偷看在线观看| 久久伊人色综合| 亚洲自拍在线观看| 国模私拍一区二区三区| 亚洲福利视频专区| 久久综合免费视频影院| 久久久精品在线观看| 日韩欧美一区二区三区久久| 日av在线播放中文不卡| 久久久www成人免费精品张筱雨| 亚洲午夜av电影| 国产情人节一区| 国产亚洲免费的视频看| 91精品国产综合久久久久久蜜臀| 欧美视频一二三| 久久国产精品久久久| 日本最新高清不卡中文字幕| 国产专区欧美专区| 日韩av在线资源| 狠狠久久五月精品中文字幕| 日韩精品在线视频| 久久精品国产91精品亚洲| 性欧美视频videos6一9| 亚洲网站视频福利| 日韩福利视频在线观看|