ML演算法 無監督學習 K means聚類

2021-08-11 07:26:30 字數 3008 閱讀 2565

這一系列文章將介紹各種機器學習演算法,部分演算法涉及公示推導,我的部落格中有另乙個板塊介紹基於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個中心點的距離,將其與距離最近的中...