Saya mencoba untuk melakukan beberapa deteksi anomali antara seri waktu # menggunakan Python dan sklearn (tetapi saran paket lainnya pasti diterima!).
Saya memiliki 10 seri waktu; setiap deret waktu terdiri dari data yang dikumpulkan dari nilai torsi ban (jadi total 10 ban) dan set mungkin tidak mengandung jumlah titik data yang sama (ukuran set berbeda) . Setiap data time-series cukup banyak hanya nilai ban_id, timestamp, dan sig_value (nilai dari sinyal, atau sensor). Data sampel untuk satu rangkaian waktu terlihat seperti ini:
tire_id timestamp sig_value
tire_1 23:06.1 12.75
tire_1 23:07.5 0
tire_1 23:09.0 -10.5
Sekarang saya memiliki 10 dari mereka, dan 2 dari mereka berperilaku aneh. Saya mengerti bahwa ini adalah masalah pendeteksian anomali, tetapi sebagian besar artikel yang saya baca online mendeteksi titik anomali dalam seri waktu yang sama (alias jika pada beberapa titik nilai torsi tidak normal untuk ban itu).
Untuk mendeteksi 2 ban mana yang berperilaku tidak normal, saya mencoba menggunakan metode clustering, pada dasarnya k-means clustering (karena tidak diawasi).
Untuk menyiapkan data untuk dimasukkan ke dalam pengelompokan k-means, untuk setiap seri waktu (alias untuk setiap ban), saya menghitung:
- 3 set teratas maksimum lokal yang berdekatan dan minimum lokal dengan amplitudo tertinggi (perbedaan)
- Nilai tengah torsi
- Standar deviasi dari nilai torsi
Saya juga mengatur jumlah cluster menjadi hanya 2, jadi apakah cluster 1 atau 2.
Jadi hasil akhir saya (setelah menetapkan kelompok) terlihat seperti berikut:
amplitude local maxima local minima sig_value_std \
tire_0 558.50 437.75 -120.75 77.538645
tire_0 532.75 433.75 -99.00 77.538645
tire_0 526.25 438.00 -88.25 77.538645
tire_1 552.50 -116.50 436.00 71.125912
tire_1 542.75 439.25 -103.50 71.125912
sig_value_average cluster
tire_0 12.816990 0
tire_0 12.816990 0
tire_0 12.816990 0
tire_1 11.588038 1
tire_1 11.588038 0
Sekarang saya memiliki pertanyaan tentang apa yang harus dilakukan dengan hasil ini ... sehingga setiap ban memiliki 3 baris data, karena saya telah memilih 3 pasang top lokal / min dengan 3 amplitudo terbesar, dan itu berarti setiap baris dapat ditugaskan ke sebuah cluster, dan kadang-kadang mereka ditugaskan ke cluster yang berbeda untuk 1 ban genap. Juga ukuran cluster biasanya lebih besar dari hanya 2.
Pertanyaan saya adalah:
- Bagaimana cara melakukan deteksi anomali tentang "serangkaian waktu" bukan hanya titik data individual?
- Apakah pendekatan saya masuk akal / logis? Jika ya, bagaimana saya bisa membersihkan hasil saya untuk mendapatkan apa yang saya inginkan? Dan jika tidak, apa yang bisa saya lakukan untuk meningkatkan?