這一系列文章將介紹各種機器學習演算法,部分演算法涉及公示推導,我的部落格中有另乙個板塊介紹基於python和r實現各種機器學習演算法,詳情見置頂的目錄。
聚類演算法是一種無監督的機器學習演算法,通過距離測度實現樣本點的歸類,演算法的最終目的是使得聚簇內部樣本點相似度最大,聚簇間樣本點相似度最小,常見的聚類演算法有k-means聚類、層次聚類、dbcan聚類等,本文介紹k-means聚類演算法,其他兩種演算法會陸續編輯。
k-means演算法的主要過程:
(1)選取k值
(2)隨機確定k個初始樣本中心點
(3)計算其他樣本點與聚簇中心的距離,將樣本總體分成k個類
(4)重新計算聚簇中心
(5)重複(3)(4)兩個過程,直到聚簇中心不發生變化,演算法收斂
由上面可以看出k-means聚類結果的主要影響因素如下:
(1)距離測度選擇。k-means聚類是以距離測度作為聚類依據,因此對於同乙個樣本點,選取不同的距離測度,得到的距離也不同,關於距離測度,在knn演算法中有所介紹,見文末,k-means聚類常用的距離測度為歐式距離,公式如下: d(
xi,x
j)=∑
k=1n
(x(k
)i−x
(k)j
)2‾‾
‾‾‾‾
‾‾‾‾
‾‾‾‾
⎷
=∑k=
1n(x
(1)i
−x(1
)j)2
+(x(
2)i−
x(2)
j)2+
⋯+(x
(n)i
−x(n
)j)2
‾‾‾‾
‾‾‾‾
‾‾‾‾
‾‾‾‾
‾‾‾‾
‾‾‾‾
‾‾‾‾
‾‾‾‾
‾‾‾‾
‾‾‾‾
‾‾‾‾
‾‾‾
⎷ d(x
i,xj
)=∑k
=1n(
xi(k
)−xj
(k))
2=∑k
=1n(
xi(1
)−xj
(1))
2+(x
i(2)
−xj(
2))2
+⋯+(
xi(n
)−xj
(n))
2(2)資料特徵。由於樣本點本身屬性具有的資料特徵,在做聚類時,會因為資料影響距離,最終影響聚類效果,比如 x x
的有四個屬性,其屬性的資料範圍為: x∈
((0,
1),(
1,10)
,(1,
100),(
100,
200)
)' role="presentation" style="position: relative;">x∈(
(0,1
),(1
,10),
(1,100),
(100
,200))
x∈((
0,1)
,(1,
10),(
1,100),(
100,
200)
),這種情況下,如果採取歐式距離測度,在計算時屬性3和屬性4的值對於距離的結果影響很大,可能直接影響了聚類結果。
處理方法:這種情況下可以進行資料預處理,對資料進行標準化,如0/1標準化、最小最大標準化,後續會在「machine learning演算法學習」版塊中介紹常用的資料預處理方法。
(3)k值選取。k值的選取在k-means演算法中是乙個很常見又很重要的問題,選取好的k值,可以直接得到想要的聚類效果,如果k值選不好,可能會意向最終聚類效果。
處理方法:常見的選取k值的方法有以下兩種:一是先把樣本點plot出樣本散點圖觀察資料特徵,自己確定k值。二是設定乙個迴圈,如 k∈
[2,20
] k∈[2
,20
],之後執行迴圈,找到聚類效果最好的情況對應的k值。
(4)初始中心點選取。由於樣本聚簇初始中心點是隨機選取的,具有不穩定性,如果隨機選取的初始點距離較近,則很可能增加迭代次數、影響最終的聚類結果。
k-means++演算法的基本思想為:使得初始選取的k個中心點距離盡可能遠。其基本實現過程如下:
(1)隨機選取乙個初始聚類中心點作為seed
(2)對於資料集中的每個點,分別計算它與seed點的距離 d(
x)d (x
),根據距離測度選出下乙個中心點
(3)重複過程(2)直到選出k個中心點
(4)執行k-means演算法
為了降低離群點對於聚類中心的影響,在(2)中選擇中心點的原則是: d(
x)d (x
)較大的點,被選取作為聚類中心的概率較大。
選取方法:將(2)中每個點與seed點的距離 d(
x)d (x
)儲存在陣列中,然後求和得到 su
m(d(
x)) sum
(d(x
))
,取乙個能落在su
m(d(
x)) sum
(d(x
))
中的隨機值ra
ndom
r an
do
m,然後ra
ndom
−=d(
x)r an
dom−
=d(x
)直到其小於等於0,此時的點就是下乙個中心點。
k-means++演算法可以確定初始聚類中心,但其也存在缺點:下乙個中心點的選擇依賴前乙個中心點。
聚類演算法應用廣泛,對於k-means演算法來講,常用作資料降維、探索性資料分析等,同時k-means演算法也經常用於進行基礎聚類挖掘研究,我在之前寫過一篇基於k-means聚類的臨終關懷現狀分析的文章,鏈結在文末。
knn演算法中關於距離測度介紹:
常用資料預處理方法:
基於k-means演算法的我國臨終關懷現狀分析:
無監督學習 K means演算法
是指在未加標籤的資料中,根據資料之間本身的屬性特徵和關聯性對資料進行區分,相似相近或關聯性強的資料放在一起,而不相似不相近 關聯性不強的資料不放在一起。應用場景 降維,聚類演算法,關聯演算法 有監督學習和無監督學習的區別 分類問題,要求實現必須明確知道各個類別的訊息,建立的前提是待分類項都有乙個類別...
K means演算法 無監督學習
現實生活中常常會有這樣的問題 缺乏足夠的先驗知識,因此難以人工標註類別或進行人工類別標註的成本太高。很自然地,我們希望計算機能代我們完成這些工作,或至少提供一些幫助。根據類別未知 沒有被標記 的訓練樣本解決模式識別中的各種問題,稱之為無監督學習。我們可以怎樣最有用地對其進行歸納和分組?我們可以怎樣以...
無監督學習 K means演算法
聚類演算法是一種無監督學習演算法。k均值演算法是其中應用最為廣泛的一種,演算法接受乙個未標記的資料集,然後將資料聚類成不同的組。k均值是乙個迭代演算法,假設我們想要將資料聚類成k個組,其方法為 隨機選擇k個隨機的點 稱為聚類中心 對與資料集中的每個資料點,按照距離k個中心點的距離,將其與距離最近的中...