Azure Veri Gezgini'de anomali algılama ve tahmin etme

Azure Veri Gezgini, bulut hizmetlerinden veya IoT cihazlarından devam eden telemetri verilerinin toplanmasını sağlar. Bu veriler, hizmet durumunu izleme, fiziksel üretim süreçleri, kullanım eğilimleri ve yük tahmini gibi çeşitli içgörüler için analiz edilir. Analiz, ölçümün tipik normal taban çizgisi desenine göre sapma desenini bulmak için seçilen ölçümlerin zaman serisinde gerçekleştirilir. Azure Veri Gezgini birden çok zaman serisi oluşturma, işleme ve analiz için yerel destek içerir. Saniyeler içinde binlerce zaman serisi oluşturup analiz ederek neredeyse gerçek zamanlı izleme çözümlerine ve iş akışlarına olanak tanır.

Bu makalede Azure Veri Gezgini zaman serisi anomali algılama ve tahmin özellikleri ayrıntılı olarak açıklanmaktadı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. Azure Veri Gezgini 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

Zaman serisi özelliklerine genel bir bakış için Azure Veri Gezgini'de Zaman serisi analizini okuyun.

Zaman serisi ayrıştırma modeli

Azure Veri Gezgini zaman serisi tahmini ve anomali algılaması için yerel uygulama, 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:

[Sorguyu çalıştırmak için tıklayın]

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)

Time series decomposition.

  • Ö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. Anomalinin 3,0'ın üzerinde veya -3,0'ın altında olması güçlü bir anomali olduğunu gösterir.

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

[Sorguyu çalıştırmak için tıklayın]

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.

Time series anomaly detection.

  • 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:

[Sorguyu çalıştırmak için tıklayın]

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')

Time series forecasting.

  • Ö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

Azure Veri Gezgini 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:

[Sorguyu çalıştırmak için tıklayın]

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')

Time series scalability.

Özet

Bu belgede zaman serisi anomali algılama ve tahmin için yerel Azure Veri Gezgini işlevleri ayrıntılı olarak açıklanmaktadı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.

Sonraki adımlar

Azure Veri Gezgini'daki Makine öğrenmesi özellikleri hakkında bilgi edinin.