Praktik terbaik bagi penggunaan API Detektor Anomali Multivariat
Penting
Mulai tanggal 20 September 2023 Anda tidak akan dapat membuat sumber daya Detektor Anomali baru. Layanan Detektor Anomali dihentikan pada tanggal 1 Oktober 2026.
Artikel ini menyediakan panduan sekeliling praktik yang direkomendasikan untuk diikuti saat menggunakan API Multivariate Anomaly Detector (MVAD). Dalam tutorial ini, Anda akan:
- Penggunaan API: Pelajari cara menggunakan MVAD tanpa kesalahan.
- Rekayasa Data: Pelajari cara terbaik untuk mengolah data Anda sehingga MVAD bekerja dengan akurasi yang lebih baik.
- Jebakan Umum: Pelajari cara menghindari jebakan umum yang ditemui pelanggan.
- FAQ: Pelajari jawaban atas pertanyaan yang sering diajukan.
Penggunaan API
Ikuti petunjuk di bagian ini untuk menghindari kesalahan saat menggunakan MVAD. Jika Anda masih mendapatkan kesalahan, lihat daftar lengkap kode kesalahan untuk penjelasan dan tindakan yang harus diambil.
Parameter input
Parameter yang diperlukan
Ketiga parameter ini diperlukan dalam permintaan pelatihan dan inferensi API:
source
- Tautan ke file zip Anda yang terletak di Azure Blob Storage dengan Tanda Tangan Akses Bersama (SAS).startTime
- Waktu mulai data yang digunakan untuk pelatihan atau inferensi. Jika lebih awal dari tanda waktu paling awal aktual dalam data, tanda waktu paling awal aktual tersebut akan digunakan sebagai titik awal.endTime
- Waktu akhir data yang digunakan untuk pelatihan atau inferensi yang harus lebih lambat dari atau sama denganstartTime
. JikaendTime
lebih lambat dari tanda waktu terbaru aktual dalam data, tanda waktu terbaru aktual akan digunakan sebagai titik akhir. JikaendTime
sama denganstartTime
, itu berarti inferensi dari satu titik data tunggal yang sering digunakan dalam skenario streaming.
Parameter opsional untuk pelatihan API
Parameter lain untuk pelatihan API bersifat opsional:
slidingWindow
- Berapa banyak titik data yang digunakan untuk menentukan anomali. Bilangan bulat antara 28 dan 2.880. Nilai {i>default-slidingWindow untukk
pelatihan model, setidaknyak
poin harus dapat diakses dari file sumber selama inferensi untuk mendapatkan hasil yang valid.MVAD mengambil segmen titik data untuk memutuskan apakah titik data selanjutnya adalah anomali. Panjang segmen adalah
slidingWindow
. Harap ingat dua hal saat memilih nilaislidingWindow
:- Properti data Anda: apakah itu berkala dan laju pengambilan sampel. Ketika data Anda berkala, Anda dapat mengatur panjang 1 - 3 siklus sebagai
slidingWindow
. Ketika data Anda berada pada frekuensi tinggi (granularitas kecil) seperti tingkat menit atau tingkat kedua, Anda dapat menetapkan nilai yang relatif lebih tinggi darislidingWindow
. - {i>Trade-off slidingWindow yang lebih besar dapat menyebabkan waktu pelatihan/inferensi yang lebih lama. Tidak ada jaminan
slidingWindow
yang lebih besar akan menghasilkan peningkatan akurasi.slidingWindow
yang kecil dapat menyebabkan model sulit untuk bertemu dengan solusi yang optimal. Misalnya, sulit untuk mendeteksi anomali ketika hanyaslidingWindow
yang memiliki dua poin.
- Properti data Anda: apakah itu berkala dan laju pengambilan sampel. Ketika data Anda berkala, Anda dapat mengatur panjang 1 - 3 siklus sebagai
alignMode
- Cara menyelaraskan beberapa variabel (seri waktu) pada tanda waktu. Ada dua opsi untuk parameter ini,Inner
danOuter
, dan nilai defaultnya adalahOuter
.Parameter ini sangat penting ketika ada ketidakselarasan antara urutan tanda waktu dari variabel tersebut. Model perlu menyelaraskan variabel ke urutan tanda waktu yang sama sebelum pemrosesan lebih lanjut.
Inner
berarti model akan melaporkan hasil deteksi hanya pada tanda waktu ketika setiap variabel memiliki nilai, yaitu persimpangan semua variabel.Outer
berarti model akan melaporkan hasil deteksi hanya pada tanda waktu ketika variabel apa pun memiliki nilai, yaitu persimpangan semua variabel.Berikut adalah contoh untuk menjelaskan nilai
alignModel
yang berbeda.Variabel-1
rentang waktu value 2020-11-01 1 2020-11-02 2 20201104 4 2020-11-05 5 Variabel-2
rentang waktu value 2020-11-01 1 2020-11-02 2 2020-11-03 3 20201104 4 Inner
menggabungkan dua variabelrentang waktu Variabel-1 Variabel-2 2020-11-01 1 1 2020-11-02 2 2 20201104 4 4 Outer
menggabungkan dua variabelrentang waktu Variabel-1 Variabel-2 2020-11-01 1 1 2020-11-02 2 2 2020-11-03 nan
3 20201104 4 4 2020-11-05 5 nan
fillNAMethod
- Cara mengisinan
di tabel yang digabungkan. Mungkin ada nilai yang hilang dalam tabel yang digabungkan dan nilai tersebut harus ditangani dengan benar. Kami menyediakan beberapa metode untuk mengisinya. Opsinya adalahLinear
,Previous
,Subsequent
,Zero
, danFixed
serta nilai default-nya adalahLinear
.Opsi Metode Linear
Mengisi nilai nan
menurut interpolasi linearPrevious
Menyebarkan nilai terakhir yang valid untuk mengisi kesenjangan. Contoh: [1, 2, nan, 3, nan, 4]
->[1, 2, 2, 3, 3, 4]
Subsequent
Gunakan nilai valid berikutnya untuk mengisi kesenjangan. Contoh: [1, 2, nan, 3, nan, 4]
->[1, 2, 3, 3, 4, 4]
Zero
Mengisi nilai nan
dengan 0.Fixed
Isi nilai nan
dengan nilai valid tertentu yang harus disediakan dalampaddingValue
.paddingValue
- Nilai Padding digunakan untuk mengisinan
kapanfillNAMethod
danFixed
harus disediakan dalam hal ini. Dalam kasus lain, ini bersifat opsional.displayName
- Ini adalah parameter opsional yang digunakan untuk mengidentifikasi model. Misalnya, Anda dapat menggunakannya untuk menandai parameter, sumber data, dan metadata lainnya tentang model dan data inputnya. Nilai {i>default-
Input skema data
MVAD mendeteksi anomali dari sekelompok metrik, dan kami menyebut setiap metrik sebagai variabel atau deret waktu.
Anda dapat mengunduh sampel file data dari Microsoft untuk memeriksa skema yang diterima dari: https://aka.ms/AnomalyDetector/MVADSampleData
Setiap variabel harus memiliki dua dan hanya dua bidang,
timestamp
danvalue
, dan harus disimpan dalam file nilai yang dipisahkan koma (CSV).Nama kolom file CSV harus tepat
timestamp
danvalue
peka huruf besar/kecil.timestamp
Nilai harus sesuai dengan ISO 8601;value
bisa berupa bilangan bulat atau desimal dengan sejumlah angka di belakang koma. Contoh yang baik dari isi file CSV:rentang waktu value 2019-04-01T00:00:00Z 5 2019-04-01T00:01:00Z 3.6 2019-04-01T00:02:00Z 4 ... ... Catatan
Jika tanda waktu Anda memiliki jam, menit, dan/atau detik, pastikan tanda waktu dibulatkan dengan benar sebelum memanggil API.
Misalnya, jika frekuensi data Anda seharusnya menjadi satu poin data setiap 30 detik, tetapi Anda melihat tanda waktu seperti "12:00:01" dan "12:00:28", itu adalah sinyal kuat bahwa Anda harus memproses tanda waktu terlebih dahulu ke nilai baru seperti "12:00:00" dan "12:00:30".
Untuk detailnya, lihat bagian "Ringkasan tanda waktu" di dokumen praktik terbaik.
Nama file csv akan digunakan sebagai nama variabel dan harus unik. Misalnya, "temperature.csv" dan "humidity.csv".
Variabel untuk pelatihan dan variabel untuk inferensi harus konsisten. Misalnya, jika Anda menggunakan
series_1
,series_2
,series_3
,series_4
, danseries_5
untuk pelatihan, Anda harus menyediakan variabel yang sama persis untuk inferensi.File CSV harus dikompresi ke dalam file zip dan diunggah ke kontainer blob Azure. File zip dapat bernama apa pun yang Anda inginkan.
Struktur folder
Kesalahan umum dalam persiapan data adalah folder tambahan dalam file zip. Misalnya, asumsikan nama file zip adalah series.zip
. Kemudian setelah mendekompresi file ke folder baru./series
, jalur yang benar ke file CSV adalah ./series/series_1.csv
dan jalur yang salah bisa jadi ./series/foo/bar/series_1.csv
.
Contoh pohon direktori yang benar setelah mendekompresi file zip di Windows
.
└── series
├── series_1.csv
├── series_2.csv
├── series_3.csv
├── series_4.csv
└── series_5.csv
Contoh pohon direktori yang tidak benar setelah mendekompresi file zip di Windows
.
└── series
└── series
├── series_1.csv
├── series_2.csv
├── series_3.csv
├── series_4.csv
└── series_5.csv
Rekayasa Data
Sekarang Anda bisa menjalankan kode Anda dengan MVAD API tanpa kesalahan. Apa yang bisa dilakukan untuk meningkatkan akurasi model Anda?
Kualitas data
- Ketika model mempelajari pola normal dari data historis, data pelatihan harus mewakili keadaan normal keseluruhan sistem. Sulit bagi model untuk mempelajari jenis pola ini, jika data pelatihan penuh dengan anomali. Ambang empiris tingkat abnormal adalah 1% dan di bawah untuk akurasi yang baik.
- Secara umum, rasio nilai data pelatihan yang hilang harus di bawah 20%. Terlalu banyak data yang hilang mungkin mengakibatkan nilai yang terisi secara otomatis (biasanya nilai linier atau nilai konstan) akan dianggap sebagai pola normal. Itu dapat mengakibatkan poin data nyata (tidak hilang) terdeteksi sebagai anomali.
Kuantitas data
Model MVAD yang mendasari memiliki jutaan parameter. Model ini perlu jumlah titik data minimum untuk mempelajari serangkaian parameter yang optimal. Aturan empiris adalah Anda perlu menyediakan 5.000 titik data atau lebih (tanda waktu) per variabel untuk melatih model untuk akurasi yang baik. Secara umum, semakin banyak data pelatihan, semakin baik akurasinya. Namun, dalam kasus ketika Anda tidak dapat memperoleh data sebanyak itu, kami masih mendorong Anda untuk bereksperimen dengan lebih sedikit data dan melihat apakah akurasi yang dikompromikan masih dapat diterima.
Setiap kali Anda memanggil API inferensi, Anda perlu memastikan bahwa file data sumber berisi cukup poin data. Umumnya
slidingWindow
+ jumlah poin data yang sangat membutuhkan hasil inferensi. Misalnya, dalam kasus streaming ketika setiap kali Anda ingin menyimpulkan pada SATUtanda waktu baru, file data hanya dapat berisi poin dataslidingWindow
plus SATU terkemuka; maka Anda dapat melanjutkan dan membuat file zip lain dengan jumlah poin data yang sama (slidingWindow
+ 1) tetapi memindahkan SATU langkah ke sisi "kanan" dan mengirimkan untuk pekerjaan inferensi lain.Apa pun di luar itu atau "sebelum" jendela geser terkemuka tidak akan berdampak pada hasil inferensi sama sekali dan hanya dapat menyebabkan penurunan performa. Apa pun di bawah ini yang dapat menyebabkan kesalahan
NotEnoughInput
.
Pembulatan tanda waktu
Dalam kelompok variabel (rangkaian waktu), setiap variabel dapat dikumpulkan dari sumber independen. Tanda waktu dari variabel yang berbeda mungkin tidak konsisten satu sama lain dan dengan frekuensi yang diketahui. Berikut ini contoh sederhananya.
Variabel-1
rentang waktu | value |
---|---|
12:00:01 | 1.0 |
12:00:35 | 1.5 |
12:01:02 | 0,9 |
12:01:31 | 2.2 |
12:02:08 | 1.3 |
Variabel-2
rentang waktu | value |
---|---|
12:00:03 | 2.2 |
12:00:37 | 2.6 |
12:01:09 | 1.4 |
12:01:34 | 1.7 |
12:02:04 | 2.0 |
Kami memiliki dua variabel yang dikumpulkan dari dua sensor yang mengirim satu poin data setiap 30 detik. Namun, sensor tidak mengirim poin data pada frekuensi yang tepat, melainkan kadang lebih awal atau lebih akhir. Karena MVAD mempertimbangkan korelasi antara variabel yang berbeda, tanda waktu harus diselaraskan dengan benar sehingga metrik dapat mencerminkan kondisi sistem dengan benar. Dalam contoh di atas, tanda waktu variabel 1 dan variabel 2 harus benar-benar 'dibulatkan' ke frekuensi sebelum perataan.
Mari kita lihat apa yang terjadi jika mereka tidak diproses sebelumnya. Jika kita atur alignMode
menjadi Outer
(yang berarti penyatuan dua set), tabel gabungan adalah:
rentang waktu | Variabel-1 | Variabel-2 |
---|---|---|
12:00:01 | 1.0 | nan |
12:00:03 | nan |
2.2 |
12:00:35 | 1.5 | nan |
12:00:37 | nan |
2.6 |
12:01:02 | 0,9 | nan |
12:01:09 | nan |
1.4 |
12:01:31 | 2.2 | nan |
12:01:34 | nan |
1.7 |
12:02:04 | nan |
2.0 |
12:02:08 | 1.3 | nan |
nan
menunjukkan nilai yang hilang. Jelas, tabel gabungan tidak seperti yang diharapkan. Variabel 1 dan variabel 2 saling mengosongkan, dan model MVAD tidak dapat mengekstrak informasi tentang korelasi di antara variabel tersebut. Jika kita mengatur alignMode
ke Inner
, tabel gabungan kosong karena tidak ada tanda waktu umum dalam variabel 1 dan variabel 2.
Oleh karena itu, tanda waktu variabel 1 dan variabel 2 harus diproses sebelumnya (dibulatkan ke tanda waktu 30 detik terdekat) dan rangkaian waktu baru adalah:
Variabel-1
rentang waktu | value |
---|---|
12:00:00 | 1.0 |
12:00:30 | 1.5 |
12:01:00 | 0,9 |
12:01:30 | 2.2 |
12:02:00 | 1.3 |
Variabel-2
rentang waktu | value |
---|---|
12:00:00 | 2.2 |
12:00:30 | 2.6 |
12:01:00 | 1.4 |
12:01:30 | 1.7 |
12:02:00 | 2.0 |
Sekarang tabel gabungan lebih masuk akal.
rentang waktu | Variabel-1 | Variabel-2 |
---|---|---|
12:00:00 | 1.0 | 2.2 |
12:00:30 | 1.5 | 2.6 |
12:01:00 | 0,9 | 1.4 |
12:01:30 | 2.2 | 1.7 |
12:02:00 | 1.3 | 2.0 |
Nilai variabel yang berbeda pada tanda waktu dekat selaras dengan baik, dan model MVAD sekarang dapat mengekstrak informasi korelasi.
Batasan
Terdapat beberapa batasan dalam API pelatihan dan inferensi. Anda harus mengetahui batasan ini untuk menghindari kesalahan.
Batasan Umum
- Jendela geser: 28-2880 tanda waktu, defaultnya merupakan 300. Untuk data berkala, atur 2-4 siklus sebagai jendela geser.
- Angka variabel: Untuk pelatihan dan inferensi batch, paling banyak 301 variabel.
Batasan untuk Pelatihan
- Tanda waktu: Paling banyak adalah 1000000. Terlalu sedikit tanda waktu bisa mengurangi kualitas model. Merekomendasikan memiliki lebih dari 5.000 tanda waktu.
- Granuralitas: Minimal adalah
per_second
.
Batasan inferensi batch
- Tanda waktu: Paling banyak 20000, paling sedikit 1 jendela geser.
Batasan inferensi streaming
- Tanda waktu: Paling banyak 2880, paling sedikit 1 jendela geser.
- Mendeteksi tanda waktu: Dari 1 sampai 10.
Kualitas model
Bagaimana cara untuk menangani positif palsu dan negatif palsu dalam skenario nyata?
Kami telah memberikan tingkat keparahan yang menunjukkan signifikansi anomali. Positif palsu dapat difilter dengan cara menyiapkan ambang batas pada tingkat keparahan. Terkadang banyak positif palsu yang mungkin muncul ketika terjadi pergeseran pola dalam data inferensi. Dalam kasus demikian, model mungkin perlu dilatih kembali menggunakan data baru. Jika data pelatihan berisi terlalu banyak anomali, mungkin terdapat negatif palsu dalam hasil deteksi. Hal ini karena model mempelajari pola dari data pelatihan dan anomali dapat menyebabkan bias pada model. Dengan demikian, pembersihan data yang tepat dapat membantu untuk mengurangi negatif palsu.
Bagaimana cara untuk memperkirakan model mana yang terbaik untuk digunakan sesuai dengan kehilangan pelatihan dan kehilangan validasi?
Secara umum, sulit untuk memutuskan model mana yang terbaik tanpa menggunakan himpunan data berlabel. Namun, kita dapat memanfaatkan kerugian pelatihan serta validasi untuk memiliki estimasi kasarnya dan membuang model yang buruk. Pertama, kita harus mengamati apakah kerugian pelatihan bertemu. Kerugian yang berbeda sering kali mengindikasikan kualitas model yang buruk. Kedua, nilai kerugian dapat membantu mengidentifikasi apakah telah terjadi underfitting atau overfitting. Model yang underfitting atau overfitting mungkin tidak menghasilkan performa yang diinginkan. Ketiga, meskipun definisi fungsi kerugian tidak mencerminkan performa deteksi secara langsung, nilai kerugian dapat menjadi alat tambahan untuk memperkirakan kualitas model. Nilai kerugian yang rendah mengindikasikan model yang baik, sehingga kita dapat membuang model dengan nilai kerugian yang tinggi.
Jebakan umum
Selain tabel kode galat, kami telah mempelajari beberapa jebakan umum saat menggunakan API MVAD dari pelanggan seperti Anda. Tabel ini akan membantu Anda menghindari masalah ini.
Pitfall | Consequence | Penjelasan dan solusi |
---|---|---|
Tanda waktu dalam data pelatihan dan/atau data inferensi tidak dibulatkan agar selaras dengan setiap frekuensi data dari setiap variabel. | Tanda waktu dari hasil inferensi tidak seperti yang diharapkan: baik tanda waktu terlalu sedikit atau banyak. | Lihat Pembulatan Tanda Waktu. |
Terlalu banyak poin data anomali dalam data pelatihan | Akurasi model berdampak negatif karena memperlakukan poin data anomali sebagai pola normal selama pelatihan. | Secara empiris, menjaga tingkat abnormal pada atau di bawah 1% akan membantu. |
Data pelatihan terlalu sedikit | Akurasi model dikompromikan. | Secara empiris, pelatihan model MVAD membutuhkan 15.000 atau lebih poin data (tanda waktu) per variabel untuk menjaga akurasi yang baik. |
Menganggap semua poin data dengan isAnomaly =true sebagai anomali |
Terlalu banyak positif palsu | Anda harus menggunakan isAnomaly dan severity (atau score ) guna menyaring anomali yang tidak parah dan (opsional) menggunakan pengelompokan untuk memeriksa durasi anomali guna menekan kebisingan acak. Lihat bagian FAQ di bawah untuk mengetahui perbedaan antara severity and score . |
Sub-folder dimasukkan ke dalam file data untuk pelatihan atau inferensi. | File data csv di dalam sub-folder diabaikan selama pelatihan dan/atau inferensi. | Tidak ada sub-folder yang diizinkan berbentuk file zip. Lihat Struktur folder untuk penjelasan lebih lanjut. |
Terlalu banyak data dalam file data inferensi: misalnya, mengompresi semua data historis dalam file zip data inferensi | Anda mungkin tidak melihat kesalahan apa pun tetapi Anda akan mengalami kinerja yang menurun ketika Anda mencoba mengunggah file zip ke Azure Blob serta ketika Anda mencoba menjalankan inferensi. | Lihat Kuantitas Data untuk penjelasan lebih lanjut. |
Membuat sumber daya Anomaly Detector di wilayah Azure yang belum mendukung MVAD dan memanggil MVAD API | Anda akan menerima kesalahan "sumber daya tidak ditemukan" saat memanggil API MVAD. | Selama tahap pratinjau, MVAD hanya tersedia di wilayah terbatas. Silakan tandai Apa yang baru dalam Detektor Anomali untuk tetap mengikuti perkembangan peluncuran wilayah MVAD. Anda juga dapat mengajukan GitHub atau menghubungi kami di AnomalyDetector@microsoft.com untuk meminta wilayah tertentu. |
FAQ
Bagaimana cara kerja jendela geser MVAD?
Mari kita gunakan dua contoh untuk mempelajari cara kerja jendela geser MVAD. Misalkan Anda telah menetapkan slidingWindow
= 1.440, dan data input Anda berada pada granuralitas satu menit.
Skenario streaming: Anda ingin memprediksi apakah poin data SATU di "2021-01-02T00:00:00Z" adalah anomali.
startTime
danendTime
Anda akan bernilai sama ("2021-01-02T00:00:00Z"). Sumber data inferensi Anda, bagaimanapun, harus berisi setidaknya 1.440 + 1 tanda waktu. Karena, MVAD akan mengambil jarak antar baris data sebelum poin data target ("2021-01-02T00:00:00Z") untuk menentukan apakah target tersebut adalah anomali. Panjang jarak antar baris data yang dibutuhkan adalahslidingWindow
atau 1.440 dalam kasus ini. 1.440 = 60 * 24, jadi data input Anda harus dimulai dari paling lambat "2021-01-01T00:00:00Z".Skenario Batch: Anda memiliki beberapa poin data target untuk diprediksi.
endTime
Anda akan lebih besar daristartTime
. Inferensi dalam skenario seperti itu dilakukan dengan cara "jendela bergerak". Misalnya, MVAD akan menggunakan data dari2021-01-01T00:00:00Z
hingga2021-01-01T23:59:00Z
(inklusif) untuk menentukan apakah data pada2021-01-02T00:00:00Z
termasuk anomali. Misalnya, MVAD akan lanjut dan menggunakan data dari2021-01-01T00:01:00Z
hingga2021-01-02T00:00:00Z
(inklusif) untuk menentukan apakah data pada2021-01-02T00:01:00Z
termasuk anomali. Ini bergerak dengan cara yang sama (mengambil 1.440 poin data untuk dibandingkan) sampai tanda waktu terakhir yang ditentukan olehendTime
(atau tanda waktu terbaru yang sebenarnya). Oleh karena itu, sumber data inferensi Anda harus berisi data mulai daristartTime
-slidingWindow
dan idealnya berisi total ukuranslidingWindow
+ (endTime
-startTime
).
Apa perbedaan antara severity
dan score
?
Pada umumnya kami menyarankan Anda untuk menggunakan severity
sebagai filter untuk menyaring 'anomali' yang tidak begitu penting bagi bisnis Anda. Tergantung pada skenario dan pola data Anda, anomali yang kurang penting sering memiliki nilai severity
yang relatif lebih rendah atau nilai tinggi yang berdiri sendiri (terputus-putus) seperti pakuseverity
acak.
Dalam kasus ketika Anda telah menemukan kebutuhan aturan yang lebih canggih daripada ambang batas terhadap severity
atau durasi nilai tinggi terus severity
menerus, Anda mungkin ingin menggunakan untuk score
membangun filter yang lebih kuat. Memahami bagaimana MVAD digunakan score
untuk menentukan anomali dapat membantu:
Kami mempertimbangkan apakah poin data termasuk anomali dari perspektif global dan lokal. Jika score
pada tanda waktu lebih tinggi dari ambang batas tertentu, maka tanda waktu ditandai sebagai anomali. Jika score
lebih rendah dari ambang batas namun relatif lebih tinggi dalam suatu segmen, hal itu juga ditandai sebagai anomali.