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 dengan startTime. Jika endTime lebih lambat dari tanda waktu terbaru aktual dalam data, tanda waktu terbaru aktual akan digunakan sebagai titik akhir. Jika endTime sama dengan startTime, 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 untuk k pelatihan model, setidaknya k 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 nilai slidingWindow:

    1. 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 dari slidingWindow.
    2. {i>Trade-off slidingWindow yang lebih besar dapat menyebabkan waktu pelatihan/inferensi yang lebih lama. Tidak ada jaminanslidingWindow 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 hanya slidingWindow yang memiliki dua poin.
  • alignMode - Cara menyelaraskan beberapa variabel (seri waktu) pada tanda waktu. Ada dua opsi untuk parameter ini, Inner dan Outer, dan nilai defaultnya adalah Outer.

    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 variabel

    rentang waktu Variabel-1 Variabel-2
    2020-11-01 1 1
    2020-11-02 2 2
    20201104 4 4

    Outer menggabungkan dua variabel

    rentang 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 mengisi nan 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 adalah Linear, Previous, Subsequent, Zero, dan Fixed serta nilai default-nya adalah Linear.

    Opsi Metode
    Linear Mengisi nilai nan menurut interpolasi linear
    Previous 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 dalam paddingValue.
  • paddingValue - Nilai Padding digunakan untuk mengisi nan kapan fillNAMethod dan Fixed 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 dan value, dan harus disimpan dalam file nilai yang dipisahkan koma (CSV).

  • Nama kolom file CSV harus tepat timestamp dan value 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, dan series_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 data slidingWindow 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 01/03/2021

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 01/03/2021 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 01/03/2021

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 01/03/2021 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 dan endTime 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 adalah slidingWindow 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 dari startTime. Inferensi dalam skenario seperti itu dilakukan dengan cara "jendela bergerak". Misalnya, MVAD akan menggunakan data dari 2021-01-01T00:00:00Z hingga 2021-01-01T23:59:00Z (inklusif) untuk menentukan apakah data pada 2021-01-02T00:00:00Z termasuk anomali. Misalnya, MVAD akan lanjut dan menggunakan data dari 2021-01-01T00:01:00Z hingga 2021-01-02T00:00:00Z (inklusif) untuk menentukan apakah data pada 2021-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 oleh endTime (atau tanda waktu terbaru yang sebenarnya). Oleh karena itu, sumber data inferensi Anda harus berisi data mulai dari startTime - slidingWindow dan idealnya berisi total ukuran slidingWindow + (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.

Langkah berikutnya