1. 程式人生 > >機器學習演算法--聚類

機器學習演算法--聚類

常見的無監督學習型別:聚類任務  密度估計  異常檢測

聚類演算法試圖將樣本分成k個不想交的子集,每個子集稱為一個簇,對應一些潛在的概念。

樣本集x={x1, x2....xm} 每個樣本Xi={xi1,xi2...xin}對應n個特徵

劃分為K個不同的類別C={C1,C2....Ck} ,其中樣本xi的簇標記為\lambdai,則\lambda={\lambda1,\lambda2,\lambdam}可以表示聚類的結果。

1.效能指標:衡量聚類效果

資料集D={x1,x2..xm}  類別C={C1,C2..Ck}  簇標記向量\lambda   參考模型類別C*={C1*, C2*,....Cs*}  簇標記向量\lambda

*

定義:

Jaccard係數:

FM係數:

Rand係數:

簇劃分C={C1,C2..Ck}    定義樣本距離dist(xi,xj)  

樣本中心:

以上依次代表簇C中樣本間平均距離   樣本間最大距離  兩個簇的最小距離   兩個簇的中心距離

DB指數:

Dunn指數:

2.距離計算

樣本xi={xi1,xi2...xin}  樣本xj={xj1,xj2..xjn}

閔可夫斯基距離:

p=2歐式距離:

p=1曼哈頓距離:

離散屬性等無序屬性不能直接計算距離,可採用VDM方式來計算:

mua表示屬性u上取值為a的樣本數   muai表示在第i個簇中取值為a的樣本數  k為總簇數 

在屬性u上離散值a,b的距離:

當n個屬性有nc個有序,後面無序時有:

當不同屬性值權重不同時:

原型聚類

原型:樣本空間中具有代表的點

原型聚類:基於原型的聚類演算法  K-means均值演算法   學習向量量化  高斯混合聚類  密度聚類  層次聚類

1.K-means均值演算法

樣本集D={(x1,y1),(x2,y2)...(xm,ym)}   簇Ci的均值向量ui

最小化平方誤差:

刻畫了簇內樣本圍繞均值向量的緊密程度

給定樣本集,從中隨機挑選k個樣本作為初始均值向量,然後計算各個樣本到各個均值向量的距離,對於每個樣本,劃分到距離均值最近的類中去。劃分完畢後,重新計算k個類的均值向量,再次執行劃分過程。終止條件:最大迭代係數  最小調整幅度  或者均值向量不再更新。

2.學習向量量化LVQ

資料集D={(x1,y1),(x2,y2)...(xm,ym)}    xj=(xj1,xj2...xjn) 類別標記yj={Y}   LVQ學得一組原型向量{p1, p2..pq}分別代表q個簇。

初始化q個原型向量,分別預設類別標記{t1, t2...tq}  隨機選擇一個樣本計算該樣本到各個原型向量的距離,求出最近的原型向量。比較最近原型向量與樣本的類別標記

假設更新完之後的原型向量為p`,其與xj的距離為:

即當0<\eta<1時,新原型向量與樣本的距離會減小。

若相同,則原型向量更為:

若不同,則原型向量更新為:

繼續選擇新樣本,進行迭代計算

終止條件:最大迭代次數  原型向量不在更新或者更新很小

獲得原型向量之後,樣本xi可以劃分到距離樣本最近的原型向量代表的簇中

3.高斯混合聚類

多元高斯分佈:

x為n維樣本  u為均值向量   \Sigma方差矩陣

高斯混合分佈:

假設樣本的生成過程由高斯分佈給出:隨機變數zj={1,2....k} 表示生成樣本xj的高斯混合成分  zj的先驗概率對應於ai

樣本xj由第i個高斯混合成分組成的概率pm(zj = i | xj) 記為yji

高斯混合聚類把樣本集分為k個簇  C={C1,C2...Ck}  每個簇的標記

最大化對數似然:

高斯混合模型的EM演算法:

E:根據模型引數計算每個樣本屬於每個高斯成分的後驗概率yji

M:根據後驗概率來更新模型引數,使最大化對數似然

最大化對數似然,及最大化ui以及\Sigmai

對於ui求導:

對於\Sigmai求導:

考慮約束:

拉格朗日乘子法:

對於ai求導等於0:

演算法流程:

4.密度聚類

給定資料集D={(x1,y1),(x2,y2)...(xm,ym)}  定義:

\epsilon鄰域:

核心物件:

密度直達:xi是核心物件  xj位於xi的鄰域內,則稱xj與xi密度直達

密度可達:對於xi與xj  存在序列p1,p2,,pn   p1=xi,pn=xj   pi+1由pi密度直達,則xi與xj密度可達

密度相連:存在xk,使得xi,xj均與xk密度相連,則稱xi與xj密度相連

簇:由密度可達關係匯出的最大密度相連樣本集合

5.層次聚類

AGNES自低向上層次聚類:初始每一個樣本看成一個簇,然後合併距離最近的兩個簇,直到簇總數滿足預定條件。

簇距離計算: