Anomali algılama ve tahmin etme

Bulut hizmetleri ve IoT cihazları, izleme hizmeti durumu, fiziksel üretim süreçleri ve kullanım eğilimleri gibi içgörüler elde etmek için kullanılabilecek telemetri verileri oluşturur. Zaman serisi analizi gerçekleştirmek, bu ölçümlerin desenindeki sapmaları tipik taban çizgisi desenlerine göre belirlemenin bir yoludur.

Kusto Sorgu Dili (KQL), birden çok zaman serisi oluşturma, işleme ve analiz için yerel destek içerir. KQL ile saniyeler içinde binlerce zaman serisi oluşturup analiz ederek neredeyse gerçek zamanlı izleme çözümlerine ve iş akışlarına olanak tanıyabilirsiniz.

Bu makalede, KQL'nin zaman serisi anomali algılama ve tahmin özellikleri ayrıntılı olarak anlatılmaktadır. Geçerli zaman serisi işlevleri, her özgün zaman serisinin mevsimsel, eğilim ve artık bileşenlere ayrıştırıldığı sağlam bir iyi bilinen ayrıştırma modelini temel alır. Anomaliler artık bileşendeki aykırı değerler tarafından algılanırken, tahmin mevsimsel ve eğilim bileşenleri tahmin edilir. KQL uygulaması, otomatik mevsimsellik algılama, güçlü aykırı değerler analizi ve binlerce zaman serisini saniyeler içinde işlemek için vektörleştirilmiş uygulama ile temel ayrıştırma modelini önemli ölçüde geliştirir.

Önkoşullar

  • Microsoft hesabı veya Microsoft Entra kullanıcı kimliği. Azure aboneliği gerekli değildir.
  • Zaman serisi özelliklerine genel bir bakış için Zaman serisi analizini okuyun.

Zaman serisi ayrıştırma modeli

Zaman serisi tahmini ve anomali algılama için KQL yerel uygulaması iyi bilinen bir ayrıştırma modeli kullanır. Bu model, gelecekteki ölçüm değerlerini tahmin etmek ve anormal ölçüm değerlerini algılamak için hizmet trafiği, bileşen sinyalleri ve IoT periyodik ölçümleri gibi düzenli aralıklarla ve eğilim davranışını belirtmesi beklenen ölçümler zaman serisine uygulanır. Bu regresyon işleminin varsayımı, daha önce bilinen mevsimsel davranış ve eğilim davranışı dışında zaman serisinin rastgele dağıtıldığıdır. Ardından mevsimsel ve eğilim bileşenlerinden gelecek ölçüm değerlerini tahmin edebilir, topluca temel olarak adlandırabilir ve artık bölümü yoksayabilirsiniz. Yalnızca artık kısmını kullanarak aykırı değerleri analize göre anormal değerleri de algılayabilirsiniz. Ayrıştırma modeli oluşturmak için işlevini series_decompose()kullanın. series_decompose() İşlev bir zaman serisi kümesi alır ve her zaman serisini otomatik olarak mevsimsel, eğilim, artık ve temel bileşenlerine ayırır.

Örneğin, aşağıdaki sorguyu kullanarak iç web hizmetinin trafiğini ayrıştırabilirsiniz:

let min_t = datetime(2017-01-05);
let max_t = datetime(2017-02-03 22:00);
let dt = 2h;
demo_make_series2
| make-series num=avg(num) on TimeStamp from min_t to max_t step dt by sid 
| where sid == 'TS1'   //  select a single time series for a cleaner visualization
| extend (baseline, seasonal, trend, residual) = series_decompose(num, -1, 'linefit')  //  decomposition of a set of time series to seasonal, trend, residual, and baseline (seasonal+trend)
| render timechart with(title='Web app. traffic of a month, decomposition', ysplit=panels)

Zaman serisi ayrıştırma.

  • Özgün zaman serisi sayı (kırmızı) olarak etiketlenmiştir.
  • İşlem, işlevini series_periods_detect() kullanarak mevsimselliğin otomatik olarak algılanmasıyla başlar ve mevsimsel düzeni (mor) ayıklar.
  • Mevsimsel desen, özgün zaman serisinden çıkarılır ve eğilim bileşenini bulmak için işlevi series_fit_line() kullanılarak (açık mavi) doğrusal bir regresyon çalıştırılır.
  • işlevi eğilimi çıkarır ve kalan bileşen artık bileşendir (yeşil).
  • Son olarak işlev, temeli oluşturmak için mevsimsel ve eğilim bileşenlerini ekler (mavi).

Zaman serisi anomali algılama

İşlev series_decompose_anomalies() , bir zaman serisi kümesindeki anormal noktaları bulur. Bu işlev ayrıştırma modelini derlemeyi çağırır series_decompose() ve artık bileşen üzerinde çalışır series_outliers() . series_outliers() Tukey'in çit testini kullanarak artık bileşenin her noktası için anomali puanlarını hesaplar. 1,5'in üzerinde veya -1,5'in altında anomali puanları, sırasıyla hafif bir anomali artışı veya düşüşü olduğunu gösterir. 3,0'ın üzerinde veya -3,0'ın altında anomali puanı güçlü bir anomali olduğunu gösterir.

Aşağıdaki sorgu iç web hizmeti trafiğindeki anomalileri algılamanıza olanak tanır:

let min_t = datetime(2017-01-05);
let max_t = datetime(2017-02-03 22:00);
let dt = 2h;
demo_make_series2
| make-series num=avg(num) on TimeStamp from min_t to max_t step dt by sid 
| where sid == 'TS1'   //  select a single time series for a cleaner visualization
| extend (anomalies, score, baseline) = series_decompose_anomalies(num, 1.5, -1, 'linefit')
| render anomalychart with(anomalycolumns=anomalies, title='Web app. traffic of a month, anomalies') //use "| render anomalychart with anomalycolumns=anomalies" to render the anomalies as bold points on the series charts.

Zaman serisi anomali algılama.

  • Orijinal zaman serisi (kırmızı).
  • Temel (mevsimsel + eğilim) bileşeni (mavi).
  • Özgün zaman serisinin üzerindeki anormal noktalar (mor renkle). Anormal noktalar beklenen temel değerlerden önemli ölçüde sapma gösterir.

Zaman serisi tahmini

işlevi series_decompose_forecast() , bir zaman serisi kümesinin gelecekteki değerlerini tahmin eder. Bu işlev ayrıştırma modelini derlemeyi çağırır series_decompose() ve ardından her zaman serisi için temel bileşeni geleceğe tahmin eder.

Aşağıdaki sorgu, gelecek haftanın web hizmeti trafiğini tahmin etmenize olanak tanır:

let min_t = datetime(2017-01-05);
let max_t = datetime(2017-02-03 22:00);
let dt = 2h;
let horizon=7d;
demo_make_series2
| make-series num=avg(num) on TimeStamp from min_t to max_t+horizon step dt by sid 
| where sid == 'TS1'   //  select a single time series for a cleaner visualization
| extend forecast = series_decompose_forecast(num, toint(horizon/dt))
| render timechart with(title='Web app. traffic of a month, forecasting the next week by Time Series Decomposition')

Zaman serisi tahmini.

  • Özgün ölçüm (kırmızı). Gelecekteki değerler eksiktir ve varsayılan olarak 0 olarak ayarlanır.
  • Gelecek haftanın değerlerini tahmin etmek için temel bileşeni (mavi) tahmin edin.

Ölçeklenebilirlik

Kusto Sorgu Dili söz dizimi, birden çok zaman serisini işlemek için tek bir çağrıyı etkinleştirir. Benzersiz iyileştirilmiş uygulaması, neredeyse gerçek zamanlı senaryolarda binlerce sayacı izlerken etkili anomali algılama ve tahmin için kritik öneme sahip hızlı performans sağlar.

Aşağıdaki sorgu üç zaman serisinin aynı anda işlenmesini gösterir:

let min_t = datetime(2017-01-05);
let max_t = datetime(2017-02-03 22:00);
let dt = 2h;
let horizon=7d;
demo_make_series2
| make-series num=avg(num) on TimeStamp from min_t to max_t+horizon step dt by sid
| extend offset=case(sid=='TS3', 4000000, sid=='TS2', 2000000, 0)   //  add artificial offset for easy visualization of multiple time series
| extend num=series_add(num, offset)
| extend forecast = series_decompose_forecast(num, toint(horizon/dt))
| render timechart with(title='Web app. traffic of a month, forecasting the next week for 3 time series')

Zaman serisi ölçeklenebilirliği.

Özet

Bu belgede, zaman serisi anomali algılama ve tahmin için yerel KQL işlevleri ayrıntılı olarak anlatılmaktadır. Her özgün zaman serisi, anomalileri ve/veya tahminleri algılamak için mevsimsel, eğilim ve artık bileşenlere ayrılır. Bu işlevler hata algılama, tahmine dayalı bakım, talep ve yük tahmini gibi neredeyse gerçek zamanlı izleme senaryoları için kullanılabilir.