《機(jī)器學(xué)習(xí)-Python實(shí)戰(zhàn)(微課版)》課件 第十章 聚類_第1頁(yè)
《機(jī)器學(xué)習(xí)-Python實(shí)戰(zhàn)(微課版)》課件 第十章 聚類_第2頁(yè)
《機(jī)器學(xué)習(xí)-Python實(shí)戰(zhàn)(微課版)》課件 第十章 聚類_第3頁(yè)
《機(jī)器學(xué)習(xí)-Python實(shí)戰(zhàn)(微課版)》課件 第十章 聚類_第4頁(yè)
《機(jī)器學(xué)習(xí)-Python實(shí)戰(zhàn)(微課版)》課件 第十章 聚類_第5頁(yè)
已閱讀5頁(yè),還剩77頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

第十章聚類學(xué)習(xí)目標(biāo)通過本章學(xué)習(xí)可以:掌握K-Means聚類過程和原理。掌握層次聚類的過程和原理。掌握密度聚類的過程和原理。掌握譜聚類的過程和原理。1.無監(jiān)督學(xué)習(xí)2.聚類算法3.

K-Means聚類4.

層次聚類5.密度聚類算法引入我們通常講,物以類聚,人以群分!其實(shí)說的就是要依據(jù)物和人的關(guān)系進(jìn)行區(qū)分。而關(guān)系在實(shí)際應(yīng)用場(chǎng)景下,又分為內(nèi)部相似性和外部關(guān)系。前者是觀察的對(duì)象或物體本身比較相似,劃分為一類,比如橘子和柚子都屬于水果;后者是指兩種物體經(jīng)常同時(shí)出現(xiàn),比如牛奶和面包等。而這些就是我們接下來要學(xué)習(xí)的無監(jiān)督學(xué)習(xí)。無監(jiān)督學(xué)習(xí)概念無監(jiān)督學(xué)習(xí):是指在標(biāo)注的數(shù)據(jù)中,根據(jù)數(shù)據(jù)之間本身的屬性特征和關(guān)聯(lián)性對(duì)數(shù)據(jù)進(jìn)行區(qū)分,相似相近或關(guān)聯(lián)性強(qiáng)的數(shù)據(jù)放在一起,而不相似不相近、關(guān)聯(lián)性不強(qiáng)的數(shù)據(jù)不放在一起。無監(jiān)督學(xué)習(xí)的本質(zhì)是:利用無標(biāo)簽的數(shù)據(jù)學(xué)習(xí)數(shù)據(jù)的分布或數(shù)據(jù)與數(shù)據(jù)之間的關(guān)系。無監(jiān)督學(xué)習(xí)最常應(yīng)用的場(chǎng)景是部分降維算法、聚類算法和關(guān)聯(lián)算法。無監(jiān)督學(xué)習(xí)導(dǎo)入有監(jiān)督學(xué)習(xí)與無監(jiān)督學(xué)習(xí)的區(qū)別有監(jiān)督學(xué)習(xí)中,如分類問題,要求樣本必須有明確的類別信息,其建立的前提是所有待分類項(xiàng)都有一個(gè)類別與之對(duì)應(yīng)。但在處理實(shí)際問題的過程中,獲取到的數(shù)據(jù)記錄可能并沒有進(jìn)行標(biāo)注,尤其是處理海量數(shù)據(jù)時(shí),如果通過預(yù)處理對(duì)數(shù)據(jù)進(jìn)行打標(biāo),以滿足分類算法的要求,代價(jià)非常大。有監(jiān)督學(xué)習(xí)中最常見的是分類問題,而無監(jiān)督學(xué)習(xí)中最常見的是聚類問題,聚類問題不依賴預(yù)定義的類和類標(biāo)號(hào)的訓(xùn)練實(shí)例。關(guān)注事物本身的特征分析。比如電商對(duì)用戶信息和購(gòu)買行為數(shù)據(jù)進(jìn)行聚類分析,目的是找到大量級(jí)的且有一定相似度的客戶群,從而實(shí)現(xiàn)用戶畫像,接著針對(duì)該用戶群共有的行為特征投放廣告和其他營(yíng)銷活動(dòng)。1.無監(jiān)督學(xué)習(xí)2.聚類算法3.

K-Means聚類4.

層次聚類5.密度聚類算法聚類分析概念聚類分析是分析研究對(duì)象如何按照多個(gè)方面的特征進(jìn)行綜合分類的一種多元統(tǒng)計(jì)方法,它是根據(jù)物以類聚的思想將相似的樣本歸為一類。把對(duì)象分為不同的類別,類別是依據(jù)數(shù)據(jù)的特征確定的。把相似的東西放在一起,類別內(nèi)部的差異盡可能小,類別之間的差異盡可能的大。作用作為單獨(dú)過程,用于對(duì)數(shù)據(jù)進(jìn)行打標(biāo),即數(shù)據(jù)畫像。作為分類等其他學(xué)習(xí)任務(wù)的前驅(qū)過程,如聚類算法可以作為一些監(jiān)督算法的前驅(qū)過程。聚類分析的作用如下兩圖,有什么相同與不同之處?聚類分析兩個(gè)基本問題-性能度量性能度量:評(píng)價(jià)聚類結(jié)果的好壞程度。聚類性能度量一般分兩類:外部指標(biāo):將聚類結(jié)果與某個(gè)“參考模型”進(jìn)行比較,如依據(jù)業(yè)務(wù)專家給出的劃分結(jié)果的聚類結(jié)果進(jìn)行評(píng)價(jià)。內(nèi)部指標(biāo):直接考察聚類結(jié)果不利用任何參考模型。聚類分析兩個(gè)基本問題-距離計(jì)算常用的距離度量方法包括:歐幾里得距離(簡(jiǎn)稱歐氏距離)和余弦相似度,兩者都是評(píng)定個(gè)體間差異的大小的。歐氏距離會(huì)受指標(biāo)不同單位刻度影響,需要先對(duì)數(shù)據(jù)進(jìn)行標(biāo)準(zhǔn)化,在聚類問題中,如果兩個(gè)樣本點(diǎn)的歐氏距離越大,表示兩者差異越大。如下表示兩個(gè)??維的樣本點(diǎn)

,

之間的歐氏距離

:余弦相似度不會(huì)受指標(biāo)刻度的影響,余弦值落于區(qū)間[-1,1],值越大,差異越小。如

表示樣本點(diǎn)

的余弦相似度,此時(shí)將樣本點(diǎn)看作??維向量處理。聚類算法應(yīng)用場(chǎng)景-行業(yè)(1)離群點(diǎn)檢測(cè)離群點(diǎn)檢測(cè)是數(shù)據(jù)挖掘中重要應(yīng)用,任務(wù)就是發(fā)現(xiàn)與大部分觀察對(duì)象顯著不同的對(duì)象,很多的數(shù)據(jù)挖掘方法會(huì)將這種差異信息視作噪聲進(jìn)行預(yù)處理,但也有的一些應(yīng)用場(chǎng)景中,離群點(diǎn)本身攜帶有重要的異常信息,是需要被關(guān)注和研究的。離群點(diǎn)檢測(cè)已經(jīng)被廣泛應(yīng)用于電信、信用卡詐騙檢測(cè),貸款審批,電子商務(wù),網(wǎng)絡(luò)入侵和天氣預(yù)報(bào)等領(lǐng)域,甚至可以利用離群點(diǎn)檢測(cè)分析運(yùn)動(dòng)員的統(tǒng)計(jì)數(shù)據(jù),以發(fā)現(xiàn)異常運(yùn)動(dòng)員。應(yīng)用方式:利用聚類算法,找到遠(yuǎn)離其他簇的小簇;首先聚類所有對(duì)象,然后評(píng)估對(duì)象屬于簇的程度,對(duì)不同距離的點(diǎn)進(jìn)行打分。聚類算法應(yīng)用場(chǎng)景-行業(yè)(2)用戶畫像構(gòu)建方面:根據(jù)客戶數(shù)據(jù),將相似性較高的客戶聚為一類,打標(biāo)簽,進(jìn)行客戶類別細(xì)分。業(yè)務(wù)推薦和精準(zhǔn)營(yíng)銷方面:通過構(gòu)建用戶畫像進(jìn)行業(yè)務(wù)推薦和精準(zhǔn)營(yíng)銷。常用聚類算法介紹基于原型聚類(partitioningmethods)K-Means算法,K-Mediods算法基于層次聚類(hierarchicalmethods)HierarchicalClustering算法、BIRCH算法基于密度聚類(density-basedmethods)DBSCAN算法1.無監(jiān)督學(xué)習(xí)2.聚類算法3.K-Means聚類4.

層次聚類5.密度聚類算法基于原型聚類“原型”是指樣本空間中具有代表性的點(diǎn)。原型聚類假設(shè)聚類結(jié)構(gòu)可以通過一組原型刻畫,這一方法在實(shí)際聚類任務(wù)中最為常用,理解起來也較簡(jiǎn)單;通常算法先對(duì)原型進(jìn)行初始化,然后對(duì)原型進(jìn)行迭代更新求解。采用不同的原型表示,不同的求解方式,即會(huì)產(chǎn)生不同的聚類算法。最經(jīng)典的原型聚類算法即:K-Means聚類算法:基于各個(gè)樣本點(diǎn)與各個(gè)聚集簇的中心點(diǎn)距離遠(yuǎn)近,進(jìn)行劃分的聚類算法。K-Mediods算法:在K-Means基礎(chǔ)上改進(jìn)的算法。K-Means聚類算法算法思想輸入聚類個(gè)數(shù)??,以及包含??個(gè)數(shù)據(jù)對(duì)象的數(shù)據(jù)集,輸出標(biāo)準(zhǔn)的k個(gè)聚類的一種算法。然后將??個(gè)數(shù)據(jù)對(duì)象劃分為??個(gè)聚類,而最終所獲得的聚類滿足:(1)同一聚類中的對(duì)象相似度較高;(2)而不同聚類中的對(duì)象相似度較小。K-Means聚類算法步驟執(zhí)行步驟1)選取??個(gè)對(duì)象作為初始中心(叫質(zhì)心),作為聚類中心;2)對(duì)每個(gè)樣本數(shù)據(jù),計(jì)算它們與中心的歐氏距離,按距離最近的準(zhǔn)則將它們分到距離最近的聚類中心所對(duì)應(yīng)的類;3)更新聚類中心:將每個(gè)類別中所有對(duì)象所對(duì)應(yīng)的均值作為該類別的新中心(新的質(zhì)心),計(jì)算目標(biāo)函數(shù);4)判斷聚類中心和目標(biāo)函數(shù)的值是否改變,若不變,則輸出結(jié)果,若改變,則返回2)。??1=(2,10),??2=(2,5),??3=(8,4),??4=(5,8),??5=(7,5),??6=(6,4),??7=(1,2),??8=(4,9).K-Means聚類-過程舉例(1)K-Means聚類-過程舉例(2)K-Means聚類-K如何確定K-Means算法首先選擇??個(gè)初始質(zhì)心,其中??是用戶指定的參數(shù),即所期望的簇的個(gè)數(shù)。這樣做的前提是已經(jīng)知道數(shù)據(jù)集中包含多少個(gè)簇,但很多情況下,我們并不知道數(shù)據(jù)的分布情況。如何有效地確定??值,提供以下幾種方法:從實(shí)際問題出發(fā),人工指定比較合理的??值,通過多次隨機(jī)初始化聚類中心選取比較滿意的結(jié)果均方根:假設(shè)我們有??個(gè)樣本,該方法認(rèn)為??=枚舉法:用不同的??值進(jìn)行聚類分別計(jì)算類內(nèi)距離均值和類間距離均值之比,選擇最小的那個(gè)??值對(duì)不同??值都產(chǎn)生2次聚類,選擇兩次聚類結(jié)果最相似的??值手肘法(Elbow)、層次聚類法等。K-Means聚類的優(yōu)缺點(diǎn)優(yōu)點(diǎn)簡(jiǎn)單、易于理解、運(yùn)算速度快;對(duì)處理大數(shù)據(jù)集,該算法保持可伸縮性和高效性;當(dāng)簇接近高斯分布時(shí),它的效果較好。缺點(diǎn)在K-Means算法是局部最優(yōu)的,容易受到初始質(zhì)心的影響;在K-Means算法中K值需要事先給定的,有時(shí)候K值的選定非常難以估計(jì);在簇的平均值可被定義的情況下才能使用,只能應(yīng)用連續(xù)型數(shù)據(jù);該算法需要不斷地進(jìn)行樣本分類調(diào)整,不斷地計(jì)算調(diào)整后的新的聚類中心,因此當(dāng)數(shù)據(jù)量非常大時(shí),算法的性能(時(shí)間和計(jì)算資源)開銷是非常大的;對(duì)噪聲和孤立點(diǎn)數(shù)據(jù)敏感。K-Means聚類-細(xì)節(jié)解析初始簇心的選擇有時(shí)候會(huì)影響最終的聚類結(jié)果,實(shí)際操作中,我們一般會(huì)選用不同的數(shù)據(jù)作為初始簇心,多次執(zhí)行K-Means算法;新質(zhì)心不一定是實(shí)際的一個(gè)數(shù)據(jù)點(diǎn)。K-Means算法超參數(shù)????是用戶指定的參數(shù),即所期望的簇的個(gè)數(shù)。??指定的前提是已知數(shù)據(jù)集中包含多少個(gè)簇,但很多情況下,并不知道數(shù)據(jù)的分布情況,需要憑借業(yè)務(wù)專家的經(jīng)驗(yàn);常見做法是多嘗試幾個(gè)??值,看分成幾類的結(jié)果更好解釋,更符合分析目的等;或者可以把各種??值算出的SSE做比較,取最小的SSE的??值。K-Means算法會(huì)不會(huì)陷入一直選質(zhì)心的過程,永遠(yuǎn)停不下來?不會(huì)。數(shù)學(xué)證明一定會(huì)收斂,目標(biāo)函數(shù)SSE是可收斂的函數(shù),但數(shù)據(jù)量大時(shí),收斂時(shí)間可能較長(zhǎng)。K-Means算法的使用方法(1)利用python調(diào)用庫(kù)sklearn中的cluster子模塊,該模板包含常用聚類算法模型,如:K-Means,DBSCAN等;sklearn的K-Means方法默認(rèn)用歐氏距離,雖然還有余弦相似度、曼哈頓距離等多種方法,但沒有設(shè)定計(jì)算距離方法的參數(shù)。K-Means算法的使用方法(2)利用Python中庫(kù)sklearn中的sklearn.cluster.KMeans方法KMeans(n_clusters=8,init=’k_means++’,n_init=10,max_iter=300,tol=0.0001,precompute_distances=’auto’,verbose=0,random_state=None,copy_x=True,n_jobs=1,algorithm=’auto’)參數(shù)說明n_clusters:用于指定聚類中心的個(gè)數(shù),一般調(diào)用時(shí)只需給出n_clusters的值,如指定??為10,KMeans(n_clusters=10)。init:初始聚類中心的初始化方法,其默認(rèn)選擇的是K-Means++。max_iter:最大的迭代次數(shù),默認(rèn)300。K-Means算法優(yōu)化K-Means算法的結(jié)果非常依賴于初始隨機(jī)選擇的聚類中心的位置,可以通過多次執(zhí)行該算法來減少初始中心敏感的影響??刹捎玫膬?yōu)化方法有:1.選擇彼此距離盡可能遠(yuǎn)的K個(gè)點(diǎn)作為初始簇中心。

2.先使用canopy算法進(jìn)行初始聚類,得到K個(gè)canopy中心,以此或距離每個(gè)canopy中心最近的點(diǎn)作為初始簇中心。K-Means應(yīng)用示例隨機(jī)創(chuàng)建一些二維數(shù)據(jù)作為訓(xùn)練集,選擇二維特征數(shù)據(jù),代碼如下:importnumpyasnpimportmatplotlib.pyplotasplt%matplotlibinlinefromsklearn.datasets.samples_generatorimportK-Means應(yīng)用示例#X為樣本特征,Y為樣本簇類別,共1000個(gè)樣本,每個(gè)樣本2個(gè)特征,共4個(gè)簇,簇中心在[-1,-1],[0,0],[1,1],[2,2],簇方差分別為[0.4,0.2,0.2]X,y=make_blobs(n_samples=1000,n_features=2,centers=[[-1,-1],[0,0],[1,1],[2,2]],cluster_std=[0.4,0.2,0.2,0.2],random_state=9)plt.scatter(X[:,0],X[:,1],marker='o')plt.show()K-Means應(yīng)用示例

創(chuàng)建的數(shù)據(jù)如下:K-Means應(yīng)用示例

現(xiàn)在用K-Means聚類方法來做聚類,首先選擇k=2,代碼如下:fromsklearn.clusterimportKMeansy_pred=KMeans(n_clusters=2,random_state=9).fit_predict(X)plt.scatter(X[:,0],X[:,1],c=y_pred)plt.show()K-Means應(yīng)用示例

效果圖輸出如圖:K-Means應(yīng)用示例

用Calinski-HarabaszIndex評(píng)估的聚類分?jǐn)?shù):fromsklearnimportmetricsmetrics.calinski_harabaz_score(X,y_pred)輸出如下:3116.1706763322227K-Means應(yīng)用示例

k=3的聚類效果,代碼如下:fromsklearn.clusterimportKMeansy_pred=KMeans(n_clusters=3,random_state=9).fit_predict(X)plt.scatter(X[:,0],X[:,1],c=y_pred)plt.show()K-Means應(yīng)用示例

效果圖輸出如圖:K-Means應(yīng)用示例

用Calinski-HarabazIndex評(píng)估的k=3時(shí)候聚類分?jǐn)?shù):

metrics.calinski_harabaz_score(X,y_pred)輸出如下:

2931.625030199556可見此時(shí)k=3的聚類分?jǐn)?shù)比k=2還差K-Means應(yīng)用示例

k=4時(shí)候的聚類效果:fromsklearn.clusterimportKMeansy_pred=KMeans(n_clusters=4,random_state=9).fit_predict(X)plt.scatter(X[:,0],X[:,1],c=y_pred)plt.show()K-Means應(yīng)用示例

效果圖輸出如圖:K-Means應(yīng)用示例

用Calinski-HarabaszIndex評(píng)估的k=4時(shí)候聚類分?jǐn)?shù):

metrics.calinski_harabaz_score(X,y_pred)輸出如下:

5924.050613480169

可見k=4的聚類分?jǐn)?shù)比k=2和k=3都要高,這也符合預(yù)期,隨機(jī)數(shù)據(jù)集也就是4個(gè)簇K-Means應(yīng)用示例

用MiniBatchKMeans的效果,將batchsize設(shè)置為200.由于的4個(gè)簇都是凸的,所以其實(shí)batchsize的值只要不是非常的小,對(duì)聚類的效果影響不大。forindex,kinenumerate((2,3,4,5)):plt.subplot(2,2,index+1)y_pred=MiniBatchKMeans(n_clusters=k,batch_size=200,random_state=9).fit_predict(X)K-Means應(yīng)用示例

score=metrics.calinski_harabaz_score(X,y_pred)plt.scatter(X[:,0],X[:,1],c=y_pred)plt.text(.99,.01,('k=%d,score:%.2f'%(k,score)),transform=plt.gca().transAxes,size=10,horizontalalignment='right')plt.show()K-Means應(yīng)用示例

效果圖輸出如圖:K-Means應(yīng)用示例

可見:使用MiniBatchKMeans的聚類效果也不錯(cuò)。當(dāng)然由于使用MiniBatch的原因,同樣是k=4最優(yōu),KMeans類的Calinski-HarabaszIndex分?jǐn)?shù)為5924.05,而MiniBatchKMeans的分?jǐn)?shù)稍微低一些,為5921.45,這個(gè)差異損耗并不大。1.無監(jiān)督學(xué)習(xí)2.聚類算法3.

K-Means聚類4.

層次聚類5.密度聚類算法層次聚類層次聚類法核心思想是在不同層次對(duì)數(shù)據(jù)集進(jìn)行劃分,從而形成樹形的聚類結(jié)構(gòu),數(shù)據(jù)集的劃分可采用“自下向上”的聚合策略,也可以采用“自頂向下”的分拆策略。聚類的層次被表示成樹形圖。樹根擁有所有樣本的唯一聚類,葉子是僅有一個(gè)樣本的聚類。凝聚層次聚類

AGNES算法(AGglomerativeNESting)采用自底向上的策略。最初將每個(gè)對(duì)象作為一個(gè)簇,然后這些簇根據(jù)某些準(zhǔn)則被一步一步合并,兩個(gè)簇間的距離可以由這兩個(gè)不同簇中距離最近的數(shù)據(jù)點(diǎn)的相似度來確定。聚類的合并過程反復(fù)進(jìn)行直到所有的對(duì)象滿足簇?cái)?shù)目。分裂的層次聚類

DIANA算法(DIvisiveANALysis)采用自頂向下的策略。首先將所有對(duì)象置于一個(gè)簇中,然后按照某種既定的規(guī)則逐漸細(xì)分為越來越小的簇(比如最大的歐式距離),直到達(dá)到某個(gè)終結(jié)條件(簇?cái)?shù)目或者簇距離達(dá)到閾值)。凝聚層次聚類的過程和原理(1)1)計(jì)算數(shù)據(jù)集的相似矩陣;2)假設(shè)每個(gè)樣本點(diǎn)為一個(gè)簇類;3)循環(huán):合并相似度最高的兩個(gè)簇類,然后更新相似矩陣;4)當(dāng)簇類個(gè)數(shù)為1時(shí),循環(huán)終止。凝聚層次聚類的過程和原理(2)假設(shè)我們有6個(gè)樣本點(diǎn){A,B,C,D,E,F}第一步:我們假設(shè)每個(gè)樣本點(diǎn)都為一個(gè)簇類,計(jì)算每個(gè)簇類間的相似度,得到相似矩陣;第二步:若B和C的相似度最高,合并簇類B和C為一個(gè)簇類?,F(xiàn)在我們還有五個(gè)簇類,分別為A,BC,D,E,F(xiàn)。第三步:更新簇類間的相似矩陣,相似矩陣的大小為5行5列;若簇類BC和D的相似度最高,合并簇類BC和D為一個(gè)簇類?,F(xiàn)在我們還有四個(gè)簇類,分別為A,BCD,E,F(xiàn)。凝聚層次聚類的過程和原理(3)第四步:更新簇類間的相似矩陣,相似矩陣的大小為4行4列;若簇類E和F的相似度最高,合并簇類E和F為一個(gè)簇類。現(xiàn)在我們還有3個(gè)簇類,分別為A,BCD,EF。第五步:重復(fù)第四步,簇類BCD和簇類EF的相似度最高,合并該兩個(gè)簇類;現(xiàn)在我們還有2個(gè)簇類,分別為A,BCDEF。第六步:最后合并簇類A和BCDEF為一個(gè)簇類,層次聚類算法結(jié)束。凝聚層次聚類的過程和原理(4)樹狀圖是類似樹(tree-like)的圖表,記錄了簇類聚合和拆分的順序。我們根據(jù)上面的步驟,使用樹狀圖對(duì)聚合層次聚類算法進(jìn)行可視化,以上過程如圖所示。層次聚類由不同層次的分割聚類組成,層次之間的分割具有嵌套的關(guān)系。它不需要輸入?yún)?shù),這是它的一個(gè)明顯的優(yōu)點(diǎn),其缺點(diǎn)是終止條件必須具體指定。與原型聚類和密度聚類不同,層次聚類試圖在不同的“層次”上對(duì)樣本數(shù)據(jù)集進(jìn)行劃分,一層一層地進(jìn)行聚類。典型的分層聚具體有:HierarchicalClustering算法、BIRCH算法等?;趯哟尉垲惓S盟惴ɑ靖拍睿号袛鄡蓚€(gè)簇之間的距離(1)基本概念:判斷兩個(gè)簇之間的距離(2)計(jì)算兩個(gè)組合數(shù)據(jù)點(diǎn)間距離常用的方法是:SingleLinkage,CompleteLinkage和AverageLinkage,3種計(jì)算方法解析如下:SingleLinkage是將兩個(gè)簇中最近的兩個(gè)點(diǎn)間的距離作為這兩個(gè)組合數(shù)據(jù)點(diǎn)的距離,該方法易受極端值的影響,兩個(gè)不相似的點(diǎn)可能由于其中的某個(gè)極端的點(diǎn)距離較近而組合在一起。CompleteLinkage與SingleLinkage相反,將兩個(gè)簇中距離最遠(yuǎn)的兩個(gè)點(diǎn)間的距離作為這兩個(gè)簇的距離,CompleteLinkage的問題也與SingleLinkage相反,兩個(gè)相似的點(diǎn)可能某個(gè)點(diǎn)原先所在的簇中有極端值而無法組合在一起。AverageLinkage的計(jì)算方法是計(jì)算兩個(gè)簇中的每個(gè)點(diǎn)與其他所有點(diǎn)的距離并將所有距離的均值作為兩個(gè)組合數(shù)據(jù)點(diǎn)間的距離,此方法計(jì)算量比較大,但結(jié)果比前兩種方法更合理。基本概念:判斷兩個(gè)簇之間的距離(3)HierarchicalClustering算法簡(jiǎn)單易理解。主要思路:確保距離近的點(diǎn)落在同一個(gè)簇(cluster)之中,流程如下:將每個(gè)對(duì)象作為一個(gè)簇????={??},形成簇的集合??={??};

迭代以下步驟直至所有對(duì)象都在一個(gè)族中;找到一對(duì)距離最近的簇:min??(????,????);將這對(duì)簇合并為一個(gè)新的簇;從原集合C中移除這對(duì)簇;最終產(chǎn)生層次樹形的聚類結(jié)構(gòu):樹形圖。HierarchicalClustering算法原理優(yōu)點(diǎn):可排除噪聲點(diǎn)的干擾,但有可能噪聲點(diǎn)分為一簇。適合形狀不規(guī)則,不要求聚類完全的情況。不必確定??值,可根據(jù)聚類程度不同有不同的結(jié)果。原理簡(jiǎn)單,易于理解。缺點(diǎn):計(jì)算量很大,耗費(fèi)的存儲(chǔ)空間相對(duì)于其他幾種方法要高。合并操作不能撤銷。合并操作必須有一個(gè)合并限制比例,否則可能發(fā)生過度合并導(dǎo)致所有分類中心聚集,造成聚類失敗。HierarchicalClustering算法優(yōu)缺點(diǎn)skearn提供的模塊cluster中可以調(diào)用:AgglomerativeClustering(n_clusters=2,affinity=“euclidean”,memory,connectivity,compute_full_tree,linkage,pooling_func)具體參數(shù)描述:n_clusters:一個(gè)整數(shù),指定分類簇的數(shù)量,默認(rèn)為2。affinity:一個(gè)字符串或者可調(diào)用對(duì)象,用于計(jì)算距離,默認(rèn)歐氏距離“euclidean”。memory:用于緩存輸出的結(jié)果,默認(rèn)為不緩存。connectivity:一個(gè)數(shù)組或者可調(diào)用對(duì)象或者None,用于指定連接矩陣。compute_full_tree:通常當(dāng)訓(xùn)練了n_clusters后,訓(xùn)練過程就會(huì)停止,等于True時(shí)會(huì)繼續(xù)訓(xùn)練從而生成一顆完整的樹。HierarchicalClustering使用方法(1)具體參數(shù)描述:linkage:一個(gè)字符串,用于指定鏈接算法,可選類型為{“ward”,“complete”,“average”,“single”}?!皊ingle”,單鏈接single-linkage,采用dmin。“complete”,全鏈接complete-linkage,采用dmax。“average”,均連接average-linkage,采用davg?!皐ard,Ward鏈接,為默認(rèn)選擇方式。pooling_func:一個(gè)可調(diào)用對(duì)象,它的輸入是一組特征的值,輸出是一個(gè)數(shù)。該參數(shù)在sklearn0.20版本中棄用,將在0.22中刪除。HierarchicalClustering使用方法(2)BIRCH算法即平衡迭代削減聚類法,其核心是用一個(gè)聚類特征3元組表示一個(gè)簇的有關(guān)信息,從而使一簇點(diǎn)的表示可用對(duì)應(yīng)的聚類特征,而不必用具體的一組點(diǎn)來表示。它通過構(gòu)造滿足分支因子和簇直徑限制的聚類特征樹來求聚類。3元組包含:數(shù)據(jù)點(diǎn)個(gè)數(shù),數(shù)據(jù)點(diǎn)特征之和,數(shù)據(jù)點(diǎn)特征的平方和分支因子:規(guī)定了樹的每個(gè)節(jié)點(diǎn)的樣本個(gè)數(shù)簇直徑:體現(xiàn)一類點(diǎn)的距離范圍BIRCH算法通過聚類特征可以方便地進(jìn)行中心、半徑、直徑及類內(nèi)、類間距離的運(yùn)算。BIRCH算法中聚類特征樹的構(gòu)建過程是動(dòng)態(tài)的,可以隨時(shí)根據(jù)新的數(shù)據(jù)點(diǎn)對(duì)樹進(jìn)行重構(gòu),適合大規(guī)模數(shù)據(jù)集。BIRCH算法BIRCH算法第一步是通過掃描數(shù)據(jù),建立聚類特征樹。第二步是采用某個(gè)算法對(duì)聚類特征樹的葉節(jié)點(diǎn)進(jìn)行聚類。BIRCH算法優(yōu)缺點(diǎn)優(yōu)點(diǎn)就是一次掃描就行進(jìn)行比較好的聚類。缺點(diǎn)是要求是球形聚類,因?yàn)镃F樹存儲(chǔ)的都是半徑類的數(shù)據(jù),都是球形才適合。BIRCH算法描述聚類特征樹可以動(dòng)態(tài)構(gòu)造,不要求所有數(shù)據(jù)讀入內(nèi)存,可逐個(gè)讀入。新的數(shù)據(jù)項(xiàng)總是插入到樹中與該數(shù)據(jù)距離最近的葉子中。如果插入后使得該葉子的直徑大于類直徑T,則把該葉子節(jié)點(diǎn)分裂。其它葉子結(jié)點(diǎn)也需要檢查是否超過分枝因子來判斷其分裂與否,直至該數(shù)據(jù)插入到葉子中,并且滿足不超過類直徑,而每個(gè)非葉子節(jié)點(diǎn)的子女個(gè)數(shù)不大于分枝因子。算法可通過改變類直徑修改特征樹大小,控制其占內(nèi)存容量。BIRCH算法通過一次掃描就可以進(jìn)行較好的聚類,因此該算法適于大數(shù)據(jù)集。I/O花費(fèi)與數(shù)據(jù)量成線性關(guān)系。BIRCH算法只適用于數(shù)據(jù)的分布呈凸形及球形的情況,并且由于BIRCH算法需提供正確的聚類個(gè)數(shù)和簇直徑限制,對(duì)不可視的高維數(shù)據(jù)不可行。BIRCH算法的計(jì)算解析sklearn中的聚類算法包含在sklearn.cluster模塊中,BIRCH算法的具體描述為Birch(threshold=0.5,branching_factor=50,n_clusters=3,compute_labels=True,copy=True)參數(shù)說明如下:threshold:float,表示設(shè)定的半徑閾值,默認(rèn)0.5。branching_factor:int,默認(rèn)=50,每個(gè)節(jié)點(diǎn)最大特征樹子集群數(shù)。n_clusters:int,默認(rèn)=3,最終聚類數(shù)目。compute_labels:bool,默認(rèn)為True,是否為每個(gè)擬合計(jì)算標(biāo)簽,一般默認(rèn)。copy:bool,默認(rèn)為True,是否復(fù)制給定數(shù)據(jù)。如果設(shè)置為False,則將覆蓋初始數(shù)據(jù)。BIRCH算法使用方法層次聚類的應(yīng)用示例

構(gòu)建容量為15000的瑞士卷(swissrolldataset)數(shù)據(jù)集,用離差平方和的層次聚類算法建模,可視化聚類結(jié)果并輸出算法運(yùn)行時(shí)間,代碼如下:n_samples=15000noise=0.05X,_=make_swiss_roll(n_samples,noise)層次聚類的應(yīng)用示例

減小瑞士卷的厚度X[:,1]*=.5print("Computeunstructuredhierarchicalclustering...")st=time.time()ward=AgglomerativeClustering(n_clusters=6,linkage='ward').fit(X)elapsed_time=time.time()-stlabel=ward.labels_#運(yùn)行時(shí)間print("Elapsedtime:%.2fs"%elapsed_time)print("Numberofpoints:%i"%label.size)############################################################層次聚類的應(yīng)用示例

#可視化結(jié)果fig=plt.figure()ax=p3.Axes3D(fig)ax.view_init(7,-80)forlinnp.unique(label):ax.scatter(X[label==l,0],X[label==l,1],X[label==l,2],color=plt.cm.jet(np.float(l)/np.max(label+1)),s=20,edgecolor='k')plt.title('Withoutconnectivityconstraints(time%.2fs)'%層次聚類的應(yīng)用示例

效果圖輸出如圖:1.無監(jiān)督學(xué)習(xí)2.聚類算法3.

K-Means聚類4.

層次聚類5.密度聚類算法密度聚類算法密度聚類的思想不同于K-Means,它是通過聚類的簇是否緊密相連來判斷樣本點(diǎn)是否屬于一個(gè)簇,代表性的算法就是DBSCAN,它基于一組鄰域參數(shù)來判斷某處樣本是否是緊密。DBSCAN(Density-BasedSpatialClusteringofApplicationswithNoise,具有噪聲的基于密度的聚類方法)是一種很典型的密度聚類算法,和K-Means,BIRCH這些一般只適用于凸樣本集的聚類相比,DBSCAN還適用于非凸樣本集。密度聚類過程和原理(1)DBSCAN是一種基于密度的聚類算法,這類密度聚類算法一般假定類別可以通過樣本分布的緊密程度決定。同一類別的樣本,他們之間的緊密相連的,也就是說,在該類別任意樣本周圍不遠(yuǎn)處一定有同類別的樣本存在。通過將緊密相連的樣本劃為一類,這樣就得到了一個(gè)聚類類別。通過將所有各組緊密相連的樣本劃為各個(gè)不同的類別,則我們就得到了最終的所有聚類類別結(jié)果。密度聚類過程和原理(2)DBSCAN是基于一組鄰域來描述樣本集的緊密程度的,參數(shù)(?,MinPts)用來描述鄰域的樣本分布緊密程度。其中,?描述了某一樣本的鄰域距離閾值,MinPts描述了某一樣本的距離為?的鄰域中樣本個(gè)數(shù)的閾值。DBSCAN算法的基本概念(1)DBSCAN算法的基本概念(2)DBSCAN算法將數(shù)據(jù)點(diǎn)分為三類:核心點(diǎn):在半徑??內(nèi)含有超過min_??????????????數(shù)目的點(diǎn)。邊界點(diǎn):在半徑??內(nèi)點(diǎn)的數(shù)量小于min_??????????????,但是落在核心點(diǎn)的鄰域內(nèi)的點(diǎn)。噪音點(diǎn):既不是核心點(diǎn)也不是邊界點(diǎn)的點(diǎn)。DBSCAN聚類算法應(yīng)用特點(diǎn)和傳統(tǒng)的K-Means算法相比,DBSCAN最大的不同就是不需要輸入類別數(shù)K,當(dāng)然它最大的優(yōu)勢(shì)是可以發(fā)現(xiàn)任意形狀的聚類簇,而不是像K-Means,一般僅僅使用于凸的樣本集聚類。同時(shí)它在聚類的同時(shí)還可以找出異常點(diǎn),這點(diǎn)和BIRCH算法類似。DBSCAN聚類算法優(yōu)缺點(diǎn)

優(yōu)點(diǎn):可以解決數(shù)據(jù)分布特殊(非凸,互相包絡(luò),長(zhǎng)條形等)的情況。對(duì)于噪聲不敏感,速度較快,不需要指定簇的個(gè)數(shù);可適用于較大的數(shù)據(jù)集。在鄰域參數(shù)給定的情況下結(jié)果是確定的,只要數(shù)據(jù)進(jìn)入算法的順序不變,與初始值無關(guān)。缺點(diǎn):如果樣本集的密度不均勻、聚類間距差相

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論