時間序列分類(TSC)在時間序列數(shù)據(jù)挖掘任務中備受關注,已經(jīng)應用到各個領域。隨著卷積神經(jīng)網(wǎng)絡(Convolutional Neural Network, CNN)的迅速發(fā)展,基于卷積神經(jīng)網(wǎng)絡的TSC方法直到最近才開始出現(xiàn)。因此,提出了一個新的深度學習框架,使用相對位置矩陣(Relative Position Matrix,RPM)和卷積神經(jīng)網(wǎng)絡(CNN)來完成TSC任務。我們研究了一種稱為相對位置矩陣的時間序列數(shù)據(jù)表示方法將原始時間序列數(shù)據(jù)轉(zhuǎn)換為二維圖像,從而可以使用圖像識別技術。這些圖像顯示了原始時間序列數(shù)據(jù)的一些有用信息。此外,原始時間序列數(shù)據(jù)中嵌入的模式和特征被包含在轉(zhuǎn)換后的圖像中。從RPM生成的圖像中,很容易直觀地看到和解讀類內(nèi)和類間的相似性。
參考文獻:

計算步驟:
對于一個時間序列
step1:對原始時間序列數(shù)據(jù)進行zscore歸一化,得到標準正態(tài)分布
,μ是T的平均值,σ是T的標準差
step2:應用分段聚合近似(Piecewise Aggregation Approximation ,PAA)方法將Z的維數(shù)降至m。選擇合適的降維因子k,生成新的平滑時間序列
,
簡單地說,通過計算一個分段常數(shù)的平均值,將歸一化時間序列數(shù)據(jù)從n維降為m維,同時保持原始序列的近似趨勢。
step3:構造一個m × m矩陣,計算兩個時間戳之間的相對位置,將預處理后的時間序列X轉(zhuǎn)換為二維矩陣。
顯然,時間序列的每兩個時間戳都用M連接起來,以獲得它們的相對位置,M的每一行和每一列都以某一個時間戳為參照點,包含了整個時間序列的信息。此外,作為我們工作的一個優(yōu)點,RPM可以作為一種數(shù)據(jù)增強方法,通過提供時間序列的冗余特征來提高泛化能力。M的每一行顯示不同參考點的時間序列,每一列顯示前者的鏡像,這提供了一個相反的視角來查看時間序列。
step4:應用min-max歸一化將M轉(zhuǎn)換為灰度值矩陣
相對位置矩陣(Relative Position Matrix)Matlab代碼實現(xiàn)
function RPM=RelativePositionMatrix(x,k)
% 計算相對位置矩陣(Relative Position Matrix, RPM)
% 輸入:x,一維時間序列
% k,分段聚合近似(PAA)的縮減因子
% 輸出:RPM,相對位置矩陣
mu = mean(x);
delta = sqrt(var(x));
z = (x-mu)/delta;
% PAA
N = length(x);
m = ceil(N/k);
if ceil(N/k)-floor(N/k) == 0
? ? for i = 1:m
? ? ? ? X(i) = 1/k * sum(z(k*(i-1)+1:k*i));
? ? end
else
? ? for i = 1:m-1
? ? ? ? X(i) = 1/k * sum(z(k*(i-1)+1:k*i));
? ? end
? ? X(m) = 1/(N-k*(m-1)) * sum(z(k*(m-1)+1:N));
end
% 計算兩個時間戳之間的相對位置
M = repmat(X,m,1) - repmat(X',1,m);
%相對位移矩陣RPM
RPM = (M - min(M(:))) / (max(M(:))) - min(M(:)) * 255;
% 可視化
if nargout == 0
? ? imagesc(RPM);
? ? set(gcf,'Position',[300 200 450 300]); % 自行修改合適大小
? ? xlim([0,size(RPM,1)]);
? ? ylim([0,size(RPM,1)]);
? ? axis square
? ? colormap(jet); %自行修改colormap
end
end
使用方式
x=rand(1,1024);
k=4;
RelativePositionMatrix(x,k);
結(jié)果
