Clustering Warping Waktu dinamis

40

Apa yang akan menjadi pendekatan untuk menggunakan Dynamic Time Warping (DTW) untuk melakukan clustering time series?

Saya telah membaca tentang DTW sebagai cara untuk menemukan kesamaan antara dua seri waktu, sementara mereka dapat digeser waktu. Bisakah saya menggunakan metode ini sebagai ukuran kesamaan untuk algoritma pengelompokan seperti k-means?

Marko
sumber
2
ya, Anda bisa menggunakan ukuran kesamaan sebagai input ke k berarti mengelompokkan dan kemudian menentukan grup dalam data Anda.
peramal
Terima kasih atas jawaban Anda, Pak. Saya menduga bahwa untuk setiap iterasi saya perlu membentuk matriks jarak untuk setiap pasangan (centroid, clustering point), dan menghitung ulang centroid dalam mode standar, sebagai rata-rata dari semua seri yang termasuk dalam cluster?
Marko
1
Aleksandr Blekh dalam jawaban di bawah ini memiliki posting blog yang memberikan contoh terperinci tentang bagaimana melakukan ini di R.
peramal
2
@forecaster jangan tidak menggunakan k-means dengan DTW. k-means meminimalkan varians, bukan jarak. Varians adalah kuadrat Euclidean, tetapi itu tidak berarti k-means dapat mengoptimalkan jarak lain. Mean tidak, dan di DTW seharusnya lebih mudah untuk membangun contoh tandingan, seperti gelombang sinus diimbangi oleh : keduanya sangat mirip dengan DTW, tetapi rata-rata mereka adalah nol konstan - sangat berbeda dengan keduanya. π
Anony-Mousse
1
K-means bukan algoritma yang tepat untuk pengelompokan seri waktu. Model markov tersembunyi untuk data diskrit, longitudinal sesuai. Ada beberapa buku sekarang tentang topik ini serta kontribusi utama dari Oded Netzer (Columbia) dan Steve Scott (Google). Pendekatan lain adalah metode informasi-teori yang dikembangkan oleh Andreas Brandmaier di Max Planck yang disebut pengelompokan distribusi permutasi. Dia juga telah menulis modul R. Perbandingan solusi cluster adalah masalah yang berbeda. Makalah Marina Meila, Membandingkan Clusterings, U of Washington Statistics Tech Report 418 adalah yang terbaik.
Mike Hunter

Jawaban:

33

Jangan tidak menggunakan k-cara untuk deret waktu.

DTW tidak diminimalkan dengan rata-rata; k-means mungkin tidak konvergen dan bahkan jika konvergen tidak akan menghasilkan hasil yang sangat baik. Mean adalah estimator kuadrat-terkecil pada koordinat. Ini meminimalkan varians, bukan jarak sewenang-wenang, dan k-means dirancang untuk meminimalkan varians, bukan jarak sewenang - wenang .

Asumsikan Anda memiliki dua seri waktu. Dua gelombang sinus, dengan frekuensi yang sama, dan periode pengambilan sampel yang agak panjang; tetapi mereka diimbangi oleh . Karena DTW melakukan pembengkokan waktu, DTW dapat meluruskannya sehingga cocok dengan sempurna, kecuali untuk awal dan akhir. DTW akan menetapkan jarak yang agak kecil untuk dua seri ini. Namun, jika Anda menghitung rata - rata dari dua seri, itu akan menjadi 0 datar - mereka membatalkan. Mean tidak melakukan warping waktu dinamis, dan kehilangan semua nilai yang didapat DTW. Pada data seperti itu, k-means mungkin gagal untuk bertemu , dan hasilnya tidak akan berarti. K-means benar-benar hanya boleh digunakan dengan varians (= kuadrat Euclidean), atau beberapa kasus yang setara (seperti cosinus, pada data normal L2, di mana kesamaan cosinus adalahπsama dengan jarak Euclidean kuadrat)2-

Sebagai gantinya, hitung matriks jarak menggunakan DTW, lalu jalankan hierarchical clustering seperti single-link. Berbeda dengan k-means, seri ini mungkin memiliki panjang yang berbeda.

Anony-Mousse
sumber
4
Nah, tentu saja ada PAM (K-medoid) yang bekerja dengan jarak sewenang-wenang. Salah satu dari banyak algoritma yang mendukung jarak acak - k-means tidak. Pilihan lain adalah DBSCAN, OPTICS, CLARANS, HAC, ...
Anony-Mousse
1
Mungkin. Karena k-medoid menggunakan DTW-medoid untuk menemukan pusat cluster, bukan berarti L2. Saya tidak tahu ada pengelompokan waktu yang sukses di dunia nyata. Saya percaya saya telah melihat kertas, tetapi tidak ada yang benar-benar menggunakan hasilnya. Hanya pembuktian konsep.
Anony-Mousse
1
@Aleksandr Blekh memberikan ini sebagai salah satu contohnya nbviewer.ipython.org/github/alexminnaar/... Apa pendapat Anda tentang itu?
Marko
1
Masalah mainan. Tidak berguna di dunia nyata. Data nyata memiliki banyak noise, yang akan lebih menyakitkan daripada kurva sinus halus dan pola yang disajikan dalam data ini.
Anony-Mousse
1
Saya pikir pengelompokan hierarkis adalah pilihan yang lebih baik. Anda tidak akan dapat memproses sejumlah besar seri.
Anony-Mousse
49

Ya, Anda dapat menggunakan pendekatan DTW untuk klasifikasi dan pengelompokan seri waktu . Saya telah mengumpulkan sumber daya berikut , yang berfokus pada topik ini (Saya baru-baru ini menjawab pertanyaan serupa, tetapi tidak di situs ini, jadi saya menyalin konten di sini untuk kenyamanan semua orang):

Aleksandr Blekh
sumber
3
+1 koleksi artikel dan blog yang luar biasa. Referensi yang sangat bagus.
peramal
@forecaster: Terima kasih atas upvote dan kata-kata baiknya! Senang Anda menyukai koleksinya. Sangat menyedihkan bahwa saat ini saya tidak punya waktu untuk mempelajari peramalan dan banyak bidang statistik dan ilmu data lainnya dengan lebih serius, tetapi saya menggunakan setiap kesempatan untuk mempelajari sesuatu yang baru.
Aleksandr Blekh
1
@AlexandrBlekh Terima kasih banyak atas jawaban Anda, saya telah berdiskusi dengan Anony-Mousse tentang pendekatan ini, karena saya sangat tertarik dengan DTW sebagai ukuran kesamaan untuk K-means, sehingga saya bisa mendapatkan centroid sebagai output. Apa pendapat dan pengalaman Anda dengannya? Seperti yang Anda lihat Anony-Mousse memberikan beberapa argumen bahwa hasilnya mungkin tidak begitu baik dalam kasus ini ... Mungkin beberapa pengalaman pribadi dalam masalah praktis?
Marko
1
Ok terima kasih lagi. Anda memiliki +1 dari saya dan dia mendapat jawaban yang diterima, karena pertanyaan saya lebih berorientasi pada k-means dan DTW.
Marko
1
@pera: Dengan senang hati. Terima kasih telah memperbarui. Sepenuhnya memahami dan menyetujui tentang penerimaan, tidak ada masalah sama sekali.
Aleksandr Blekh
1

Metode DTW Barycenter Averaging (DBA) baru-baru ini telah diusulkan oleh Petitjean et al. untuk seri waktu rata-rata. Dalam makalah lain mereka membuktikan secara empiris dan teoritis bagaimana itu dapat digunakan untuk mengelompokkan deret waktu dengan k-means. Implementasi disediakan di GitHub oleh penulis ( tautan ke kode ).

1 F. Petitjean, G. Forestier, GI Webb, AE Nicholson, Y. Chen dan E. Keogh, "Dynamic Time Warping Rata-Rata dari Time Series Memungkinkan Klasifikasi Lebih Cepat dan Lebih Akurat," Konferensi Internasional IEEE 2014 tentang Data Mining, Shenzhen, 2014 .

2 F. Petitjean, P. Gançarski, Merangkum serangkaian deret waktu dengan rata-rata: Dari urutan Steiner hingga keselarasan berganda yang kompak, Ilmu Komputer Teoritis, Volume 414, Edisi 1, 2012

Hassan ISMAIL FAWAZ
sumber
2
berikan referensi lengkap sebagai ganti tautan. Tautan bisa mati
Antoine
1

Dynamic Time Warp membandingkan poin data yang direalisasikan, yang mungkin atau mungkin tidak berfungsi. Pendekatan yang lebih ketat adalah membandingkan distribusi deret waktu dengan metrik yang disebut jarak teleskop .

Yang keren tentang metrik ini adalah bahwa perhitungan empiris dilakukan dengan memasang serangkaian pengklasifikasi biner seperti SVM.

Untuk penjelasan singkat, lihat ini .

Untuk rangkaian waktu pengelompokan, telah terbukti mengungguli DTW; lihat Tabel 1 di kertas aslinya [1].

[1] Ryabko, D., & Mary, J. (2013). Metrik berbasis klasifikasi biner antara distribusi deret waktu dan penggunaannya dalam masalah statistik dan pembelajaran. Jurnal Penelitian Pembelajaran Mesin, 14 (1), 2837-2856.

horaceT
sumber
2
Editor berusaha mencatat: "Jérémie Mary (penulis bersama) memiliki halaman web yang membahas algoritma dengan implementasi R.
gung - Reinstate Monica
@ung Wow, bagus! Saya memiliki korespondensi dengan penulis pertama dan dia tidak menyebutkan ini.
horaceT
Saya sebenarnya hanya menyalin dari seseorang yang mencoba mengedit ini ke dalam jawaban Anda, @horaceT. Saya tidak tahu banyak tentang itu.
gung - Reinstate Monica
0

Iya nih. Pendekatan naif dan berpotensi lambat mungkin,

  1. Buat semua kombinasi kluster Anda. k adalah untuk jumlah cluster dan n adalah untuk jumlah seri. Jumlah barang yang dikembalikan harus n! / k! / (n-k)!. Ini akan menjadi sesuatu seperti pusat-pusat potensial.
  2. Untuk setiap seri, hitung jarak melalui DTW untuk setiap pusat di setiap kelompok kluster dan tetapkan ke minimum.
  3. Untuk setiap kelompok cluster, hitung jarak total dalam kelompok individu.
  4. Pilih minimum.

Saya menggunakan ini untuk proyek kecil. Ini adalah repositori saya tentang Time Series Clustering dan jawaban saya yang lain tentang ini.

Dogan Askan
sumber