Pencarian kesamaan antar deret waktu di Matlab. Mungkin ? Saya tidak dapat menemukan implementasi R-tree di matlab

Saya ingin menerapkan pencarian kesamaan di matlab. Saya ingin tahu apakah itu mungkin?

Rencana saya adalah menggunakan 2 pengukuran kesamaan yang populer yaitu Euclidean Distance dan Dynamic Time Warping. Kedua hal ini akan diterapkan pada kumpulan data deret waktu. Pertanyaan saya saat ini adalah bagaimana saya bisa mengevaluasi kinerja dan akurasi pengukuran keduanya? Saya melihat beberapa literatur mengatakan saya harus menggunakan algoritma K-NN.

Kemudian, saya berencana menerapkan reduksi dimensi pada kumpulan data deret waktu. Setelah mengurangi dimensi dataset. Saya perlu mengindeks kumpulan data menggunakan R-tree atau teknik pengindeksan apa pun yang tersedia.

Namun masalah saya adalah untuk melakukan ini, saya memerlukan kode matlab R-tree yang hampir tidak dapat saya temukan di internet ...

Saya menyadari bahwa sebagian besar implementasi pencarian kesamaan ada di C++, C dan Java ... Tapi saya tidak paham dengan itu. Saya berharap saya bisa menerapkan ini di Matlab... Adakah Guru yang bisa membantu saya dalam hal ini?

Juga evaluasi seperti apa yang dapat saya lakukan untuk mengevaluasi kinerja setiap algoritma.

Terima kasih


person Jaz    schedule 24.07.2010    source sumber


Jawaban (2)


Baru-baru ini (saya yakin R2010a), MATLAB menambahkan fungsi baru untuk k-Nearest Neighbor (kNN) mencari menggunakan KD-tree (a pengindeksan spasial mirip dengan R-tree) ke Kotak Alat Statistik. Contoh:

load fisheriris                            % Iris dataset
Q = [6 3 4 1 ; 5 4 3 2];                   % query points

% build kd-tree
knnObj = createns(meas, 'NSMethod','kdtree', 'Distance','euclidean');

% find k=5 Nearest Neighbors to Q
[idx Dist] = knnsearch(knnObj, Q, 'K',5);

Lihat halaman ini untuk deskripsi yang bagus.

Juga jika Anda memiliki Kotak Alat Pemrosesan Gambar, itu berisi (untuk waktu yang lama sekarang) implementasi pencarian kd-tree dan kNN. Itu adalah fungsi pribadi:

[matlabroot '\images\images\private\kdtree.m']
[matlabroot '\images\images\private\nnsearch.m']

Untuk membandingkan kedua pendekatan Anda (Dynamic Time Warping dan Jarak Euclidean), Anda dapat merancang masalah klasifikasi klasik; diberi satu set rangkaian waktu pelatihan/pengujian berlabel, tugasnya adalah memprediksi label setiap rangkaian pengujian dengan menemukan yang paling mirip menggunakan kNN lalu memprediksi kelas mayoritas. Untuk mengevaluasi kinerja, gunakan salah satu ukuran klasifikasi standar seperti akurasi/kesalahan, dll.

person Amro    schedule 26.07.2010
comment
Terima kasih atas jawaban informatif Anda. Saya cukup pendatang baru di bidang ini. Jadi mohon bersabar. 1) Apakah Anda merekomendasikan saya menggunakan matlab untuk implementasi pencarian kesamaan atau haruskah saya mengimplementasikan menggunakan Java atau c++? 2) Apakah pengindeksan wajib setelah pengurangan dimensi? 3) Dapatkah Anda membantu saya dengan menjelaskan secara detail tentang evaluasi yang Anda usulkan? Output dari pencarian kesamaan saya akan berupa kumpulan deret waktu yang mirip dengan deret waktu kueri. Bagaimana caranya move on dari titik ini untuk evaluasi? Mengingat saya ingin menerapkannya pada beberapa jenis data seperti data stok, data EKG. - person Jaz; 02.08.2010
comment
1) Saya sarankan Anda tetap menggunakan bahasa apa pun yang Anda rasa lebih nyaman. 2) Inti dari pengindeksan adalah untuk mempercepat pencarian, jadi untuk sejumlah besar rangkaian waktu, kita tidak perlu membandingkan semuanya, sebaliknya kita mendapatkan satu set kandidat dengan R-tree. Satu hal yang perlu diingat adalah untuk dimensi yang lebih besar dari 20, pengindeksan spasial akan diturunkan menjadi pencarian linier. 3) Seperti yang saya jelaskan, Anda cukup mengambil label mayoritas dari kumpulan kandidat rangkaian waktu yang dikembalikan, dan membandingkannya dengan label sebenarnya; jika cocok, itu klasifikasi yang benar, jika tidak, kesalahan. - person Amro; 02.08.2010
comment
Terima kasih, saya memutuskan untuk melakukan pencarian kesamaan sederhana. Saya berencana untuk menggunakan pencarian rentang di mana jarak apa pun yang dihitung dalam batas kesalahan, akan dianggap serupa. Masalahnya adalah bagaimana cara menentukan nilai e ini? Adakah kode yang menjelaskan pencarian rentang/pencarian berurutan? - person Jaz; 17.08.2010

Ternyata JAUH lebih cepat, baik untuk ED maupun DTW, untuk melakukan pemindaian berurutan, menggunakan suite UCR.

Lihat video ini https://www.youtube.com/watch?v=d_qLzMMuVQg

atau ini

https://www.youtube.com/watch?v=c7xz9pVr05Q

kodenya gratis http://www.cs.ucr.edu/~eamonn/UCRsuite.html

person user2313186    schedule 29.10.2014