1. 程式人生 > >時間序列聚類

時間序列聚類

首先,聚類分為硬聚類(hard clustering)和軟聚類(soft clustering),硬聚類將資料分割為幾個確定的類別,軟聚類為每個資料點指定幾個類別。硬聚類又可以分為分層聚類方法(hierarchical clustering methods)和平穩聚類方法(flat clustering methods),分層聚類方法產生資料的巢狀網狀分割,平穩聚類產生一個單一的分割,K-MEANS屬於平穩聚類。

下面,我們介紹一下分層聚類演算法和K-MEANS演算法:

分層聚類演算法就是對給定資料物件的幾何進行層次分解,根據分層分解採用的分解策略,分層聚類法又可以分為凝聚的(agglomerative)和分裂的(divisive)分層聚類。

1.凝聚的分層聚類

它採用自底向上的策略,首先將每一個物件作為一個類,然後根據某種度量(如2個當前類中心點的距離)將這些類合併為較大的類,直到所有的物件都在一個類中,或者是滿足某個終止條件時為止,絕大多數分層聚類演算法屬於這一類,它們只是在類間相似度的定義上有所不同。

2.分裂的分層聚類

它採用與凝聚的分層聚類相反的策略,自頂向下,它首先將所有的物件置於一個類中,然後根據某種度量逐漸細分為較小的類,直到每一個物件自成一個類,或者達到某個終止條件(如達到希望的類個數,或者2個最近的類之間的距離超過了某個閾值)。

分層聚類雖然比較簡單,但經常會遇到選擇合併點或者分裂點的問題。這種選擇非常關鍵,因為一旦一組物件被合併或者分裂,下一步的工作就是在新形成的類上進行,已做的處理不能撤銷,類之間也不能交換物件。如果合併或者分裂的決定不合適,就可能得出低質量的聚類結果。而且,分層聚類演算法沒有很好的可伸縮性,在決定合併或者分裂之前需要檢查和估算大量的物件和類。

k-means演算法

k-means演算法,也被稱為k-均值或k-平均。該演算法首先隨機地選擇k個物件作為初始的k個簇的質心;然後對剩餘的每個物件,計算其與各個質心的距離,將它賦給最近的簇,然後重新計算每個簇的質心;這個過程不斷重複,直到準則函式收斂。通常採用的準則函式為平方誤差和準則函式,即SSE(sum of the squared error),其定義如下:


SSE是資料庫所有的物件的平方誤差總和,p為資料物件,是簇的平均值。這個準則函式使生成的結果儘可能的緊湊和獨立。

下面給出k-means演算法的具體步驟:


距離D的計算方法

1.歐幾里得距離


其意義就是兩個元素在歐式空間中的集合距離,因為其直觀易懂且可解釋性強,被廣泛用於標識兩個標量元素的相異度。

2.曼哈頓距離


3.閔可夫斯基距離


k-means演算法的效能分析

主要優點:

1)是解決聚類問題的一種經典演算法,簡單、快速。

2)對處理大資料集,該演算法是相對可伸縮和高效率的。因為他的複雜度是O(nkt),其中,n是所有物件的數目,k是簇的數目,t是迭代的次數。通常k遠小於n且t遠小於n。

3)當結果簇是密集的,而簇與簇之間區別明顯時,它的效果最好。

主要缺點:

1)必須事先給出k值,但很多時候並不知道資料集應該分為多少個類別才最合適。聚類結果對初值敏感,對於不同的初始值,可能會導致不同結果。

2)初始聚類中心的選擇對聚類結果有較大的影響,一旦初始值選擇的不好,可能無法得到有效的聚類結果。可以多設定一些不同的初值,對比最後的運算結果,一直到結果趨於穩定來解決這一問題,但比較耗時,浪費資源。

3)在簇的平均值被定義的情況下才能使用,這對於處理符號屬性的資料不適用。對於噪聲和孤立點資料是敏感的,少量的該類資料能夠對平均值產生極大的影響。