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 nm. 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

[image processing]

January 30, 2012

Baris pertama

Kolom pertama

Elemen lainnya (

Warping path merupakan jalur/lintasan atau path yang melalui matriks yang berisi jarak minimal (minimal distance) dari elemen elemen itu sendiri. hingga elemen yang terdiri dari elemenelemen

Ada 3 ketentuan dalam algoritma DTW baik yang classical maupun novel (baru). Monotonicity Artinya proses mengikuti urutan berdasar waktu.

Tujuannya agar proses bisa dilakukan straightforward sehingga kita tidak mengolah data yang sama berulangkali (tidak terjadi perulangan).

Continuity Artinya indeks dari data yang akan diproses selanjutnya tidak serta-merta melompat ke merta indeks yang jaraknya jauh. Jarak antara data yang pertama dengan yang selanjutnya adalah maksimal 1.

Tujuannya agar tidak ada bagian dari data yang memang penting yang tidak diikutkan dalam proses.

[image processing]

January 30, 2012

Boundary Conditions tik Artinya titik awal dan titik akhir dari warping path adalah titik-titik awal dan akhir dari sekuen/rangkaian data (sequence). Ini sebuah keharusan...

Tujuannya data yang kita punya diproses seluruhnya mulai dari awal hingga akhir. punya

Ada 1 tambahan yang jarang saya temukan di banyak artikel. Warping Window Dalam DTW, alignment yang bagus adalah yang tidak terlalu jauh dari garis diagonal antar ke dua vektor data yang akan diolah. Untuk itu perlu Tujuannya agar

[image processing]

January 30, 2012

Berikut ini adalah algoritma pemrograman yang bisa diikuti untuk menghasilkan code dari DTW classical. Bagian ini disebut dengan AccumulatedCostMatrix.

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

[image processing]

January 30, 2012

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

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 Y 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); = [3 -13 14 -7 9 -2]; = [-2 10 -10 15 -13 20 -5 14 2];

subplot(222),

[image processing]

January 30, 2012

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,:)); 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

[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

[image processing]

January 30, 2012

Program kedua
% % % % classical DTW (dynamic time warping) algorithm jans hendry EE of universitas gadjah mada Indonesia

clear all; close all; clc; %% Mempersiapkan data % % % % % % % % % X Y 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); = [3 -13 14 -7 9 -2]; = [-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

[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]

January 30, 2012

Hasil eksekusi

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

Anda mungkin juga menyukai