Konsep

Dalam artikel ini, kita akan membahas konsep umum yang kita gunakan di Timeseries Insights API dan mencoba memberikan penjelasan intuitif tentang apa yang diwakilinya.

Acara

Peristiwa adalah titik data dan input mentah yang digunakan Timeseries Insights API. Secara konseptual, peristiwa mewakili tindakan yang dilakukan oleh beberapa agen (misalnya, transaksi oleh klien atau publikasi artikel berita) atau pengamatan (misalnya, pembacaan sensor suhu, atau penggunaan CPU di komputer).

Peristiwa berisi:

  • Kumpulan nilai di berbagai dimensi, yang mewakili properti yang mendeskripsikan peristiwa, seperti label atau pengukuran numerik.
  • Stempel waktu yang menunjukkan waktu terjadinya peristiwa. Stempel waktu ini akan digunakan saat menggabungkan peristiwa untuk membentuk deret waktu.
  • ID grup.

Dimensi

Dimensi mewakili jenis properti untuk peristiwa dalam set data dan domain nilai yang dapat diambilnya. Dimensi dapat berupa:

  • Kategoris. Properti peristiwa pada dimensi ini dapat menyimpan salah satu nilai terbatas/terbatas, biasanya string. Contohnya mencakup: nama negara atau penerbit dalam set data dengan artikel berita, nama mesin dalam set data dengan data pemantauan produksi.
  • Numerik. Pengukuran atau properti numerik umum untuk peristiwa. Contoh: jumlah kunjungan halaman untuk artikel berita, penggunaan CPU, atau jumlah error untuk data pemantauan produksi.

Set data

Set data adalah kumpulan peristiwa dengan nama unik dalam project. Kueri dilakukan dalam set data yang sama.

Grup

Peristiwa dapat dikelompokkan dengan menentukan ID grup yang sama (lihat Event.groupId). Grup ini mirip dengan "sesi" aktivitas internet.

Biasanya, setiap data Peristiwa diberi ID grup unik. Kasus penggunaan ID grup juga mencakup, tetapi tidak terbatas pada:

  • ID peristiwa untuk peristiwa yang sama (dengan stempel waktu yang sama atau serupa) dari beberapa data Peristiwa, terutama jika properti yang berbeda dari peristiwa yang sama berasal dari sumber yang berbeda dan tidak digabungkan sebelum memasuki sistem. Misalnya, beberapa sensor yang memantau perangkat yang sama dapat menghasilkan data peristiwa terpisah.
  • ID sesi untuk kumpulan peristiwa terkait (biasanya dengan stempel waktu dalam waktu singkat). Contohnya adalah aktivitas dari sesi penjelajahan web. Contoh lainnya adalah entri log dari perjalanan taksi.
  • ID akun pengguna, sehingga semua data Peristiwa dengan ID grup yang sama adalah milik pengguna yang sama.

Tujuan grup ini adalah untuk menghitung korelasi di antara (dimensi) peristiwa dari grup yang sama. Misalnya, jika set data Anda menyimpan data pemantauan (seperti CPU, RAM, dll.), grup dapat menyimpan semua data pemantauan dari satu proses. Hal ini pada akhirnya akan memungkinkan kita mendeteksi bahwa peningkatan CPU berkorelasi dengan peristiwa lain, seperti update versi biner pada waktu sebelumnya.

Jika tidak yakin, atau jika tidak tertarik untuk menghitung jenis korelasi ini, setiap peristiwa harus memiliki ID grup yang unik secara global. Menghapus groupId memiliki efek serupa dan groupId internal dibuat berdasarkan konten dan stempel waktu.

Slice

Slice adalah subset dari semua peristiwa dari set data yang memiliki beberapa nilai tertentu di beberapa dimensi. Untuk dimensi kategorikal, nilai yang diberikan adalah satu nilai tetap; untuk dimensi numerik, nilai yang diberikan adalah rentang.

Misalnya, anggaplah kita memiliki set data dengan penjualan dari retailer internasional dan setiap peristiwa adalah penjualan yang memiliki dimensi kategoris ini: negara tempat penjualan terjadi, nama produk, nama perusahaan yang membuat produk. Contoh slice dalam hal ini adalah: semua penjualan untuk produk tertentu, semua penjualan dari negara tertentu untuk semua produk yang dibuat oleh perusahaan tertentu.

Deret waktu

Deret waktu yang kita gunakan adalah waktu diskret, yang terdiri dari titik pada interval waktu yang sama. Durasi interval waktu antara titik deret waktu berturut-turut disebut tingkat perincian deret waktu.

Deret waktu dihitung dengan:

  • Untuk slice tertentu, kumpulkan semua peristiwa dalam interval waktu [detectionTime - TimeseriesParams.forecastHistory, detectionTime + granularity].
  • Mengelompokkan peristiwa ini, berdasarkan stempel waktu dan perinciannya. Peristiwa E ditetapkan ke titik yang dimulai pada waktu T jika E.eventTime berada dalam interval waktu [T, T + granularity].
  • Menggabungkan, untuk setiap titik dalam deret waktu, peristiwa berdasarkan dimensi numerik yang ditentukan sebagai metrik (TimeseriesParams.metric), yang mewakili nilai untuk titik tersebut. Agregasi dapat dilakukan dengan menghitung (jika tidak ada metric yang ditentukan, biasanya jika semua dimensi peristiwa bersifat kategoris), menjumlahkan, atau menghitung rata-rata (jika metric ditentukan).

Titik deret waktu

Setiap titik deret waktu memiliki waktu dan nilai terkait.

Waktu sebenarnya adalah interval dengan durasi granularity dengan time sebagai waktu mulai.

Jika ditentukan, metric (TimeseriesParams.metric) harus berupa dimensi numerik. value titik digabungkan dari nilai dimensi dalam dimensi metric dari semua peristiwa dalam waktu internal, menggunakan TimeseriesParams.metricAggregationMethod.

Jika tidak ada metrik yang ditentukan, value titik adalah jumlah peristiwa dalam interval waktu.

Perkiraan

Proses memprediksi nilai mendatang untuk deret waktu tertentu. Prakiraan menggunakan bagian awal deret waktu sebagai data pelatihan untuk membuat model.

Horizon

Kita akan memperkirakan nilai deret waktu mulai dari waktu deteksi hingga jangka waktu (diberikan oleh kolom ForecastParams.horizonTime).

Secara intuitif, kolom ini memberi tahu kita berapa banyak perkiraan yang harus kita lakukan di masa mendatang. Meskipun kita sebagian besar tertarik dengan nilai titik deteksi saat mengklasifikasikan slice sebagai anomali, kita mengizinkan titik tambahan untuk diprediksi karena dapat memberikan informasi yang berguna bagi pengguna.

Waktu deteksi dan titik deteksi

Waktu deteksi (ditentukan oleh QueryDataSetRequest.detectionTime) adalah titik waktu yang kami analisis untuk menemukan potensi anomali.

Titik deteksi adalah titik deret waktu pada waktu deteksi.

Deviasi yang diharapkan

Bergantung pada stabilitas dan prediktabilitas deret waktu, kita dapat menjadi lebih atau kurang yakin dengan perkiraan. Tingkat keyakinan tercermin dalam kolom EvaluatedSlice.expectedDeviation, yang menentukan deviasi absolut yang dapat diterima dari nilai yang kami perkirakan untuk waktu deteksi.

Anomali

Potongan dapat dianggap sebagai anomali jika deviasi antara nilai yang diperkirakan dan nilai sebenarnya selama waktu deteksi lebih tinggi dari yang kita harapkan.

Kami menyebut seberapa jauh deviasi sebenarnya dari deviasi yang diharapkan sebagai skor anomali:

anomalyScore = (detectionPointActual - detectionPointForecast) / expectedDeviation

Secara umum, skor yang lebih rendah dari 1,0 mencerminkan variasi yang umum mengingat histori slice, sedangkan skor yang lebih tinggi dari 1,0 harus memerlukan perhatian, dengan skor yang lebih tinggi mewakili anomali yang lebih parah.

Nilai minimum derau

Skor anomali seperti yang ditentukan sebelumnya menunjukkan seberapa signifikan deviasi dari normal secara statistik. Namun, dalam banyak kasus, penyimpangan ini mungkin tidak penting karena perubahan nilai absolut mungkin tidak menarik.

Misalnya, jika deret waktu memiliki semua nilai yang didistribusikan secara merata dalam rentang (9,9, 10,1), expectedDeviation akan menjadi ~0,1. Jika detectionPointForecast adalah 10.0 dan detectionPointActual adalah 10.3, anomalyScore akan menjadi 3.0.

Jika perubahan yang lebih besar dalam nilai absolut lebih penting bagi Anda, nilai minimum derau menawarkan cara untuk menghukum slice dengan perubahan yang lebih rendah dari nilai minimum tersebut dengan mengurangi skor anomali:

anomalyScore = (detectionPointActual - detectionPointForecast) / (expectedDeviation + noiseThreshold)

Langkah selanjutnya