Praktik terbaik untuk menggunakan API univariat Detektor Anomali

API Detektor Anomali adalah layanan deteksi anomali tanpa status. Tingkat akurasi dan performa hasilnya dapat dipengaruhi oleh:

  • Bagaimana data rangkaian waktu Anda dipersiapkan.
  • Parameter API Detektor Anomali yang digunakan.
  • Jumlah poin data dalam permintaan API Anda.

Gunakan artikel ini untuk mempelajari tentang praktik terbaik dalam menggunakan API guna mendapatkan hasil terbaik untuk data Anda.

Kapan harus menggunakan deteksi anomali titik batch (semua) atau terbaru (terakhir)

Titik akhir deteksi batch API Detektor Anomali memungkinkan Anda mendeteksi anomali melalui seluruh data rangkaian waktu. Dalam mode deteksi ini, model statistik tunggal dibuat dan diterapkan ke setiap titik dalam himpunan data. Jika rangkaian waktu Anda memiliki karakteristik di bawah, sebaiknya gunakan deteksi batch untuk melihat pratinjau data Anda dalam satu panggilan API.

  • rangkaian waktu musiman, dengan anomali sesekali.
  • Rangkaian waktu tren datar, dengan lonjakan/penurunan sesekali.

Kami tidak menyarankan penggunaan deteksi anomali batch untuk pemantauan data real time, atau menggunakannya pada data rangkaian waktu yang tidak memiliki karakteristik di atas.

  • Deteksi batch membuat dan menerapkan hanya satu model, deteksi untuk setiap titik dilakukan dalam konteks keseluruhan rangkaian. Jika data rangkaian waktu tren naik dan turun tanpa pengaruh musim, beberapa titik perubahan (penurunan dan lonjakan data) mungkin terlewatkan oleh model. Demikian pula, beberapa titik perubahan yang kurang signifikan daripada yang kemudian dalam himpunan data mungkin tidak dihitung sebagai cukup signifikan untuk dimasukkan ke dalam model.

  • Deteksi batch lebih lambat daripada deteksi status anomali titik terbaru saat melakukan pemantauan data secara real time, karena banyaknya titik yang dianalisis.

Untuk pemantauan data real time, sebaiknya Anda mendeteksi status anomali dari poin data terbaru saja. Dengan terus menerapkan deteksi titik terbaru, pemantauan data streaming dapat dilakukan dengan lebih efisien dan akurat.

Contoh di bawah ini menjelaskan dampak mode deteksi ini terhadap performa. Gambar pertama menunjukkan hasil pendeteksian titik terbaru status anomali secara terus menerus sepanjang 28 poin data yang dilihat sebelumnya. Titik merah adalah anomali.

An image showing anomaly detection using the latest point

Di bawah ini adalah himpunan data yang sama menggunakan deteksi anomali batch. Model yang dibangun untuk operasi telah mengabaikan beberapa anomali, yang ditandai dengan persegi panjang.

An image showing anomaly detection using the batch method

Penyiapan data

API Detektor Anomali menerima data rangkaian waktu yang diformat menjadi objek permintaan JSON. Rangkaian waktu dapat berupa data numerik apa pun yang direkam dari waktu ke waktu secara berurutan. Anda dapat mengirim jendela data rangkaian waktu Anda ke titik akhir API Detektor Anomali untuk meningkatkan performa API. Jumlah minimum poin data yang dapat Anda kirim adalah 12, dan maksimum adalah 8640 poin. Granualitas didefinisikan sebagai tingkat pengambilan sampel data Anda.

Poin data yang dikirim ke API Detektor Anomali harus memiliki tanda Waktu Universal Terkoordinasi (UTC) yang valid, dan nilai numerik.

{
    "granularity": "daily",
    "series": [
      {
        "timestamp": "2018-03-01T00:00:00Z",
        "value": 32858923
      },
      {
        "timestamp": "2018-03-02T00:00:00Z",
        "value": 29615278
      },
    ]
}

Jika data Anda diambil sampelnya pada interval waktu yang tidak standar, Anda dapat menentukannya dengan menambahkan atribut customInterval dalam permintaan Anda. Misalnya, jika seri Anda diambil sampelnya setiap 5 menit, Anda dapat menambahkan hal berikut ke permintaan JSON:

{
    "granularity" : "minutely", 
    "customInterval" : 5
}

Poin data tidak ada

Poin data yang hilang sering terjadi pada himpunan data rangkaian waktu yang terdistribusi secara merata, terutama yang memiliki perincian yang baik (Interval pengambilan sampel kecil. Misalnya, data diambil sampelnya setiap beberapa menit). Kehilangan kurang dari 10% dari jumlah poin yang diharapkan dalam data Anda seharusnya tidak berdampak negatif pada hasil deteksi. Pertimbangkan untuk mengisi celah dalam data Anda berdasarkan karakteristiknya seperti mengganti poin data dari periode sebelumnya, interpolasi linier, atau rata-rata bergerak.

Data terdistribusi agregat

API Detektor Anomali bekerja paling baik pada rangkaian waktu yang terdistribusi secara merata. Jika data Anda didistribusikan secara acak, Anda harus menggabungkannya dengan satuan waktu, seperti Per menit, per jam, atau harian.

Deteksi anomali pada data dengan pola musiman

Jika Anda mengetahui bahwa data rangkaian waktu Anda memiliki pola musiman (pola yang terjadi secara berkala), Anda dapat meningkatkan akurasi dan waktu respons API.

Menentukan period saat Anda membuat permintaan JSON dapat mengurangi latensi deteksi anomali hingga 50%. period adalah bilangan bulat yang menentukan secara kasar berapa banyak poin data yang diperlukan rangkaian waktu untuk mengulangi suatu pola. Misalnya, deret waktu dengan satu titik data per hari akan memiliki period7 as, dan deret waktu dengan satu titik per jam (dengan pola mingguan yang sama) akan memiliki period7*24 satu. Jika Anda tidak yakin dengan pola data Anda, Anda tidak perlu menentukan parameter ini.

Untuk hasil terbaik, berikan empat poin data senilai period, ditambah satu poin tambahan. Misalnya, data per jam dengan pola mingguan seperti yang dijelaskan di atas harus menyediakan 673 poin data di isi permintaan (7 * 24 * 4 + 1).

Pengambilan sampel data untuk pemantauan real time

Jika data streaming Anda diambil sampelnya dalam interval pendek (misalnya detik atau menit), pengiriman jumlah poin data yang disarankan dapat melebihi jumlah maksimum API Detektor Anomali yang diizinkan (8640 poin data). Jika data Anda menunjukkan pola musiman yang stabil, pertimbangkan untuk mengirim sampel data rangkaian waktu Anda pada interval waktu yang lebih besar, seperti jam. Mengambil sampel data Anda dengan cara ini juga dapat meningkatkan waktu respons API secara nyata.

Langkah berikutnya