時間序列的聚類
在機器學習領域,聚類問題一直是乙個非常常見的問題。無論是在傳統的機器學習(machine learning)領域,還是自然語言處理(natural language processing)領域,都可以用聚類演算法做很多的事情。例如在資料分析領域,我們可以把某個物品用特徵來描述出來,例如該房子的面積,**,朝向等內容,然後使用聚類演算法來把相似的房子聚集到一起;在自然語言處理領域,通常都會尋找一些相似的新聞或者把相似的文字資訊聚集到一起,在這種情況下,可以用 word2vec 把自然語言處理成向量特徵,然後使用 kmeans 等機器學習演算法來作聚類。除此之外,另外一種做法是使用 jaccard 相似度來計算兩個文字內容之間的相似性,然後使用層次聚類(hierarchical clustering)的方法來作聚類。
本文將會從常見的聚類演算法出發,然後介紹時間序列聚類的常見演算法。
kmeans 演算法的目的是把歐氏空間
從數學語言上來說,假設已知的歐式空間點集為
上面的
層次聚類通常來說有兩種方法,一種是凝聚,另外一種是**。
所謂凝聚,其大體思想就是在一開始的時候,把點集集合中的每個元素都當做一類,然後計算每兩個類之前的相似度,也就是元素與元素之間的距離;然後計算集合與集合之前的距離,把相似的集合放在一起,不相似的集合就不需要合併;不停地重複以上操作,直到達到某個限制條件或者不能夠繼續合併集合為止。
所謂**,正好與聚合方法相反。其大體思想就是在剛開始的時候把所有元素都放在一類裡面,然後計算兩個元素之間的相似性,把不相似元素或者集合進行劃分,直到達到某個限制條件或者不能夠繼續**集合為止。
在層次聚類裡面,相似度的計算函式就是關鍵所在。在這種情況下,可以設定兩個元素之間的距離公式,例如歐氏空間中兩個點的歐式距離。在這種情況下,距離越小表示兩者之間越相似,距離越大則表示兩者之間越不相似。除此之外,還可以設定兩個元素之間的相似度。例如兩個集合中的公共元素的個數就可以作為這兩個集合之間的相似性。在文字裡面,通常可以計算句子和句子的相似度,簡單來看就是計算兩個句子之間的公共詞語的個數。
通過以上的描述,如果要做時間序列的聚類,通常來說也有多種方法來做,可以使用基於距離的聚類演算法 kmeans,也可以使用基於相似度計算的層次聚類演算法。
之前寫過很多時間序列特徵提取的方法,無論是常見的時間序列特徵,例如最大值,最小值,均值,中位數,方差,值域等內容之外。還可以計算時間序列的熵以及分桶的情況,其分桶的熵指的是把時間序列的值域進行切分,就像 lebesgue 積分一樣,檢視落入那些等分桶的時間序列的概率分布情況,就可以進行時間序列的分類。除了 binned entropy 之外,還有 sample entropy 等各種各樣的特徵。除了時域特徵之外,也可以對時間序列的頻域做特徵,例如小波分析,傅利葉分析等等。因此,在這種情況下,其實只要做好了時間序列的特徵,使用 kmeans 演算法就可以得到時間序列的聚類效果,也就是把相似的曲線放在一起。參考文章:時間序列的表示與資訊提取。
在提取時間序列的特徵之前,通常可以對時間序列進行基線的提取,把時間序列分成基線和誤差項。而基線提取的最簡單方法就是進行移動平均演算法的擬合過程,在這種情況下,可以把原始的時間序列
如果要計算時間序列的相似度,通常來說除了歐幾里得距離等
如果不考慮時間序列的「扭曲」的話,也可以直接使用歐氏距離,無論是
除此之外,我們也可以用 auto encoder 等自編碼器技術對時間序列進行特徵的編碼,也就是說該自編碼器的輸入層和輸出層是恒等的,中間層的神經元個數少於輸入層和輸出層。在這種情況下,是可以做到對時間序列進行特徵的壓縮和構造的。除了 auto encoder 等無監督方法之外,如果使用其他有監督的神經網路結構的話,例如前饋神經網路,迴圈神經網路,卷積神經網路等網路結構,可以把歸一化之後的時間序列當做輸入層,輸出層就是時間序列的各種標籤,無論是該時間序列的形狀種類還是時間序列的異常/正常標籤。當該神經網路訓練好了之後,中間層的輸出都可以作為 time series to vector 的一種模式。i.e. 也就是把時間序列壓縮成乙個更短一點的向量,然後基於 cosine 相似度等方法來計算原始時間序列的相似度。參考文章:基於自編碼器的時間序列異常檢測演算法,基於前饋神經網路的時間序列異常檢測演算法。
如果想對時間序列進行聚類,其方法是非常多的。無論是時間序列的特徵構造,還是時間序列的相似度方法,都是需要基於一些人工經驗來做的。如果使用深度學習的方法的話,要麼就提供大量的標籤資料;要麼就只能夠使用一些無監督的編碼器的方法了。本文目前初步介紹了一些時間序列的聚類演算法,後續將會基於筆者的學習情況來做進一步的撰寫工作。
聚類分析:
dynamic time warping:
pearson coefficient:
auto encoder:
word2vec:
聚類之層次聚類 基於劃分的聚類(
目錄 一層次聚類 層次聚類的原理及分類 層次聚類的流程 層次聚類的優缺點 二劃分聚類法k means kmeans演算法的原理 k均值的優缺點及分類 k means與dbscan的區別 k means注意問題 三基於密度的聚類 dbscan的概念 簇的生成原理及過程 根據資料點的密度分為三類點 db...
k means聚類,密度聚類,層次聚類優缺點
k means 優點 1,簡單,易於理解和實現 2,時間複雜度低 缺點 1,需要對均值給出定義,2,需要指定要聚類的數目 3,一些過大的異常值會帶來很大影響 4,演算法對初始選值敏感 5,適合球形聚類 層次聚類 優點 1,距離和規則的相似度容易定義,限制少 2,不需要預先制定聚類數 3,可以發現類的...
聚類總結(中) 密度聚類
密度聚類是一種基於密度的聚類方法,基於密度的聚類方法的主要思想是尋找被低密度區域分離的高密度區域。密度度量 乙個點的區域性密度有不同的度量方式 1.畫個圈,數圈內其他點個數是一種方法。2.用圈內其他點和給點半徑的比值的高斯概率密度形式,對距離核心點距離近的給大權重。3.計算圈內距離最小的前n個點到核...