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

下載本文檔

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

文檔簡介

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

K-Means聚類4.

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

K-Means聚類4.

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

,

之間的歐氏距離

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

表示樣本點

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

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

2.先使用canopy算法進行初始聚類,得到K個canopy中心,以此或距離每個canopy中心最近的點作為初始簇中心。K-Means應(yīng)用示例隨機創(chuàng)建一些二維數(shù)據(jù)作為訓(xùn)練集,選擇二維特征數(shù)據(jù),代碼如下:importnumpyasnpimportmatplotlib.pyplotasplt%matplotlibinlinefromsklearn.datasets.samples_generatorimportK-Means應(yīng)用示例#X為樣本特征,Y為樣本簇類別,共1000個樣本,每個樣本2個特征,共4個簇,簇中心在[-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評估的聚類分數(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評估的k=3時候聚類分數(shù):

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

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

k=4時候的聚類效果: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評估的k=4時候聚類分數(shù):

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

5924.050613480169

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

用MiniBatchKMeans的效果,將batchsize設(shè)置為200.由于的4個簇都是凸的,所以其實batchsize的值只要不是非常的小,對聚類的效果影響不大。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的聚類效果也不錯。當然由于使用MiniBatch的原因,同樣是k=4最優(yōu),KMeans類的Calinski-HarabaszIndex分數(shù)為5924.05,而MiniBatchKMeans的分數(shù)稍微低一些,為5921.45,這個差異損耗并不大。1.無監(jiān)督學(xué)習2.聚類算法3.

K-Means聚類4.

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

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

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

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

構(gòu)建容量為15000的瑞士卷(swissrolldataset)數(shù)據(jù)集,用離差平方和的層次聚類算法建模,可視化聚類結(jié)果并輸出算法運行時間,代碼如下: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_#運行時間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é)習2.聚類算法3.

K-Means聚類4.

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

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

溫馨提示

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

評論

0/150

提交評論