資料分析與機器學習學習筆記 聚類演算法

2021-08-21 16:12:16 字數 3023 閱讀 7659

聚類演算法分屬與機器學習中的無監督學習型別,由於無監督學習大多是根據距離進行分類所以其準確性遠不及有監督學習,但是聚類演算法用於資料預處理還是有很大作用的。例如我們拿到乙個資料集後通過聚類演算法生成3個類別,在此基礎上將第一次分類產生的標籤用於接下來進一步的有監督學習(典型的stacking模型思想),使用這個思路得到的模型效果往往要好一些。

此外,他還能進行資料摘要、資料降維與資料壓縮。總之一句話,就我個人的一些理解,在現階段而言聚類演算法更應歸屬與資料分析與預處理之中(在之前聚類演算法常用於分類等其他方向中),為什麼後來換成其他的演算法進行分類了呢?自然是因為精度不達標嘍,比如下方圖所示,我們一眼可以看出這明顯屬於兩個類別的樣本,但是使用k-means演算法時兩個樣本的顏色、陰影等一系列值十分相似,因此在使用該聚類演算法時會將兩個樣本歸為一類。。。。(人狗情未了)。本文主要介紹k-means,dbscn二種不同的聚類演算法,分別是基於距離、密度二種方式提出的演算法。

k-means演算法目標是將相似的『物品』分到同一組,其核心思想是兩個物體的距離約接近它們二者的相似度越高,即根據距離來劃分不同的種類從而達到聚類的目的,在這裡距離有兩種計算方式分別是歐幾里得距離和余弦相似度,但是余弦相似度在數學推倒上沒能證明出其收斂,所以我們採用歐幾里得方式度量距離,如下圖所示,使用k-means演算法在這個資料集中我們劃分了8類。接下來我們來看一看k-means的工作流程。

首先一點,如引言所說聚類演算法用來分類,因此共有幾個類別就是第乙個要解決的問題,在k-means演算法中k的值(類別個數)需要我們自己指定,這也是相對來說很麻煩的乙個問題,該演算法的效能嚴重依賴於k值得指定,在確定k的過程中需要不斷的試驗,通過迭代的方式確定最佳的k值,如下圖所示,在k值取2的時候該折線圖處在乙個『肘點』,即該點是數值突變最大的點,因此我們的k值就應該選取這一點,通過視覺化方式尋找最佳k值不失為乙個好的方法比較直觀。 

k值選取好後就要進行距離的計算,k-means演算法的執行過程是乙個動態過程,如圖1選擇了左上與右下兩個中心(質心)點,接下來選擇乙個點計算與兩側中心的距離,並將此點劃分到距離近的那個點,更新劃分後類內的中心;再重複上述步驟進行第二次計算,中心點不斷變更(以劃分的點有可能會重新進行劃分),最終結果如圖2所示完成乙個二分類;同樣的圖3和圖4是將初始中心點設定在左下和右上時的效果,對比兩個結果可以清晰的發現第二種的分類效果更好一些,正是由於初始的中心點是隨機選擇的,所以k-means演算法充滿了不確定性。如果將k值設成3會怎樣呢?k-means會強制分成3類(具體怎麼分不清楚,因為初始點的動態選擇造成的每次結果不同),從此就可看出該演算法過於依賴對k值的選取。同時該演算法適用於常規資料集,對於環形的資料集以及高維資料集表現效果不是特別好,對於以上兩類資料集怎麼聚類呢,這就是我們接下來要介紹的dbscn聚類演算法。

相比於k-means演算法依賴距離進行分類,dbscn採用的是根據密度進行分類的思想,例如在某個資料點的半徑為r的圓內包含的a類點個數超過我們設定的閾值時就將該點劃分到a類內,接下來闡述幾個相關概念(參考左圖進行理解):

r臨域的距離閾值:人為設定的半徑,用來統計以r為半徑的臨域內不同類點個數,用以分類。

直接密度可達:某點p在以q為核心的r臨域內,且q是核心點,則稱p為直接密度可達。

密度可達:存在乙個序列,q0->q1,q1->q2,q2->q3.......,以上->表示直接密度可達,在此表示式下我們稱q3為q0的密度可達(q0與q3不是直接密度可達)。

密度相連:從以q為核心點出發,p和k都是直接密度可達的,我們稱p和k為密度相連。

邊界點:屬於某一類的非核心點,不能繼續向下發展,也就是在其臨域內的所有直接密度可達點的閾值不達標,不能分到該類中。

雜訊點:沒有劃分到任何一類中,如左圖的點n。

右圖為使用dbscn進行聚類的乙個實際結果,相對於k-means演算法dbscn對於複雜條件下的聚類更優秀,如果對該資料集使用k-means演算法進行聚類他只能強制進行線性分類(類似於一分為二),中間圖中綠色為核心點,藍色為邊界點,紅色為離群點。dbscn計算過程如下,首先選擇乙個點作為核心點,框選出以r為臨域的範圍,計算該臨域內某類的直接密度可達點個數,當超過我們設定的閾值時將該核心點歸為此類;接著選取上一步臨域內的直接密度可達點作為新的核心點,重複進行上述計算過程,直到找到邊界點位置並且所有點遍歷完成,將剩下的點歸為雜訊點。dbscn演算法相比於k-means演算法不需要初始時認為設定k值,通過演算法自己生成k值,該演算法可以發現任意形狀的簇,擅長檢測雜訊點;但是此演算法計算量較大,對於高維資料不建議使用(可以對降維後的資料使用),並且效率不高。

對於聚類演算法總在使用,就目前而言聚類不太可能單獨拉出來作為乙個機器學習演算法來實現某一功能,更多的是作用於資料預處理模組,結合各種降維演算法使用,但是不是說作用於資料處理模組聚類演算法就不重要,還是最開始我提及的部分,資料處理往往與乙個演算法實現效果的好壞具有最直觀的聯絡。基於以上思想,此篇對於演算法的推導過程沒有詳細解釋,如果有需要可以網上閱讀其他文章,網路存在大量的推導過程,一定能滿足你的需要。(著急下班陪老大球球玩去嘍,拜拜)

機器學習之 聚類學習筆記

聚類試圖將資料集中的樣本劃分為若干個通常是不相交的子集,每個子集 稱為乙個 簇 cluster 通過這樣的劃分,每個簇可能對應於一些潛在的概念 類別 如 淺色瓜 深色瓜 有籽瓜 無籽瓜 甚至 本地瓜 外地瓜 等。這些概念對聚類演算法而言事先是未知的,聚類過程 僅能自動形成簇結構,簇所對應的概念語義需...

機器學習筆記 kMeans聚類

優點 容易實現。缺點 可能收斂到區域性最小值,在大規模資料集上收斂較慢。適用資料型別 數值型資料 k 均值演算法 先隨機確定k個初始點作為質心,然後將資料集中的每個點分配到乙個簇中,具體來講為每個點找距其最近的質心,並將其分配給該質心所對應的簇。再每個簇更新質心為該簇所有點的平均值。import n...

機器學習筆記12 聚類

在 無監督學習 中,訓練樣本的標記資訊是未知的,目標是通過對無標記訓練樣本的學習來揭示資料的內在性質及規律。此類學習任務中研究最多的是聚類。此外,無監督學習還有密度估計 異常檢測等。常見的聚類包括原型聚類 密度聚類 層次聚類等。原型聚類 此類演算法假設聚類結果能通過一組原型刻畫。通常情形下,演算法先...