機(jī)器學(xué)習(xí)--連載(2)----KMEANS原理介紹

一、?聚類介紹

???聚類分析是一個(gè)無監(jiān)督學(xué)習(xí)過程,一般是用來對(duì)數(shù)據(jù)對(duì)象按照其特征屬性進(jìn)行分組,經(jīng)常被應(yīng)用在客戶分群、欺詐檢測(cè)、圖像分析等領(lǐng)域。K-means應(yīng)該是最有名并且最經(jīng)常使用的聚類算法。

二、?算法介紹

???KMeans算法的基本思想是初始隨機(jī)給定K個(gè)簇中心,按照最鄰近原則把待分類樣本點(diǎn)分到各個(gè)簇,然后按照平均法重新計(jì)算各個(gè)簇的質(zhì)心,從而確定簇心,一直迭代,知道簇心的移動(dòng)距離小于某個(gè)給定的值。

???K-means 算法是一個(gè)迭代式的算法,其運(yùn)算過程如下:

1、?選擇k個(gè)點(diǎn)作為初始聚類中心。(k需要我們程序自己設(shè)置)

2、?計(jì)算其余所有點(diǎn)到聚類中心的距離,并把每個(gè)點(diǎn)劃分到離它最近的聚類中心所在的聚類中。最常用的衡量距離的函數(shù)式歐幾里得距離,叫做歐式距離。

3、?重新計(jì)算每個(gè)聚類中所有點(diǎn)的平均值,并將其作為新的聚類中心點(diǎn)。

4、?重復(fù)2,3步的過程,直至聚類中心不再發(fā)生變化,或者算法達(dá)到預(yù)定的迭代次數(shù)(程序自己設(shè)置),又或者聚類中心的改變小于預(yù)定設(shè)定的閥值。

K-Means的算法如下:

1、隨機(jī)在圖中取K(這里K=2)個(gè)種子點(diǎn)。

2、然后對(duì)圖中的所有點(diǎn)求到這K個(gè)種子點(diǎn)的距離,假如點(diǎn)Pi離種子點(diǎn)Si最近,那么Pi屬于Si點(diǎn)群。(上圖

???中,我們可以看到A,B屬于上面的種子點(diǎn),C,D,E屬于下面中部的種子點(diǎn))

3、接下來,我們要移動(dòng)種子點(diǎn)到屬于他的“點(diǎn)群”的中心。(見圖上的第三步)

4、然后重復(fù)第2)和第3)步,直到,種子點(diǎn)沒有移動(dòng)(我們可以看到圖中的第四步上面的種子點(diǎn)聚合了A, ?????

???B,C,下面的種子點(diǎn)聚合了D,E)。

三、?KMeans兩個(gè)重要問題

1、?選擇K值

K 的選擇是 K-means 算法的關(guān)鍵,Spark MLlib 在 KMeansModel 類里提供了 computeCost 方法,該方法通過計(jì)算所有數(shù)據(jù)點(diǎn)到其最近的中心點(diǎn)的平方和來評(píng)估聚類的效果。一般來說,同樣的迭代次數(shù)和算法跑的次數(shù),這個(gè)值越小代表聚類的效果越好。但是在實(shí)際情況下,我們還要考慮到聚類結(jié)果的可解釋性,不能一味的選擇使 computeCost 結(jié)果值最小的那個(gè) K。

2、?初始聚類中心點(diǎn)的選擇

對(duì)于初始化聚類中心點(diǎn),我們可以在輸入的數(shù)據(jù)集中隨機(jī)地選擇K個(gè)點(diǎn)作為中心點(diǎn),但是隨機(jī)選擇初始中心點(diǎn)可能會(huì)造成聚類的結(jié)果和數(shù)據(jù)的實(shí)際分布相差很大。所以我們一般選擇k-means++算法去初始化中心點(diǎn)。

k-means++算法選擇初始中心點(diǎn)的基本思想就是:初始的聚類中心之間的相互距離要盡可能遠(yuǎn)。

1、?從輸入的數(shù)據(jù)點(diǎn)集合中隨機(jī)選擇一個(gè)點(diǎn)作為第一個(gè)初始點(diǎn)。

2、?計(jì)算數(shù)據(jù)集中所有點(diǎn)與最新選擇的中心點(diǎn)的距離D(x).

3、?選擇下一個(gè)中心點(diǎn),使得最大。

4、?重復(fù)2,3步過程,直到K個(gè)初始點(diǎn)選擇完成。


代碼實(shí)現(xiàn)

前面的是和上篇文章中是一樣的,在這就不說了。直接接著上面的結(jié)果來

上面的結(jié)果iDFModel.transform(transform1)這個(gè)要用到

這個(gè)地方顯示的是你要用到的列。


結(jié)論

用了兩天的時(shí)間算是把這兩種算法的代碼說完了,明天我會(huì)跟新算法在項(xiàng)目中的應(yīng)用。

如果你想要哦快速了解的話,可以微信加我maochentingqiang可以把代碼和應(yīng)用實(shí)例都發(fā)給你的

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容