2017-04-16 51 views
2

大多數聚類算法需要距離矩陣。如果數據維度較低,則創建距離矩陣很容易。但是,考慮大約8000點的時間系列呢?聚類時間序列龐大數據集的方法

for i in range(total_series): 
    for j in range(total_series): 
     dis[i][j] = distance(series[i],series[j]) 

很明顯,創建此矩陣所需的最短時間爲O(n^2)。現在,如果我們比較兩個時間序列的所有8000個點,時間複雜度將會非常高。我只是在談論對齊距離(歐幾里得)而不是一些編輯距離。

由於我們有大約50,000個時間序列進行聚類,O(n^2)對於那些for循環來說將會非常高。我需要通過一些索引或預處理技術在最短時間內計算距離函數。請注意,距離函數將逐點比較。

有人可以提出一些技巧,以便我們可以通過一些預處理找到兩個時間序列之間的距離小於O(時間序列的長度)?或者建議一些方法進行聚類而不創建時間複雜度爲O(n^2)的距離矩陣?

回答

0

由於歐幾里得距離的對稱性,可以計算一個具有O(n^2/2)複雜度的三角矩陣