1. 程式人生 > >讓你看懂聚類分析

讓你看懂聚類分析

目錄

1.聚類分析概述
2.各種距離的定義
2.1 樣本相似性度量
2.2 類與類間的相似性度量
2.3 變數間的相似度度量
3.劃分聚類
4.層次聚類

1.聚類分析概述

聚類分析是一種定量方法,從資料分析的角度看,它是對多個樣本進行定量分析的多元統計分析方法,可以分為兩種:

  • 對樣本進行分類稱為Q型聚類分析
  • 對指標進行分類稱為R型聚類分析

從資料探勘的角度看,又可以大致分為四種:

  • 劃分聚類
  • 層次聚類
  • 基於密度的聚類
  • 基於網格的聚類

本篇文章將從資料探勘的角度來攬述,但也會借鑑數學建模的部分思想。

無論是從那個角度看,其基本原則都是:

先來看一下從資料探勘的角度看,這四種聚類方法有什麼不同。

劃分聚類:給定一個n個物件的集合,劃分方法構建資料的k 個分割槽,其中每個分割槽表示一個族(族)。大部分劃分方法是基於距離的,給定要構建的k個分割槽數,劃分方法首先建立一個初始劃分,然後使用一種迭代的重定位技術將各個樣本重定位,直到滿足條件為止。

層次聚類:層次聚類可以分為凝聚和分裂的方法;凝聚也稱自底向上法,開始便將每個物件單獨為一個族,然後逐次合併相近的物件,直到所有組被合併為一個族或者達到迭代停止條件為止。分裂也稱自頂向下,開始將所有樣本當成一個族,然後迭代分解成更小的值。

基於密度的聚類:其主要思想是隻要“鄰域“中的密度(物件或資料點的數目)超過某個閥值,就繼續增長給定的族。也就是說,對給定族中的每個資料點,在給定半徑的鄰域中必須包含最少數目的點。這樣的主要好處就是過濾噪聲,剔除離群點。

基於網格的聚類:它把物件空間量化為有限個單元,形成一個網格結構,所有的聚類操作都在這個網格結構中進行,這樣使得處理的時間獨立於資料物件的個數,而僅依賴於量化空間中每一維的單元數。

劃分聚類是基於距離的,可以使用均值或者中心點等代表族中心,對中小規模的資料有效;而層次聚類是一種層次分解,不能糾正錯誤的合併或劃分,但可以整合其他的技術;基於密度的聚類可以發現任意形狀的族,族密度是每個點的“鄰域“內必須具有最少個數的點,可以過濾離群點;基於網格的聚類使用一種多解析度網格資料結構,能快速處理資料。

但在目前的工業應用中,主要是劃分聚類和層次聚類的應用,所以接下來的內容主要在這幾個方面。

2.各種距離的定義

2.1 樣本相似性度量
要用數量化的方法對事物進行分類,就要用數量化的方法來定義每個樣本的相似程度,這個相似程度在數學上可以稱之為距離,最常用的閔氏距離

dp(x,y)=[k=1p|xkyk|q]1q q=1,2,q+ 時,可以分別得到:
d1(x,y)=[k=1p|xkyk|](1) d2(x,y)=[k=1p|xkyk|2]12(2) d(x,y)=max1kp|xkyk|(3) 其中最常用的又是歐式距離,因為當座標軸進行正交旋轉的時候,歐式距離是保持不變的,而很多演算法,都是需要變換座標軸的。

  • 缺點1:閔氏距離沒有考慮樣本的各指標的數量級水平。當樣本的各指標數量級相差懸殊時,該距離不合適。
  • 解決方法:在計算距離之前,先把所有指標都轉化為統一的分佈內,即標準化。

  • 缺點2:使用歐式距離要求各座標對距離的貢獻應該是同等的,且變差大小也是相同的,如果變差不同,則不太適用。
    比如在擇偶時衡量一個男性的指標,假如是身高和收入水平,一個人是1.5米,收入6000,另一個人是1.8米,收入5500,這兩個人的兩個指標的變差差別就很大,不好用歐式距離。

  • 解決方法2:將歐式距離進行一定的改寫:

    d2(xik,xjk)=[k=1pxikxjkskk2]12 其中 skk 表示變數k的標準差,其實就是為了調整變數的變差。

與閔氏距離相似的還有馬氏距離,它是對閔氏距離的進一步調優:

d2ij(M)=(XiXj)Tϵ1(XiXj) 其中 ϵ1 表示協方差矩陣的逆,可以證明它對一切線性變換是不變的,故不受量綱的影響,它不僅對自身的變差做了調整,還對指標的相關性也做了考慮,非常適用於兩個未知樣本集的相似度計算。

2.2 類與類間的相似性度量
如果有兩個樣本類 G1,G2 ,可以用下面的一系列方法度量他們之間的距離:

D(G1,G2)=minxiG1yiG2{d(xi,yi)}(2.2.1) 直觀理解為兩個類中最近兩點之間的距離。 D(G1,G2)=maxxiG1yiG2{d(xi,yi)}(2.2.2) 直觀理解為兩個類中最遠離兩點間的距離 D(G1,G2)=d(x