Kmeans聚類算法

功能及可應用領域

聚類分析將大量數據劃分爲性質相同的子類,便於瞭解數據的分佈情況。因此,它廣泛
應用於模式識別、圖像處理、數據壓縮等許多領域,例如:

  • 在市場分析中,通過聚類分析能幫助決策者識別不同特徵的客戶羣,以及各客戶羣的
    行爲特徵;
  • 在生物工程研究中,聚類分析能夠用於推導動植物的分類,按照功能對基因進行劃分
    並獲取種羣中的固有結構特徵;
  • 在非關係數據庫領域(如空間數據庫領域),聚類分析能夠識別具有相同地理特徵的區
    域以及該區域的環境和人的特徵;
  • w e b 信息檢索領域,聚類分析能夠對web文檔進行分類,提高檢索效率。

等等,這裏就不一一列舉了。

輸入數據及要求

在進行 K m e a n s 聚類時,必須對數據進行預處理。

  • 注意數據屬性在向量空間的規範化。
  • 缺失屬性值的處理:直接刪除。
  • 對噪聲的處理:在訓練的過程中對噪聲的元組直接刪除掉。
  • 聚類變量值不應有數量級上的差異。
  • 對分類型變量的處理。由於 K m e a n s 聚類算法的距離計算是基於數值的,爲符合計
    算要求需要對分類型聚類變量進行預處理。(下文我們有專門的章節來介紹分類型變量的處
    理)

算法原理

K m e a n s 聚類也稱快速聚類,屬於覆蓋型數值劃分聚類算法。它得到的聚類結果,每
個樣本點都唯一屬於一個類,而且聚類變量爲數值型,並採用劃分原理進行聚類。

K m e a n s 聚類涉及兩個主要方面的問題:

  • 如何測度樣本的「親疏程度」;
  • 如何進行聚類。

下面將重點討論這些問題。

K m e a n s 對「親疏程度」的測度

通常,「親疏程度」的測度一般都有兩個角度:第一,數據間的相似程度;第二,數據
間的差異程度。衡量相似程度一般可採用簡單相關係數或等級相關係數等,差異程度則一般
通過某種距離來測度。 K m e a n s 聚類方法採用的是第二個測度角度。

爲有效測度數據之間的差異程度, K m e a n s 聚類算法將所收集到具有 p 個變量的樣本
數據,看成 p 維空間上的點,並以此定義某種距離。通常,點與點之間的距離越小,意味
着它們越「親密」,差異程度越小,越有可能聚成一類;相反,點與點之間的距離越大,意
味着它們越「疏遠」,差異程度越大,越有可能分屬不同的類。

由於 K m e a n s 聚類方法所處理的聚類變量均爲數值型,因此,它將點與點之間的距離
定義爲歐氏距離( E u c l i d e a n d i s t a n c e ),即數據點 x y 間的歐氏距離是兩個點的 p 個變量
之差的平方和的算術平方根,數學定義爲

E u c l i d ( x , y ) = i = 1 p ( x i y i ) p .

除此之外,常用的距離還包括平方歐氏距離( S q u a r e d E u c l i d e a n d i s t a n c e )、切比雪
夫( C h e b y c h e v )距離、 B l o c k 距離、明考斯基( M i n k o w s k i )距離等。這裏我們就不做
介紹了。

改進後的「親疏程度」的測度

由於 K m e a n s 聚類算法採用歐氏距離來表示樣本間的「親疏程度」,而歐式距離在計算
距離時採用的是循環的思想對樣本的各個分量計算距離,因此在解決大數據集的聚類問題方
面存在效率低,佔用內存大的缺陷。由於計算機的內存有限,無法存儲超過內存容量的大數
據集。因此,儘管 K m e a n s 聚類算法在理論上無懈可擊,但卻無法通過計算機實現。爲此,
我們提出了一種巧妙的數據存儲方案,即 C F 樹( C l u s t e r i n g F e a t u r e T r e e )。

C F 樹是一種數據的壓縮存儲方式。樹中每個節點只存儲聚類過程計算距離所必須的匯
總統計量。

K m e a n s 聚類算法中,關於樹節點 i ,即第 i 類的彙總統計量包括 C F i = { N i , L S i , S S i 2 } ,依次爲節點所包含的樣本量,數值型變量值的向量和,數值型變量值的平方和。可見,節點並沒有存儲原始數據本身,因而大大減少了存儲的數據量,使得大數據集聚類具有實現的可能。

下面我們來推導用 C F 樹來存儲的數據集的歐氏距離( E u c l i d e a n d i s t a n c e )。

對於任意兩個 C F 樹,樹一: { X i | X 1 , X 2 , . . . , X N 1 } ;樹二: { Y i | Y 1 , Y 2 , . . . , Y N 1 } ,則兩個樹之間的距離:

D = i = 1 N 1 j = 1 N 2 ( X i Y j ) 2 N 1 N 2 = i = 1 N 1 j = 1 N 2 ( X i 2 2 X i Y j + Y j 2 ) N 1 N 2 = i = 1 N 1 ( N 2 X i 2 2 X i j = 1 N 2 Y j + j = 1 N 2 Y j 2 ) N 1 N 2 = N 2 i = 1 N 1 X i 2 2 i = 1 N 1 X i j = 1 N 2 Y j + N 1 j = 1 N 2 Y j 2 N 1 N 2 = i = 1 N 1 X i 2 N 1 + j = 1 N 2 Y j 2 N 2 2 i = 1 N 1 X i j = 1 N 2 Y j N 1 N 2

下面我們定義 C F 樹的存儲結構:

C F = { N , i = 1 N X i , i = 1 N X i 2 } = { N , L S , S S } ,

其中 N 代表存儲的樣本個數, L S 代表數值型變量值的向量和, S S 代表數值型變量值的平
方和。

假設現在有兩個 C F 樹:

C F 1 = { N 1 , X 1 + X 2 + . . . + X N 1 , X 1 2 + X 2 1 , L
相關文章
相關標籤/搜索