【說在前面】本人博客新手一枚,象牙塔的老白,職業(yè)場(chǎng)的小白。以下內(nèi)容僅為個(gè)人見解,歡迎批評(píng)指正,不喜勿噴![認(rèn)真看圖][認(rèn)真看圖]
【補(bǔ)充說明】聚類算法可以作為獨(dú)立方法將數(shù)據(jù)聚成不同簇,也可以作為數(shù)據(jù)挖掘任務(wù)(例如分類、關(guān)聯(lián)規(guī)則等)的預(yù)處理!
【補(bǔ)充說明】聚類算法與分類算法的主要區(qū)別在于訓(xùn)練時(shí)的樣本有無標(biāo)簽,聚類算法無監(jiān)督學(xué)習(xí),分類算法有監(jiān)督學(xué)習(xí)!
【再說一句】本文主要介紹機(jī)器學(xué)習(xí)中聚類算法的演變路徑,和往常一樣,不會(huì)詳細(xì)介紹各算法的具體實(shí)現(xiàn),望理解!
一、相似性衡量方法1. 基于距離例如余弦相似度等,主要優(yōu)勢(shì)在于不受原線性變換的影響,可以輕松地轉(zhuǎn)換為距離,但其運(yùn)算速度相對(duì)較慢。
二、基于劃分的聚類1. K-Means聚類主要步驟如下:
(1) 確定要聚類的數(shù)量K,并隨機(jī)初始化K個(gè)簇的中心點(diǎn)。
(2)將每個(gè)樣本分配到與其距離最近的中心點(diǎn)所在的簇(這里采用歐氏距離)。
(3)計(jì)算每一個(gè)簇內(nèi)所有樣本點(diǎn)的平均值,作為該簇的新中心點(diǎn)。
迭代重復(fù)以上這些步驟,直到各簇中心點(diǎn)在迭代過程中變化不大(即小于設(shè)定的閾值)。
K-Means聚類的優(yōu)點(diǎn):
K-Means聚類的缺點(diǎn):
例如k-means++、 intelligent k-means、genetic k-means、 CLARANS 等。 這里以常見的k-means++為例,進(jìn)行介紹。
k-means++按照如下的思想選取K個(gè)聚類中心:
例如k-medoids、k-medians等。這里以常見的k-medians為例,進(jìn)行介紹。
k-medians對(duì)于中心點(diǎn)的選取方式是中位值。原因在于,噪聲和離群點(diǎn)對(duì)中位值的變化影響不大。但是需要排序,速度較慢。
5. K-Means聚類變體:考慮到 k-means不適用于類別型數(shù)據(jù)例如k-modes等。這里以常見的k-modes為例,進(jìn)行介紹。
k-modes算法采用差異度來代替k-means算法中的距離。k-modes算法中差異度越小,則表示距離越小。
6. K-Means聚類變體:考慮到k-means不能解決非凸數(shù)據(jù)例如kernel k-means、譜聚類等。這里以常見的kernel k-means為例,進(jìn)行介紹。
kernel k-means通過一個(gè)非線性映射,將輸入空間中的數(shù)據(jù)點(diǎn)映射到一個(gè)高維特征空間中,使得樣本在核空間線性可分,在特征空間聚類。
值得一提的是,譜聚類算法是建立在圖論中的譜圖理論基礎(chǔ)上,其本質(zhì)是將聚類問題轉(zhuǎn)化為圖的最優(yōu)劃分問題,是一種點(diǎn)對(duì)聚類算法。
三、基于密度的聚類1. Mean-Shift聚類均值漂移聚類是基于滑動(dòng)窗口的算法,尋找數(shù)據(jù)點(diǎn)的密集區(qū)域。類似爬山,每一次迭代都向密度更高的區(qū)域移動(dòng),直到收斂。
主要步驟如下:
(1)確定滑動(dòng)窗口半徑r,以隨機(jī)選取的中心點(diǎn)C、半徑為r的圓形滑動(dòng)窗口開始滑動(dòng)。
(2)每一次滑動(dòng)到新區(qū)域,計(jì)算窗口內(nèi)的均值作為中心點(diǎn),窗口內(nèi)的點(diǎn)數(shù)量作為密度。在每一次移動(dòng)中,窗口會(huì)想密度更高的區(qū)域移動(dòng)。
(3)移動(dòng)窗口,直到窗口內(nèi)的密度不再增加為止。
其中,步驟1到3會(huì)產(chǎn)生很多個(gè)滑動(dòng)窗口,當(dāng)多個(gè)滑動(dòng)窗口重疊時(shí),保留包含最多點(diǎn)的窗口,然后根據(jù)數(shù)據(jù)點(diǎn)所在的滑動(dòng)窗口進(jìn)行聚類。
Mean-Shift聚類的優(yōu)點(diǎn):
Mean-Shift聚類的缺點(diǎn):
DBSCAN的聚類定義很簡(jiǎn)單,由密度可達(dá)關(guān)系導(dǎo)出的最大密度相連的樣本集合,即為最終聚類的一個(gè)簇。
主要步驟如下:
(1)首先任意選擇一個(gè)沒有類別的核心對(duì)象作為種子,然后找到所有這個(gè)核心對(duì)象能夠密度可達(dá)的樣本集合,即為一個(gè)聚類簇。
(2)接著繼續(xù)選擇另一個(gè)沒有類別的核心對(duì)象去尋找密度可達(dá)的樣本集合,這樣就得到另一個(gè)聚類簇。
一直運(yùn)行到所有核心對(duì)象都有類別為止。
DBSCAN聚類的優(yōu)點(diǎn):
DBSCAN聚類的缺點(diǎn):
OPTICS聚類通過優(yōu)先對(duì)高密度進(jìn)行搜索,然后根據(jù)高密度的特點(diǎn)設(shè)置參數(shù),改善了DBSCAN的不足。
當(dāng)然還有其他算法,例如DENCLUE聚類等。
四、基于概率模型的聚類1. 用高斯混合模型(GMM)的最大期望(EM)聚類GMM聚類采用概率模型來表達(dá)原型,即通過統(tǒng)計(jì)得到每個(gè)樣本點(diǎn)屬于各個(gè)類的概率,而不是判定它完全屬于一個(gè)類,也會(huì)被稱為軟聚類。
主要步驟如下:
(1)選擇簇的數(shù)量,并隨機(jī)初始化每個(gè)簇的高斯分布參數(shù)(即均值和方差)。
(2)給定每個(gè)簇的高斯分布,計(jì)算每個(gè)數(shù)據(jù)點(diǎn)屬于每個(gè)簇的概率。一個(gè)點(diǎn)越靠近高斯分布的中心就越可能屬于該簇。
(3)計(jì)算高斯分布參數(shù),使概率最大化(EM最大期望),可用數(shù)據(jù)點(diǎn)概率的加權(quán)計(jì)算這些新的參數(shù),權(quán)重就是數(shù)據(jù)點(diǎn)屬于該簇的概率。
重復(fù)迭代步驟2和3,直到迭代中的變化不大。
GMM聚類的優(yōu)點(diǎn):
GMM聚類的缺點(diǎn):
例如基于神經(jīng)網(wǎng)絡(luò)模型的聚類SOM、基于統(tǒng)計(jì)學(xué)的聚類COBWeb等。
五、基于層次的聚類對(duì)給定的數(shù)據(jù)集進(jìn)行層次似的分解,直到某種條件滿足為止。具體又可分為“自底向上”和“自頂向下”兩種方案。
1. AGNES聚類是一種自底向上聚合策略的層次聚類算法。
主要步驟如下:
(1)先將數(shù)據(jù)集中的每個(gè)樣本看做是一個(gè)初始聚類簇。
(2)然后在算法運(yùn)行的每一步中,找出距離最近的兩個(gè)聚類簇進(jìn)行合并。該過程不斷重復(fù),直至達(dá)到預(yù)設(shè)的聚類簇個(gè)數(shù)。
其中,如何計(jì)算簇之間的距離,并進(jìn)行合并:
AGNES聚類的優(yōu)點(diǎn):
AGNES聚類的缺點(diǎn):
BIRCH算法是個(gè)樹形結(jié)構(gòu),樹的每一個(gè)節(jié)點(diǎn)是由若干個(gè)聚類特征CF組成。BIRCH算法比較適合于數(shù)據(jù)量大,類別數(shù)K也比較多的情況。
對(duì)于CF Tree,一般有幾個(gè)重要參數(shù):
BIRCH聚類的優(yōu)點(diǎn):
BIRCH聚類的缺點(diǎn):
例如Diana、ROCK、CURE、CAMELEON等。
六、基于網(wǎng)格的聚類核心原理就是:
(1)將數(shù)據(jù)空間劃分為網(wǎng)格單元,將數(shù)據(jù)對(duì)象集映射到網(wǎng)格單元中,并計(jì)算每個(gè)單元的密度。
(2)根據(jù)預(yù)設(shè)的閾值判斷每個(gè)網(wǎng)格單元是否為高密度單元,由鄰近的稠密單元組形成”類“。
網(wǎng)格聚類的優(yōu)點(diǎn):
網(wǎng)格聚類的缺點(diǎn):
STING、CLIQUE、WaveCluster等是該類方法中的代表性算法。以下是CLIQUE的例子:
例如基于約束的聚類(COD)、基于圖網(wǎng)絡(luò)的聚類(圖團(tuán)體檢測(cè))等。
八、聚類算法的性能度量大佬對(duì)常用的聚類算法從可伸縮性、適合的數(shù)據(jù)類型、高維性、異常數(shù)據(jù)的抗干擾度、聚類形狀和算法效率6個(gè)方面進(jìn)行了綜合性能評(píng)價(jià)。
還有一些對(duì)聚類的評(píng)測(cè)指標(biāo),這里不打算展開介紹了。個(gè)人感覺通過聚類來輔助具體業(yè)務(wù)場(chǎng)景的分析會(huì)比較重要,就像開頭說的那樣,聚類算法可以作為獨(dú)立方法將數(shù)據(jù)聚成不同簇,也可以作為數(shù)據(jù)挖掘任務(wù)(例如分類、關(guān)聯(lián)規(guī)則等)的預(yù)處理。這里要提一嘴的是,很多聚類算法都已經(jīng)被封裝在sklearn中,方便調(diào)用。
當(dāng)然,聚類算法有很多的應(yīng)用場(chǎng)景,例如目標(biāo)用戶群體分類、異常值檢測(cè)等。說到這里,我接著想寫一個(gè)“異常檢測(cè)”專題了。
聯(lián)系客服