無監(jiān)督學(xué)習(xí)掂僵,聚類算法
選取K個點作為初始質(zhì)心:
repeat:
將每個點指派到最近的質(zhì)心惊暴,形成K個類
重新計算每個類的質(zhì)心
until 質(zhì)心不在發(fā)生變化
計算點到質(zhì)心的方法:
1.歐氏距離:歐氏空間中的數(shù)據(jù)
2.哈曼頓距離:
3.余弦相識度:常用于文本數(shù)據(jù)
最小化目標(biāo)函數(shù):最小化誤差平方和。
數(shù)據(jù)到該類中心聚類距離平方和
簡單髓梅,K值不好選取,隨機性比較大
K的選取:
1.多次隨機選取圆仔,選取誤差平方和最小的那個質(zhì)心
2.?
初始中心的選取
1.隨機選取
2. 計算每一維特征的最大值和最小值蔫劣,max min 坪郭,該維度的中心選取方式為: min + (max - min)*random(0,1)
其他維度同理
二分K均值
簡單思想:為了得到K個簇,將所有的點集合分成兩個類簇脉幢,從這些簇中選取一個繼續(xù)分裂歪沃,如此下去,直到參生K個簇嫌松。
算法流程:
1沪曙,初始化類簇,使之包含所有點組成的簇
2萎羔,repeat:
2.1從簇表中選取一個類簇
2.2{對選定的類簇多次二分“試驗”}
2.2.1for i = 1 to 測試次數(shù) do
2.2.2使用基本K均值液走,二分選定的簇
2.2.3end for
2.3 從二分試驗中選取具有最小總SSE的兩個簇
2.4將這兩個簇添加到簇表中
2.5until 簇表中包含K個簇
注意:
2.1從簇表中選取一個類簇:選取類簇的方法:
(1)最大的簇
(2)最大SSE的簇
(3)基于最大和SSE的標(biāo)準(zhǔn)選擇類簇
實驗中通常,使用結(jié)果簇的質(zhì)心作為基本K均值的初始中心贾陷,對結(jié)果簇逐步求精缘眶。
因為在二分K均值算法中只是局部地使用kmeans算法,即其中的二分簇時髓废。
看到下面另外一種kmeans改進算法
K-Means ++ 算法
k-means++算法選擇初始seeds的基本思想就是:初始的聚類中心之間的相互距離要盡可能的遠磅崭。
1.從輸入的數(shù)據(jù)點集合中隨機選擇一個點作為第一個聚類中心
2.對于數(shù)據(jù)集中的每一個點x,計算它與最近聚類中心(指已選擇的聚類中心)的距離D(x)
3.選擇一個新的數(shù)據(jù)點作為新的聚類中心瓦哎,選擇的原則是:D(x)較大的點砸喻,被選取作為聚類中心的概率較大
4.重復(fù)2和3直到k個聚類中心被選出來
5.利用這k個初始的聚類中心來運行標(biāo)準(zhǔn)的k-means算法
從上面的算法描述上可以看到,算法的關(guān)鍵是第3步蒋譬,如何將D(x)反映到點被選擇的概率上割岛,一種算法如下:
1.先從我們的數(shù)據(jù)庫隨機挑個隨機點當(dāng)“種子點”
2.對于每個點,我們都計算其和最近的一個“種子點”的距離D(x)并保存在一個數(shù)組里犯助,然后把這些距離加起來得到Sum(D(x))癣漆。
3.然后,再取一個隨機值剂买,用權(quán)重的方式來取計算下一個“種子點”惠爽。這個算法的實現(xiàn)是癌蓖,先取一個能落在Sum(D(x))中的隨機值Random,然后用Random -= D(x)婚肆,直到其<=0租副,此時的點就是下一個“種子點”。
4.重復(fù)2和3直到k個聚類中心被選出來
利用這k個初始的聚類中心來運行標(biāo)準(zhǔn)的k-means算法
可以看到算法的第三步選取新中心的方法较性,這樣就能保證距離D(x)較大的點用僧,會被選出來作為聚類中心了。至于為什么原因比較簡單赞咙,如下圖 所示:
假設(shè)A责循、B、C攀操、D的D(x)如上圖所示院仿,當(dāng)算法取值Sum(D(x))*random時,該值會以較大的概率落入D(x)較大的區(qū)間內(nèi)速和,所以對應(yīng)的點會以較大的概率被選中作為新的聚類中心歹垫。
來源鏈接:http://blog.csdn.net/lonelyrains/article/details/50916152