聚類演算法(基礎及核心概念)

2021-08-03 06:31:06 字數 3607 閱讀 7893

將物理或抽象物件的集合分組成為由類似的物件組成的多個類的過程被稱為聚類。由聚類所生成的簇是一組資料物件的集合,這些物件與同乙個簇中的物件彼此相似,與其他簇中的物件相異。在許多應用中,乙個簇中的資料物件可以被作為乙個整體來對待。

作為統計學的乙個分支,聚類分析已經被廣泛地研究了許多年。基於k-means(統計學教材聚類分析部分必講),

k-medoids和其他一些方法的聚類分析工具已經被加入到許多統計分析軟體包或系統中,例如典型的spss和

sas。在機器學習領域,聚類是無監督學習

(unsupervised learning)

的乙個典型例子。在概念聚類(

conceptual clustering

)中,一組物件只有當它們可以被乙個概念描述時才形成乙個簇。在同乙個簇中的物件之間具有較高的相似度,而不同簇中的物件差別較大。

相異度是基於描述物件的屬性值來計算的。距離和相關性是經常採用的度量方式。其中,衡量距離屬性常見的有歐式距離、曼哈頓(絕對)距離、切比雪夫距離等;衡量相關性常見的有皮爾遜相關係數和斯皮爾曼等級相關係數。

1.先介紹一下在聚類中具有代表性的兩種資料結構:

資料矩陣(data matrix,或稱為物件屬性結構):它用

p個變數(也稱為屬性)來表現

n個物件, 例如用年齡,身高,性別,種族等屬性來表現物件「人」。這種資料結構是關係表的形式,或 者看為

n*p維(

n個物件

*p個屬性)的矩陣。

相異度矩陣(dissimilarity matrix,或稱為物件

-物件結構):儲存

n個物件兩兩之間的近似性, 表現形式是乙個

n*n維的矩陣。

2.資料標準化

為了實現度量值的標準化,一種方法是將原來的度量值轉換為無單位的值(即統計學中所說的無量綱化)。給定乙個變數f的度量值,可以進行如下的變換:

## 計算平均的絕對偏差(

這裡的 x1f,…

,xnf是f

的n個度量值,mf是

f的平均值,即:

## 計算標準化的度量值,即

3.資料標準化後,就是計算物件之間的相異度

## 以距離作為度量:

在博文中有過介紹,這裡我為了簡單說明,就直接附上截圖了:

另外,當q=無窮時,稱作切比雪夫距離。

## 以相似性作為度量,同樣,我們為了簡單說明,我就直接擷取前面博文的圖如下:

這裡,再補充一下如何用二元變數描述物件間的相似度:

乙個二元變數只有兩個狀態:0或1,

0表示該變數為空,

1表示該變數存在。例如,給出乙個描述病人的變數

smoker,1

表示病人抽菸,而

0表示病人不抽菸。如果用標準化的方法處理會誤導聚類結果,所以要採用特定的方法來計算其相異度。

如果假設所有的二元變數有相同的權重,我們設q是物件i和

j值都為

1的變數的數目,

r是在物件

i中值為

1,在物件

j中值為

0的變數的數目,

s是在物件i中值

0,在物件

j中值為

1的變數的數目,

t是在物件i和

j中值都

0的變數的數目。變數的總數是p,

p=q+r+s+t。

j為1j為0

i為1q

ri為0st

基於對稱二元變數的相似度稱為恆定的相似度,即當一些或者全部二元變數編碼改變時,計算結果不會發生變化。對恆定的相似度來說,評價兩個物件i和

j之間相異度的著名的係數是簡單匹配係數,其定義如下:

d(i,j) = (r+s) / (q+r+s+t)

而對非恆定的相似度,著名的評價係數是jaccard係數,在它的計算中,負匹配的數目被認為是不重要的,因此被忽略,其定義如下:

d(i,j) = (r+s) / (q+r+s)

劃分方法(partitioning methods):給定乙個

n個物件或元組的資料庫,乙個劃分方法構建資料的

k個劃分,每個劃分表示乙個聚類,並且

k<=n

。也就是說,它將資料劃分為

k個組,同時滿足如下的要求:

1.每個組至少包含乙個物件;

2.每個物件必須屬於且只屬於乙個組。注意在某些模糊劃分技術中第二個要求可以放寬。

給定k,即要構建的劃分的數目,劃分方法首先建立乙個初始劃分。然後採用一種迭代的重定位技術,嘗試通過物件在劃分間移動來改進劃分。乙個好的劃分的一般準則是:在同乙個類中的物件之間的距離盡可能小,而不同類中的物件之間的距離盡可能大。

為了達到全域性優,基於劃分的聚類會要求窮舉所有可能的劃分。實際上,絕大多數應用採用

了以下兩個比較流行的啟發式方法:

1.k-means 演算法,在該演算法中,每個簇用該簇中物件的平均值來表示。

2.k-medoids 演算法,在該演算法中,每個簇用接近聚類中心的乙個物件來表示。

這些啟發式聚類方法對在中小規模的資料庫中發現球狀簇很適用。

層次的方法(hierarchical methods):層次的方法對給定資料集合進行層次的分解。根據層次的分解如何形成,層次的方法可以被分為凝聚的或**的方法。

凝聚的方法,也稱為自底向上的方法,一開始將每個物件作為單獨的乙個組,然後繼續地合併相近的物件或組,直到所有的組合並為乙個(層次的上層),或者達到乙個終止條件。

**的方法,也稱為自頂向下的方法,一開始將所有的物件置於乙個簇中。在迭代的每一步中,乙個簇被**為更小的簇,直到終每個物件在單獨的乙個簇中,或者達到乙個終止條件。

基於密度的方法:絕大多數劃分方法基於物件之間的距離進行聚類。這樣的方法只能發現球狀的簇,

而在發現任意形狀的簇上遇到了困難。隨之提出了基於密度的另一類聚類方法,其主要思想是:只要臨近區域的密度(物件或資料點的數目)超過某個閾值,就繼續聚類。也就是說,對給定類中的每個資料點,在乙個給定範圍的區域中必須包含至少某個數目的點。這樣的方法可以用來過濾「噪音」資料,發現任意形狀的簇。

dbscan是乙個有代表性的基於密度的方法,它根據乙個密度閾值來控制簇的增長。

optics

是另乙個基於密度的方法,它為自動的,互動的聚類分析計算乙個聚類順序

除此之外,還有基於網格的方法和基於模型的方法。

本文大概梳理了一下聚類分析的基礎概念以及各分類方法的思想,隨後會將具體的演算法實現寫上。

聚類及K mean演算法

首先什麼是聚類,和分類有什麼區別,這裡講乙個例子,比如有一群學生考完期末考試,現在要根據他們的成績把他們劃分成幾個小組,讓老師分別進行輔導,這時候,你不知道要劃分幾個小組比較好,但你可以根據他們的成績,比較成績接近的歸到乙個小組,這個過程就是聚類,另一種情況是直接給出了90分段的乙個小組,80分段的...

r型聚類典型指標 常用的聚類演算法及聚類演算法評價指標

1.典型聚類演算法 1.1 基於劃分的方法 代表 kmeans演算法 指定k個聚類中心 計算資料點與初始聚類中心的距離 對於資料點,找到最近的ci 聚類中心 將分配到ci中 更新聚類中心點,是新類別數值的均值點 計算每一類的偏差 返回返回第二步 1.2 基於層次的方法 代表 cure演算法 每個樣本...

聚類演算法 近鄰聚類演算法

time is always too short for those who need it,but for those who love,it lasts forever.dracula untold 近鄰聚類法同樣是一種基於距離閾值的聚類演算法。coding utf 8 近鄰聚類演算法的pyth...