什麼是聚類?什麼是k-均值演算法?基本來說,給定k
>
0k>0
k>
0,(k
kk為簇數)和乙個集合(其中包括需要聚類的n
nn個d
dd-維物件): k
kk-均值演算法是乙個基於距離的聚類演算法,k
kk-均值聚類有很多應用,可以用來找出有共同行為的一組消費者,或者根據文件內容的相似性對文件完成聚類,如:
在乙個二維環境中,輸入資料可能如下,其中每行表示乙個點(x,y):
p 1=
(1,1
)p_1=(1,1)
p1=(1
,1)p2=
(2,1
)p_2=(2,1)
p2=(2
,1)p3=
(1,2
)p_3=(1,2)
p3=(1
,2)p4=
(5,5
)p_4=(5,5)
p4=(5
,5)p5=
(6,5
)p_5=(6,5)
p5=(6
,5)p6=
(5,6
)p_6=(5,6)
p6=(5
,6)p7=
(7,7
)p_7=(7,7)
p7=(7
,7)p8=
(9,6
)p_8=(9,6)
p8=(9
,6)開始時,會選擇k個點作為簇中心,這些點作為簇質心。可以採用很多方法來初始化簇的質心,其中一種方法是從n個點的樣本中隨即選取k個點,一旦選擇的k個初始的簇質心,可以計算輸入集合中各個點到這k個中心點的距離,然後將各個點分配到與它最近的簇中心。所有物件分配結束後,在重新計算k個質心的位置。這兩步反覆迭代,直到簇中心不再改變(或變化範圍小於閾值)。這就是乙個基本的k-均值聚類過程。
k
kk-均值聚類的形式化表述如下:
給定n
nn個d
dd-維點:
x 1=
(x11,
x12,…
,x1d
)x_1=(x_,x_,\dots,x_ )
x1=(x
11,
x12
,…,x
1d)
x 2=
(x21,
x22,…
,x2d
)x_2=(x_,x_,\dots,x_)
x2=(x
21,
x22
,…,x
2d)
…
\dots…xn
=(xn
1,xn
2,…,
xnd)
x_n=(x_,x_,\dots,x_)
xn=(x
n1,
xn2
,…,x
nd)
將這個x1
,x2
,…,
xn}劃分為k個簇:^k\sum_\parallel x_j-\mu_i\parallel^2
argmin
c∑i
=1k
∑xj
ϵci
∥xj
−μi
∥2其中μ
i\mu_i
μi是c
ic_i
ci中點的平均值,∥xi
j−cj
∥\parallel x_i^j-c_j\parallel
∥xij−
cj∥
為實體點與簇質心之間的距離
k
kk-均值聚類方法非形式化描述:分割槽方法
因為k-均值聚類演算法是迭代的,在下面即將介紹的mapreduce實現中,通過不斷執行mapreduce解決方案,直到找到乙個和是的最優解決方案,使k-均值聚類演算法收斂。k-均值演算法需要完成以下幾個步驟:
k
kk-均值聚類演算法的第一步需要把各個資料點分配到最近的簇質心。對於乙個給定的(d
dd維)資料點,可以使用乙個距離函式來確定最近的簇質心,這個函式會計算這個質心生成該資料點的可能性有多大,有很多距離函式可以使用,包括:
很多kk
k-均值演算法中都使用了歐氏距離。要的出兩個資料點例項x
xx和y
yy(表示為d
dd個連續屬性,即d
dd-維)之間的歐氏距離:令:x=(
x1,x
2,…,
xd
)x=(x_1,x_2,\dots,x_d)
x=(x1
,x2
,…,x
d)y=(
y1,y
2,…,
yd
)y=(y_1,y_2,\dots,y_d)
y=(y1
,y2
,…,y
d)則有:
d is
tanc
e(x,
y)=(
x1−y
1)2+
(x2−
y2)2
+⋯+(
xd−y
d)
2distance(x,y)=\sqrt
distan
ce(x
,y)=
(x1
−y1
)2+(
x2−
y2)
2+⋯+
(xd
−yd
)2歐氏距離有以下性質:
乙個簡單的歐氏距離函式為**如下:
public class euclideandistance{
// center 為簇質心
//令vector[i]表示第i個位置代表的屬性
public static double calculatedistance(vector center,vector data){
double sum=0.0;
int length=data.length;
//計算每個屬性之間的距離
for(int i=0;i
k-均值聚類演算法
聚類演算法之K均值聚類
k means聚類方法 1.介紹 k均值聚類是基於樣本集合劃分的聚類演算法。由於每個樣本在劃分的過程中只能屬於乙個類別,所以k means演算法屬於硬聚類。2.演算法過程 k均值聚類演算法是乙個迭代的過程,每次迭代包括兩個步驟 3.複雜度 k均值聚類演算法的複雜度o mnk 其中k表示類別數,m表示...
K 均值聚類
剛剛寫了篇分級聚類的,趁著餘熱,再寫一下關於k 均值聚類的。為了突出k 均值聚類的特點,先黑一下分級聚類。跟k 均值聚模擬起來,分級聚類演算法有一下缺點 第一,的那個沒有額外投入的時候,樹形試圖是不會真正將資料拆分成不同組的。第二,分級聚類的計算演算法計算量相當大。當兩個節點合併之後,節點之間的距離...
k均值聚類
k均值聚類就是利用歐氏距離的度量將距離相近的樣本分為k類 a.假設有m個樣本,首先隨機選擇k個樣本作為聚類的質心 要分成k類 b.然後對於每個樣本,計算它到每個質心的距離,將它歸類於距離最小的那個質心 c.接著對初步分類的k個類別重新計算該類的質心,也就是對每個類別的樣本座標求平均 d.重複 b 步...