Anda di halaman 1dari 10

[image processing]

January 30, 2012

DYNAMIC TIME WARPING ALGORITHM (DTW)

DTW [Sakoe , H. & S. Chiba] adalah algoritma yang menghitung warping path yang optimal antara dua runtun data sehingga outputnya adalah nilai-nilai warping path dan jarak diantara kedua runtun tersebut. DTW atau Dynamic Time Wrapping merupakan algoritma yang sudah dikenal luas. Algoritma ini diperkenalkan sekitar tahun 60an, baru sekitar tahun 70an secara luas digunakan untuk aplikasi pengenalan suara (speech recognition), pengenalan tulisan tangan dan tandatangan, data mining, pengklusteran, pengolahan isyarat dan musik dan banyak lagi.

Algoritma DTW disebut juga sebagai non-linear sequence alignment, sehingga algoritma ini lebih realistis untuk digunakan dalam mengukur kemiripan suatu pola (pattern/template matching) ketimbang hanya menggunakan algoritma pengukuran linier seperti Euclidean Distance, Manhattan, Canberra, Mexican Hat dan lainnya. Data yang diolah selalu berada dalam kawasan waktu, sehingga rentetan data yang kita punya dianggap bervariasi terhadap waktu.

Algoritma DTW yang kerap digunakan sebagai pengukur kemiripan pola, akan mengukur kemiripan dari dua buah data. Data ini biasanya merupakan feature atau ciri dari data asli yang ukurannya lebih besar. Algoritma ini terkenal sangat efisien dalam mengukur jarak kemiripan antar dua data yang meminimalkan pengaruh pergeseran dan distorsi dalam waktu sehingga walau berbeda phase, masih bisa dideteksi. DTW bisa dipisahkan menjadi classical dan novel. Kebanyakan pemisahan itu semata-mata berdasar pada objective function nya. Banyak ahli telah merumuskan objective function yang baru ditinjau dari banyak sisi. Dalam artikel ini kita akan bahas hanya DTW classical.

Anggap kita memiliki dua buah runtun data ( , , , … , ) dan ( , , , … , ) yang tentu saja panjang runtun data bisa berbeda, berarti n=m atau n≠m. Tahap awal dari algoritma DTW adalah menghitung jarak local (local distance) antar elemen dari kedua runtun menggunakan teknik penghitungan jarak yang berbeda, biasanya yang digunakan adalah Euclidean Distance. Dalam artikel ini kita akan menggunakan teknik tersebut dan tidak akan dijelaskan karena merupakan cara yang sudah umum digunakan. Maka local distance nya dihitung dengan mencari nilai absolute dari selisih kedua runtun data yang dirumuskan dengan

= ,

= 1: = 1:

Langkah selanjutnya merupakan point-point yang harus kita lewati untuk menemukan warping path.

[janshendry@gmail.com{ee&it ugm, indonesia}] Page 1

[janshendry@gmail.com{ee&it ugm, indonesia}]

Page 1

[janshendry@gmail.com{ee&it ugm, indonesia}] Page 1

[image processing]

- Baris pertama

- Kolom pertama

- Elemen lainnya

1,

, 1

, ,

, ,

1,

1,

January 30, 2012

( , , mi n 1, 1 , 1, , , 1 , 1, , 1,

Warping path merupakan jalur/ lintasan atau path yang melalui matriks yan g berisi jarak

minimal (minimal distance) dari e lemen , hingga elemen , yang terdir i dari elemen-

elemen , itu sendiri.

Ada 3 ketentuan dalam algoritma DTW baik yang classical maupun novel (baru).

Monotonicity

Artinya proses mengikuti urutan berdasar waktu.

Tujuannya agar proses b isa dilakukan straightforward sehingga kita ti dak mengolah

data yang sama berulangk ali (tidak terjadi perulangan).

data yang sama berulangk ali (tidak terjadi perulangan). Continuity melompat ke indeks yang jaraknya jau h.
data yang sama berulangk ali (tidak terjadi perulangan). Continuity melompat ke indeks yang jaraknya jau h.

Continuity

melompat ke

indeks yang jaraknya jau h. Jarak antara data yang pertama dengan yan g selanjutnya

Artinya indeks dari data y ang akan diproses selanjutnya tidak serta-merta

adalah maksimal 1.

Tujuannya agar tidak ada

dalam proses.

2 1 1

bagian dari data yang memang penting yang ti dak diikutkan

maksimal 1. Tujuannya agar tidak ada dalam proses. 2 1 1 bagian dari data yang memang

[image processing]

January 30, 2012

[image processing] January 30, 2012 Boundary Conditions Artinya titik awal dan titi k akhir dari warping
[image processing] January 30, 2012 Boundary Conditions Artinya titik awal dan titi k akhir dari warping

Boundary Conditions Artinya titik awal dan titi k akhir dari warping path adalah titik-titik awal

sekuen/rangkaian data (s equence). Ini sebuah

1,1 , Tujuannya data yang kita punya diproses seluruhnya mulai dari awal hing ga akhir.

dan akhir dari

keharusan

mulai dari awal hing ga akhir. dan akhir dari keharusan Ada 1 tambahan yang jarang saya
mulai dari awal hing ga akhir. dan akhir dari keharusan Ada 1 tambahan yang jarang saya

Ada 1 tambahan yang jarang saya temukan di banyak artikel.

Warping Window Dalam DTW, alignment y ang bagus adalah yang tidak terlalu jauh dari antar ke dua vektor data y ang akan diolah. Untuk itu perlu Tujuannya agar

garis diagonal

yang tidak terlalu jauh dari antar ke dua vektor data y ang akan diolah. Untuk itu
yang tidak terlalu jauh dari antar ke dua vektor data y ang akan diolah. Untuk itu
yang tidak terlalu jauh dari antar ke dua vektor data y ang akan diolah. Untuk itu

[image processing]

January 30, 2012

Berikut ini adalah algoritma pemrograman yang bisa diikuti untuk menghasilkan code dari DTW classical.

- Bagian ini disebut dengan AccumulatedCostMatrix.

- Bagian ini disebut dengan AccumulatedCostMatrix. ketika Accumulated Cost Matrix sudah terbentuk, warping

ketika Accumulated Cost Matrix sudah terbentuk, warping path bisa ditemukan yang dimulai dari point paling akhir (N,M) melangkah hingga ke point awal (1,1). Perhatikan ilustrasi gambar di bawah ini

yang dimulai dari point paling akhir (N,M) melangkah hingga ke point awal (1,1). Perhatikan ilustrasi gambar
yang dimulai dari point paling akhir (N,M) melangkah hingga ke point awal (1,1). Perhatikan ilustrasi gambar

[image processing]

January 30, 2012

- Bagian ini disebut sebagai OptimalWarpingPath yang tujuannya untuk menghitung Optimal Path dari matriks yang terbentuk oleh AccumulatedCostMatrix.

Path dari matriks yang terbentuk oleh AccumulatedCostMatrix. Program Matlab untuk menghitung Optimal Path dengan

Program Matlab untuk menghitung Optimal Path dengan menggunakan DTW.

Ada 2 versi yang saya buat, yang pertama mengikuti cara yang dijelaskan di artikel ini dan yang kedua memberikan visual yang berbeda. Tapi algoritma yang dipakai persis sama.

Program pertama

% classical DTW (dynamic time warping) algorithm

% jans hendry

% EE of universitas gadjah mada

% Indonesia

clear all;

close all;

clc;

%% Mempersiapkan data

% X = 1 + (-1-1).*rand(20,1);

% Y = 1 + (-1-1).*rand(20,1);

% t=0:1/10:pi;

% Y = sin(t);

% X = sin(t);

% X = cos(t); % X = cos(2*t); X = [3 -13 14 -7 9
%
X = cos(t);
%
X = cos(2*t);
X
= [3 -13 14 -7 9 -2];
Y
= [-2 10 -10 15 -13 20 -5 14 2];
subplot(222),

[image processing]

plot(1:length(X),X,'-ro',

'MarkerFaceColor','g',

'MarkerSize',5);

title('Feature 1'); xlabel('x'); axis off

subplot(223),

plot(Y,1:length(Y),'-go',

'MarkerFaceColor','r',

'MarkerSize',5);

title('Feature 2'); ylabel('x'); axis off

%%

%% AccumulatedCostMatrix (X;Y;C)

n

= length(X);

m

= length(Y);

%

c = zeros(n,m);

%

for ii = 1:n

%

for jj = 1:m

%

c(ii,jj) = (X(ii) - Y(jj))^2;

% end

% end

c=abs((repmat(X(:),1,m)-repmat(Y(:)',n,1)));

dtw = zeros(n,m);

% kolom pertama

% for ii = 2:n

% dtw(ii,1) = dtw(ii-1,1) + c(ii,1);

% end

dtw(:,1) = cumsum(c(:,1));

% baris pertama

% for jj = 2:m

% dtw(1,jj) = dtw(1,jj-1) + c(1,jj);

% end

dtw(1,:) = cumsum(c(1,:));

January 30, 2012

for ii = 2:n for jj = 2:m dtw(ii,jj) = c(ii,jj) + min([dtw(ii-1,jj),dtw(ii,jj-1),dtw(ii-1,jj-1)]);

end

end temp = dtw; %%

%% OptimalPath

path = [];

n

= size(dtw,1);

m

= size(dtw,2);

while (n + m > 2) if n == 1

m = m - 1;

elseif m == 1

n = n - 1;

else

minimal = min([dtw(n-1,m),dtw(n,m-1),dtw(n-1,m-1)]); if dtw(n-1,m) == minimal

n = n-1;

elseif dtw(n,m-1) == minimal

m = m-1;

[janshendry@gmail.com{ee&it ugm, indonesia}] Page 6

[janshendry@gmail.com{ee&it ugm, indonesia}]

Page 6

[janshendry@gmail.com{ee&it ugm, indonesia}] Page 6

[image processing]

January 30, 2012

else

 

n

= n-1;

m

= m-1;

end

end path = [path;n,m];

end path = [size(dtw,1),size(dtw,2);path];

jalur = zeros(1,size(path,1)); for k1=1:size(path,1) jalur(k1) = dtw(path(k1,1),path(k1,2));

end jumpoints = size(path,1);

subplot(224),

plot(path(:,2),path(:,1),'-.k*',

'MarkerFaceColor','b',

'MarkerSize',5);

title('Optimal Path'); axis off %%

%% menampilkan visualisasi dari optimal path

figure,

mm=size(dtw,1);

nn=size(dtw,2);

[MM NN]=meshgrid(1:mm,1:nn); plot(NN,MM,'ro', 'MarkerFaceColor','r',

'MarkerSize',1);

for k1 = 1:mm for k2 = 1:nn

text(k2,k1,sprintf('%d',dtw(k1,k2)));

end

end hold on;

plot(path(:,2),path(:,1),'-.ks',

'MarkerFaceColor','r',

'MarkerSize',5);

title('Optimal Path'); axis([0 nn+1 0 mm+1]); hold off; axis off;

%%

Hasil eksekusi

,5); title( 'Optimal Path' ); axis([0 nn+1 0 mm+1]); hold off ; axis off ; %%
,5); title( 'Optimal Path' ); axis([0 nn+1 0 mm+1]); hold off ; axis off ; %%
,5); title( 'Optimal Path' ); axis([0 nn+1 0 mm+1]); hold off ; axis off ; %%

[image processing]

Program kedua

January 30, 2012

% classical DTW (dynamic time warping) algorithm

% jans hendry

% EE of universitas gadjah mada

% Indonesia

clear all;

close all;

clc;

%% Mempersiapkan data

% jenis-jenis input test

% X = 1 + (-1-1).*rand(5,1);

% Y = 1 + (-1-1).*rand(5,1);

% t1 = 0:1/1:pi;

% t2 = 0:1/1:pi;

% Y = sin(t1);

% X = sin(t2);

%

X = cos(t);

%

X = cos(2*t);

X

= [3 -13 14 -7 9 -2];

Y

= [-2 10 -10 15 -13 20 -5 14 2];

n

= length(X);

m

= length(Y);

%

plotting

subplot(222),

plot(1:length(Y),Y,'-ro',

'MarkerFaceColor','g',

'MarkerSize',5);

title('Y');

xlabel('time');

axis off;

subplot(223),

plot(fliplr(X),1:length(X),'-go',

'MarkerFaceColor','r',

'MarkerSize',5);

title('X');

ylabel('time');

axis off

%%

%% AccumulatedCostMatrix (X;Y;C)

% local distance

c = abs((repmat(X(:),1,m)-repmat(Y(:)',n,1))); dtw = zeros(size(c));

% kolom pertama

dtw(:,1) = cumsum(c(:,1));

% baris pertama

dtw(1,:) = cumsum(c(1,:));

% global distance

for ii = 2:n for jj = 2:m dtw(ii,jj) = c(ii,jj) + min([dtw(ii-1,jj),dtw(ii,jj-1),dtw(ii-1,jj-1)]);

end

%%

end

[janshendry@gmail.com{ee&it ugm, indonesia}] Page 8

[janshendry@gmail.com{ee&it ugm, indonesia}]

Page 8

[janshendry@gmail.com{ee&it ugm, indonesia}] Page 8
[image processing] January 30, 2012 %% OptimalPath path = []; n = size(dtw,1); m =
[image processing]
January 30, 2012
%% OptimalPath
path = [];
n
= size(dtw,1);
m
= size(dtw,2);
while (n + m > 2)
if n == 1
m
= m - 1;
elseif m == 1
n
= n - 1;
else
minimal = min([dtw(n-1,m),dtw(n,m-1),dtw(n-1,m-1)]);
if dtw(n-1,m) == minimal
n
= n-1;
elseif dtw(n,m-1) == minimal
m
= m-1;
else
n
= n-1;
m
= m-1;
end
end
path = [path; n,m];
end
path = [size(dtw,1),size(dtw,2); path];
jumpoints = size(path,1);
subplot(224),
plot(path(:,2),6+1-path(:,1),'-.ks',
'MarkerFaceColor','r',
'MarkerSize',5);
title('Optimal Path');
axis off
%%
%% menampilkan visualisasi dari optimal path
figure,
mm=size(dtw,1);
nn=size(dtw,2);
[MM NN]=meshgrid(1:mm,1:nn);
plot(NN,MM,'ro',
'MarkerFaceColor','r',
'MarkerSize',1);
for k1=mm:-1:1
for k2=nn:-1:1
text(k2,mm-k1+1,sprintf('%d',dtw(k1,k2)));
end
end
hold on;
plot(path(:,2),6-path(:,1)+1,'-.ks',
'MarkerFaceColor','r',
'MarkerSize',5);
title('Optimal Path');
axis([0 nn+1 0 mm+1]);
hold off;
axis off;
%%
[janshendry@gmail.com{ee&it ugm, indonesia}]
Page 9

[image processing]

Hasil eksekusi

[image processing] Hasil eksekusi January 30, 2012 Semoga bisa sedikit membantu anda dalam memahami DTW. Aplikasi

January 30, 2012

[image processing] Hasil eksekusi January 30, 2012 Semoga bisa sedikit membantu anda dalam memahami DTW. Aplikasi

Semoga bisa sedikit membantu anda dalam memahami DTW. Aplikasi dari DTW akan dibahas pada projek speaker recognition dan juga projek speech recognition pada artikel berikutnya.

@thanks…

Sources:

Dynamic Time Warping Algorithm Review Pavel Senin Information and Computer Science Department University of Hawaii at Manoa Honolulu, USA

Dynamic Time Warping Algorithm for Gene Expression Time Series Elena Tsiporkova

Dynamic Programming Algorithms in Speech Recognition Titus Felix FURTUNĂ Academy of Economic Studies, Bucharest

Dynamic Programming Algorithms in Speech Recognition Titus Felix FURTUNĂ Academy of Economic Studies, Bucharest