功能及可應用領域
聚類分析將大量數據劃分爲性質相同的子類,便於瞭解數據的分佈情況。因此,它廣泛
應用於模式識別、圖像處理、數據壓縮等許多領域,例如:
- 在市場分析中,通過聚類分析能幫助決策者識別不同特徵的客戶羣,以及各客戶羣的
行爲特徵;
- 在生物工程研究中,聚類分析能夠用於推導動植物的分類,按照功能對基因進行劃分
並獲取種羣中的固有結構特徵;
- 在非關係數據庫領域(如空間數據庫領域),聚類分析能夠識別具有相同地理特徵的區
域以及該區域的環境和人的特徵;
- 在
web
信息檢索領域,聚類分析能夠對web文檔進行分類,提高檢索效率。
等等,這裏就不一一列舉了。
輸入數據及要求
在進行
Kmeans
聚類時,必須對數據進行預處理。
- 注意數據屬性在向量空間的規範化。
- 缺失屬性值的處理:直接刪除。
- 對噪聲的處理:在訓練的過程中對噪聲的元組直接刪除掉。
- 聚類變量值不應有數量級上的差異。
- 對分類型變量的處理。由於
Kmeans
聚類算法的距離計算是基於數值的,爲符合計
算要求需要對分類型聚類變量進行預處理。(下文我們有專門的章節來介紹分類型變量的處
理)
算法原理
Kmeans
聚類也稱快速聚類,屬於覆蓋型數值劃分聚類算法。它得到的聚類結果,每
個樣本點都唯一屬於一個類,而且聚類變量爲數值型,並採用劃分原理進行聚類。
Kmeans
聚類涉及兩個主要方面的問題:
下面將重點討論這些問題。
Kmeans
對「親疏程度」的測度
通常,「親疏程度」的測度一般都有兩個角度:第一,數據間的相似程度;第二,數據
間的差異程度。衡量相似程度一般可採用簡單相關係數或等級相關係數等,差異程度則一般
通過某種距離來測度。
Kmeans
聚類方法採用的是第二個測度角度。
爲有效測度數據之間的差異程度,
Kmeans
聚類算法將所收集到具有
p
個變量的樣本
數據,看成
p
維空間上的點,並以此定義某種距離。通常,點與點之間的距離越小,意味
着它們越「親密」,差異程度越小,越有可能聚成一類;相反,點與點之間的距離越大,意
味着它們越「疏遠」,差異程度越大,越有可能分屬不同的類。
由於
Kmeans
聚類方法所處理的聚類變量均爲數值型,因此,它將點與點之間的距離
定義爲歐氏距離(
Euclideandistance
),即數據點
x
與
y
間的歐氏距離是兩個點的
p
個變量
之差的平方和的算術平方根,數學定義爲
Euclid(x,y)=∑i=1p(xi−yi)p−−−−−−−−−−⎷.
除此之外,常用的距離還包括平方歐氏距離(
SquaredEuclideandistance
)、切比雪
夫(
Chebychev
)距離、
Block
距離、明考斯基(
Minkowski
)距離等。這裏我們就不做
介紹了。
改進後的「親疏程度」的測度
由於
Kmeans
聚類算法採用歐氏距離來表示樣本間的「親疏程度」,而歐式距離在計算
距離時採用的是循環的思想對樣本的各個分量計算距離,因此在解決大數據集的聚類問題方
面存在效率低,佔用內存大的缺陷。由於計算機的內存有限,無法存儲超過內存容量的大數
據集。因此,儘管
Kmeans
聚類算法在理論上無懈可擊,但卻無法通過計算機實現。爲此,
我們提出了一種巧妙的數據存儲方案,即
CF
樹(
ClusteringFeatureTree
)。
CF
樹是一種數據的壓縮存儲方式。樹中每個節點只存儲聚類過程計算距離所必須的匯
總統計量。
在
Kmeans
聚類算法中,關於樹節點
i
,即第
i
類的彙總統計量包括
CFi={Ni,LSi−→−,SS2i}
,依次爲節點所包含的樣本量,數值型變量值的向量和,數值型變量值的平方和。可見,節點並沒有存儲原始數據本身,因而大大減少了存儲的數據量,使得大數據集聚類具有實現的可能。
下面我們來推導用
CF
樹來存儲的數據集的歐氏距離(
Euclideandistance
)。
對於任意兩個
CF
樹,樹一:
{Xi−→|X1−→,X2−→,...,XN1−→−}
;樹二:
{Yi→|Y1→,Y2→,...,YN1−→−}
,則兩個樹之間的距離:
D=∑N1i=1∑N2j=1(Xi−→−Yj→)2N1⋅N2−−−−−−−−−−−−−−−−−−−⎷=∑N1i=1∑N2j=1(Xi−→2−2Xi−→Yj→+Yj→2)N1⋅N2−−−−−−−−−−−−−−−−−−−−−−−−−−−⎷=∑N1i=1(N2Xi−→2−2Xi−→∑N2j=1Yj→+∑N2j=1Yj→2)N1⋅N2−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−⎷=N2∑N1i=1Xi−→2−2∑N1i=1Xi−→∑N2j=1Yj→+N1∑N2j=1Yj→2N1⋅N2−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−⎷=∑N1i=1Xi−→2N1+∑N2j=1Yj→2N2−2∑N1i=1Xi−→∑N2j=1Yj→N1⋅N2−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−⎷
下面我們定義
CF
樹的存儲結構:
CF={N,∑i=1NXi−→,∑i=1NXi−→2}={N,LS−→,SS},
其中
N
代表存儲的樣本個數,
LS−→
代表數值型變量值的向量和,
SS
代表數值型變量值的平
方和。
假設現在有兩個
CF
樹:
CF1={N1,X1−→+X2−→+...+XN1−→−,X1−→2+1−→−,X1−→2+X2−→2+...+XN1−
X
N1−→−2}
=
{N1,LS1−→−,SS1}
,
L