Anomali algılayıcı çok değişkenli API 'sini kullanmak için en iyi uygulamalar

Bu makale, multivarianomali algılayıcısı (MVAD) API 'Lerini kullanırken izlenecek önerilen uygulamalar etrafında rehberlik sağlar. Bu öğreticide şunları yapmanız gerekir:

  • API kullanımı: hata olmadan MVAD 'yi nasıl kullanacağınızı öğrenin.
  • Veri Mühendisliği: MVAD 'nin daha iyi doğrulukla yararlanması için verilerinize en iyi şekilde aşılmasını öğrenin.
  • Ortak tehlikilerin: müşterilerin karşıladığını yaygın olarak kullanmaktan kaçının.
  • SSS: sık sorulan soruların yanıtlarını öğrenin.

API kullanımı

MVAD kullanırken hataları önlemek için bu bölümdeki yönergeleri izleyin. Hala hata alırsanız, açıklamalar ve gerçekleştirilecek eylemler için lütfen hata kodlarının tam listesine bakın.

Giriş parametreleri

Gerekli parametreler

Bu üç parametre eğitim ve çıkarım API 'SI isteklerinde gereklidir:

  • source-Azure Blob 'da bulunan zip dosyanızın bağlantısı, paylaşılan erişim imzaları (SAS) ile Depolama.
  • startTime -Eğitim veya çıkarım için kullanılan verilerin başlangıç saati. Verilerdeki en eski zaman damgasından daha önce ise, gerçek en erken zaman damgası başlangıç noktası olarak kullanılır.
  • endTime -Eğitim veya çıkarım için kullanılan verilerin bitiş saati, daha sonra veya değerine eşit olmalıdır startTime . endTimeVerilerdeki gerçek en son zaman damgasından daha sonra ise, gerçek en son zaman damgası bitiş noktası olarak kullanılır. Şuna endTime eşitse startTime , akış senaryolarında sıklıkla kullanılan tek bir veri noktasının çıkarımı anlamına gelir.

Eğitim API 'SI için isteğe bağlı parametreler

Eğitim API 'SI için diğer parametreler isteğe bağlıdır:

  • slidingWindow -Anormallikleri belirlemede kaç veri noktası kullanılır. 28 ve 2.880 arasında bir tamsayı. Varsayılan değer 300 ' dir. slidingWindowk Model eğitimi için ise, k geçerli sonuçları almak için çıkarım sırasında en az noktaya, kaynak dosyadan erişilebilir olmalıdır.

    Bir sonraki veri noktasının bir anomali olup olmadığına karar vermek için MVAD, veri noktalarının bir kesimini alır. Segmentin uzunluğu slidingWindow . Lütfen bir değer seçerken iki şeyi aklınızda bulundurun slidingWindow :

    1. Verilerinizin özellikleri: düzenli ve örnekleme hızının olup olmadığı. Verileriniz periyodik olduğunda, 1-3 döngülerinin uzunluğunu olarak ayarlayabilirsiniz slidingWindow . Verileriniz, dakika düzeyi veya ikinci düzey gibi yüksek sıklığa (küçük ayrıntı düzeyi) sahip olduğunda görece daha yüksek bir değer ayarlayabilirsiniz slidingWindow .
    2. Eğitim/çıkarım süresi ve olası performans etkisi arasındaki denge. Daha büyük bir slidingWindow süre, eğitim/çıkarım süresine neden olabilir. Daha büyük s 'nin doğruluk kazanmasına neden olacağı garantisi yoktur. Küçük bir slidingWindow , modelin en iyi çözüme yakınsamasına neden olabilir. Örneğin, slidingWindow yalnızca iki noktaya sahip olduğunda bozukluklar tespit etmek zordur.
  • alignMode -Birden çok değişkeni (zaman serisi) zaman damgalarına hizalayın. Bu parametre için iki seçenek vardır Inner ve Outer , ve varsayılan değerdir Outer .

    Bu parametre, değişkenlerin zaman damgası dizileri arasında bir hatalı hizalanmış olduğunda kritik öneme sahiptir. Modelin, daha fazla işlemeden önce değişkenleri aynı zaman damgası dizisine hizalaması gerekir.

    Inner modelin algılama sonuçlarını yalnızca Inner bir değere sahip olduğu zaman damgalarına, yani tüm değişkenlerin kesişimine göre raporalacağını belirtir. Outer modelin, Outer bir değere sahip olduğu zaman damgalarına yönelik algılama sonuçlarını rapor edecek olduğu anlamına gelir, yani tüm değişkenlerin birleşimi.

    Farklı değerleri açıklamak için bir örnek aşağıda verilmiştir alignModel .

    Değişken-1

    timestamp değer
    2020-11-01 1
    2020-11-02 2
    2020-11-04 4
    2020-11-05 5

    Değişken-2

    timestamp değer
    2020-11-01 1
    2020-11-02 2
    2020-11-03 3
    2020-11-04 4

    iki değişkene birleştirin

    timestamp Değişken-1 Değişken-2
    2020-11-01 1 1
    2020-11-02 2 2
    2020-11-04 4 4

    iki değişkene birleştirin

    timestamp Değişken-1 Değişken-2
    2020-11-01 1 1
    2020-11-02 2 2
    2020-11-03 nan 3
    2020-11-04 4 4
    2020-11-05 5 nan
  • fillNAMethod -Birleştirilmiş tabloyu nasıl dolduracağı nan . Birleştirilmiş tabloda eksik değerler olabilir ve bunların düzgün şekilde işlenmesi gerekir. Bunları doldurmanız için birkaç yöntem sunuyoruz. Seçenekler,, Linear , PreviousSubsequent ve, ZeroFixed varsayılan değerdir Linear .

    Seçenek Yöntem
    Linear nanDeğerleri doğrusal ilişkilendirmeden doldur
    Previous Boşlukları dolduracak son geçerli değeri yayar. Örnek: [1, 2, nan, 3, nan, 4] ->[1, 2, 2, 3, 3, 4]
    Subsequent Boşlukları doldurmanız için sonraki geçerli değeri kullanın. Örnek: [1, 2, nan, 3, nan, 4] ->[1, 2, 3, 3, 4, 4]
    Zero nanDeğerleri 0 ile doldur.
    Fixed nanDeğerleri, içinde sağlanması gereken belirtilen geçerli bir değer ile doldurur paddingValue .
  • paddingValue -Padding değeri nan , ne zaman olduğunu fillNAMethodFixed ve bu durumda sağlanması gereken zamanı doldurmanız için kullanılır. Diğer durumlarda bu isteğe bağlıdır.

  • displayName -Bu, modelleri tanımlamak için kullanılan isteğe bağlı bir parametredir. Örneğin, parametreleri, veri kaynaklarını ve model ve onun giriş verileri hakkında diğer meta verileri işaretlemek için kullanabilirsiniz. Varsayılan değer boş bir dizedir.

Giriş verileri şeması

MVAD, bir ölçüm grubundan bozuklukları algılar ve her ölçüyü bir değişken ya da zaman serisi olarak çağırıyoruz.

  • Kabul edilen şemayı denetlemek için Microsoft 'tan örnek veri dosyasını indirebilirsiniz: https://aka.ms/AnomalyDetector/MVADSampleData

  • Her değişkenin iki ve yalnızca iki alanı olmalıdır ve timestampvalue bir virgülle ayrılmış değerler (CSV) dosyasında depolanması gerekir.

  • CSV dosyasının sütun adları tam olarak timestamp ve value büyük/küçük harfe duyarlı olmalıdır.

  • timestampDeğerler ıso 8601 ile uyumlu olmalıdır; value herhangi bir sayıda ondalık basamakla tamsayı veya ondalık olabilir. Bir CSV dosyasının içeriğine iyi bir örnek:

    timestamp değer
    2019-04-01T00:00:00Z 5
    2019-04-01T00:01:00Z 3.6
    2019-04-01T00:02:00Z 4
    ... ...

    Not

    Zaman Damgalarınız saat, dakika ve/veya saniye içeriyorsa API 'Leri çağırmadan önce doğru şekilde yuvarlandıklarından emin olun.

    Örneğin, veri sıklığınızın her 30 saniyede bir veri noktası olması gerekiyorsa, ancak "12:00:01" ve "12:00:28" gibi zaman damgaları görüyorsanız, zaman damgalarını "12:00:00" ve "12:00:30" gibi yeni değerlere önceden uygulamanız gerektiğini belirten güçlü bir sinyaldir.

    Ayrıntılar için lütfen en iyi uygulamalar belgesinde "zaman damgası yuvarlama" bölümüne bakın.

  • CSV dosyasının adı, değişken adı olarak kullanılır ve benzersiz olmalıdır. Örneğin, "temperature.csv" ve "humidity.csv".

  • Eğitim değişkenleri ve çıkarım değişkenleri tutarlı olmalıdır. Örneğin,,, ve kullanıyorsanız,,,, series_1series_2series_3series_4 ve series_5 için, çıkarım için tam olarak aynı değişkenleri sağlamanız gerekir.

  • CSV dosyaları bir ZIP dosyasında sıkıştırılıp bir Azure Blob kapsayıcısına yüklenmelidir. ZIP dosyasında istediğiniz ad olabilir.

Klasör yapısı

Veri hazırlığında yaygın bir hata ZIP dosyasındaki ek klasörleridir. Örneğin, ZIP dosyasının adının olduğunu varsayalım series.zip . Dosyaları yeni bir klasöre ayıkladıktan sonra ./series CSV dosyalarının ./series yolu ./series/series_1.csv ve ./series/series_1.csv bir yol olabilir ./series/foo/bar/series_1.csv .

Windows içindeki ZIP dosyasını ayıkladıktan sonra dizin ağacının doğru örneği

.
└── series
    ├── series_1.csv
    ├── series_2.csv
    ├── series_3.csv
    ├── series_4.csv
    └── series_5.csv

Windows içindeki ZIP dosyası açıldıktan sonra Dizin ağacına yanlış bir örnek

.
└── series
    └── series
        ├── series_1.csv
        ├── series_2.csv
        ├── series_3.csv
        ├── series_4.csv
        └── series_5.csv

Veri Mühendisliği

Artık kodunuzu MVAD API 'Leriyle bir hata olmadan çalıştırabileceksiniz. Model doğruluğunu artırmak için ne yapılmalı?

Veri kalitesi

  • Model, geçmiş verilerden normal desenleri öğrendiğinde, eğitim verileri sistemin genel normal durumunu temsil etmelidir. Eğitim verileri anormalilerin tamamsın bu tür desenler öğrenilecek şekilde modelin bu tür desenleri öğreni zor olur. Olağan dışı hız eşiği, iyi doğruluk için %1 ' dir.
  • Genel olarak, eğitim verilerinin eksik değer oranı %20 ' nin altındaolmalıdır. Çok fazla eksik veri, normal desenler olarak öğrenilecek şekilde otomatik olarak doldurulmuş değerler (genellikle doğrusal değerler veya sabit değerler) ile bitebilirler. Bu durum gerçek (eksik) veri noktalarının bozukluklar olarak algılanmasının oluşmasına neden olabilir. Ancak, yüksek bir eksik oranın kabul edilebilir olduğu durumlar vardır. Örneğin, bir gruptaki iki değişkeniniz (zaman serisi) varsa, Outer zaman damgalarını hizalamak için modunu kullanın. Bunlardan birinin bir dakikalık ayrıntı düzeyi vardır, diğeri saatlik ayrıntı düzeyi içerir. Sonra, en az 59/60 = 98,33% eksik veri noktası olan saatlik değişken. Bu gibi durumlarda, genellikle çok fazla dalgalanmadığında, kullanılabilir tek değeri (eksik değil) kullanarak saatlik değişkeni doldurmanız ince.

Veri miktarı

  • MVAD 'nin temel modelinin milyonlarca parametresi vardır. En uygun parametre kümesini öğrenmek için en az sayıda veri noktasına ihtiyaç duyuyor. Empırical kuralı, modeli iyi doğrulukla eğitmek için değişken başına 15.000 veya daha fazla veri noktası (zaman damgası) sağlamanız gerekir. Genel olarak, eğitim verileri, doğruluk açısından daha iyidir. Ancak, bu kadar verileri tahakkuk etmediğiniz durumlarda, daha az veri ile denemeler yapmanız ve riskli doğruluğun hala kabul edilebilir olup olmadığını görmeniz önerilir.

  • Çıkarım API 'sini her çağırdığınızda, kaynak veri dosyasının yeterli veri noktası içerdiğinden emin olmanız gerekir. Bu, normalde slidingWindow ve slidingWindow çıkarım sonuçları gerektiren veri noktalarının sayısıdır. Örneğin, bir akış durumunda, yeni bir zaman damgasında çıkardığınızda, veri dosyası yalnızca önde gelen ve bir veri noktası içerebilir; daha sonra aynı sayıda veri noktasına sahip başka bir ZIP dosyası oluşturabilir ( + 1), ancak bir adımı "sağ" tarafa taşıyabilir ve başka bir çıkarım işi için gönderebilirsiniz.

    Önde gelen kayan pencerenin önünde kalan veya "önce" ne kadar her şey, çıkarım sonucunu etkilemez ve yalnızca performansı düşürme işlemine neden olabilir. Aşağıdaki, bir hataya yol açabilecek bir şeydir NotEnoughInput .

Zaman damgası yuvarlama

Bir değişken grubunda (zaman serisi), her değişken bağımsız bir kaynaktan toplanabilir. Farklı değişkenlerin zaman damgaları birbirleriyle ve bilinen sıklıklarla tutarsız olabilir. İşte basit bir örnek.

Değişken-1

timestamp değer
12:00:01 1.0
12:00:35 1,5
12:01:02 0,9
12:01:31 2,2
12:02:08 1.3

Değişken-2

timestamp değer
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

Her 30 saniyede bir veri noktası gönderen iki sensörden toplanan iki değişkenimiz vardır. Ancak algılayıcılar, veri noktalarını katı bir sıklıkta, ancak bazen daha önce ve bazen daha sonra göndermiyor. MVAD farklı değişkenler arasında önemli bir ilişki alacak olduğundan, ölçümlerin sistem durumunu doğru bir şekilde yansıtması için zaman damgaları doğru şekilde hizalanmalıdır. Yukarıdaki örnekte, 1 değişkeninin ve 2 değişkeninin zaman damgaları, hizalamadan önceki sıklığıyla doğru şekilde ' yuvarlanmış ' olmalıdır.

Önceden işleniyorlarsa ne olacağını görelim. alignModeOuter (Yani, iki kümenin birleşimi anlamına gelir) olarak ayarlandıysa, birleştirilmiş tablo

timestamp Değişken-1 Değişken-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 1.3 nan

nan eksik değerleri gösterir. Kuşkusuz, birleştirilmiş tablo beklediğiniz gibi değildir. Değişken 1 ve değişken 2 ayırma ve mvad modeli aralarında bağıntılar hakkında bilgi ayıklayamaz. Olarak ayarlanırsa alignModeInner , 1. ve 2. değişkende ortak bir zaman damgası bulunmadığından birleştirilmiş tablo boş olur.

Bu nedenle, 1. ve 2. değişkenin zaman damgaları önceden işlenmeli (en yakın 30 saniyelik zaman damgalarına yuvarlanır) ve yeni zaman serisi

Değişken-1

timestamp değer
12:00:00 1.0
12:00:30 1,5
12:01:00 0,9
12:01:30 2,2
12:02:00 1.3

Değişken-2

timestamp değer
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

Artık birleştirilmiş tablo daha mantıklı.

timestamp Değişken-1 Değişken-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 1.3 2.0

Kapalı zaman damgalarına göre farklı değişkenlerin değerleri iyi hizalanmıştır ve MVAD modeli artık bağıntı bilgilerini ayıklayabilir.

Ortak, genel olarak

Hata kodu tablosundanayrı olarak, MVAD API 'lerini kullanırken bazı yaygın bir genel kullanım gibi müşterilerden öğreniyoruz. Bu tablo, bu sorunlardan kaçınmak için size yardımcı olacaktır.

Süsonbahar Sonucudur Açıklama ve çözüm
Eğitim verileri ve/veya çıkarım verilerinde zaman damgaları, her değişkenin ilgili veri sıklığıyla uyum sağlamak için yuvarlanır. Çıkarım sonuçlarının zaman damgaları beklenen şekilde değil: çok az sayıda zaman damgası veya çok fazla zaman damgası. Lütfen zaman damgası yuvarlamabölümüne bakın.
Eğitim verilerinde çok fazla sayıda anormal veri noktası Model doğruluğu, eğitim sırasında anormal veri noktalarına normal desenler olarak davrandığı için olumsuz etkilenir. Sürekli olarak, %1 ' de anormal ücreti, yardımcı olur.
Çok az eğitim verisi Model doğruluğu tehlikeye atılırsa. Bir MVAD modelinin eğitiminde, iyi bir doğruluk sağlamak için değişken başına 15.000 veya daha fazla veri noktası (zaman damgası) gerekir.
Tüm veri noktalarını isAnomaly=true bozukluklar olarak alma Çok fazla hatalı pozitif sonuç isAnomalyseverity Önemli olmayan bozukluklar için hem hem de (veya) kullanmanız gerekir score . (isteğe bağlı olarak), rastgele bozukluklar için anormal süreyi denetlemek üzere gruplamayı kullanır. ile arasındaki fark için lütfen aşağıdaki SSS bölümüne score bakın.
Alt klasörler, eğitim veya çıkarım için veri dosyasına sıkıştırılır. Alt klasörlerin içindeki csv veri dosyaları eğitim ve/veya çıkarım sırasında yoksayılır. Zip dosyasında alt klasöre izin verilmez. Ayrıntılar için lütfen Klasör yapısı'ne bakın.
Çıkarım veri dosyasında çok fazla veri: Örneğin, çıkarım verileri zip dosyasındaki tüm geçmiş verileri sıkıştırma Herhangi bir hata göremeyebilirsiniz ancak zip dosyasını Hem Azure Blob'a hem de çıkarım çalıştırmayı denedikten sonra performansı düşer. Ayrıntılar için lütfen Veri miktarı'ne bakın.
Henüz Anomali Algılayıcısı MVAD desteğine sahip olan ve MVAD API'lerini çağıran Azure bölgelerinde kaynak oluşturma MVAD API'lerini çağırırken "kaynak bulunamadı" hatası alırsınız. Önizleme aşamasında MVAD yalnızca sınırlı bölgelerde kullanılabilir. MVAD bölge dışarı Anomali Algılayıcısı güncel tutmak için lütfen Anomali Algılayıcısı'daki yeniler'e yer işareti ekleyin. Ayrıca bir sorun GitHub veya belirli bölgeler için istekte AnomalyDetector@microsoft.com bulunarak bizimle iletişime geçebilirsiniz.

SSS

MVAD kayan pencere nasıl çalışır?

Şimdi MVAD'nin kayan penceresinin nasıl çalıştığını öğrenmek için iki örnek kullanelim. = 1.440 değerine sahip olduğunu ve giriş verilerinizin bir dakikalık slidingWindow ayrıntıda olduğunu varsayalım.

  • Akış senaryosu:"2021-01-02T00:00:00Z" noktasındaki ONE veri noktasının anormal olup olmadığını tahmin etmek istiyor. ve startTimeendTime değeri aynı olacaktır ("2021-01-02T00:00:00Z"). Ancak çıkarım veri kaynağınız en az 1.440 + 1 zaman damgası içermeli. Çünkü MVAD, hedefin bir anomali olup olmadığını belirlemek için hedef veri noktasından ("2021-01-02T00:00:00Z") önce gelen verileri alır. Bu durumda gereken önde gelen verilerin uzunluğu slidingWindow veya 1.440'tır. 1.440 = 60 * 24, bu nedenle giriş verilerinizin en son "2021-01-01T00:00:00Z" ile başlaması gerekir.

  • Toplu işsenaryosu: Tahmin etmek için birden çok hedef veri noktanız vardır. sizin endTime için , değerden büyük startTime olur. Bu tür senaryolarda çıkarım" "hareketli pencere" şeklinde gerçekleştirilir. Örneğin, MVAD veri kaynağından (kapsayıcı) veri kullanarak verinin anormal 2021-01-01T00:00:00Z2021-01-01T23:59:00Z olup olmadığını 2021-01-02T00:00:00Z belirler. Ardından, 'de verilerin anormal olup olmadığını belirlemek için 'den 2021-01-01T00:01:00Z2021-01-02T00:00:00Z 'ye (kapsayıcı) 2021-01-02T00:01:00Z verileri taşır ve kullanır. Aynı şekilde (karşılaştıracak 1.440 veri noktası alarak) tarafından belirtilen son zaman damgasına (veya gerçek en son zaman damgasına) endTime kadar devam eder. Bu nedenle, çıkarım veri kaynağınız ile başlayan ve ideal olarak toplam boyut + () içinde startTime - slidingWindow yer alan verileri slidingWindow içermesi endTime - startTime gerekir.

Neden yalnızca eğitim ve çıkarım için zip dosyaları kabul edilsin?

Toplu iş senaryolarında hem eğitim hem de çıkarım verisi boyutunun çok büyük olmasını ve HTTP isteği gövdesine konamaz olmasını beklediğiniz için zip dosyaları kullanıyoruz. Bu, kullanıcıların model doğrulaması veya veri analizi için geçmiş veriler üzerinde toplu çıkarım gerçekleştirmesini sağlar.

Ancak bu, akış çıkarı ve yüksek sıklıktaki veriler için biraz uygun olabilir. Kullanıcıların istek gövdesinde veri geçeceği akış çıkarı için özel olarak tasarlanmış yeni bir API eklemeye yönelik bir planımız var.

ile arasındaki fark severityscore nedir?

Normalde, işletmeniz severity için o kadar önemli olan 'anomalileri' yok etmek için filtre olarak kullanmanızı öneririz. Senaryo ve veri deseninize bağlı olarak, daha az önemli olan anomaliler genellikle görece daha düşük değerlere veya rastgele ani artışlar gibi tek başına severity (sürek olmayan) severity yüksek değerlere sahiptir.

Eşiklere göre veya sürekli yüksek değerlerin süresine göre daha karmaşık kurallara ihtiyacınız olduğu durumlarda, daha güçlü filtreler oluşturmak için severityseverityscore kullanabilirsiniz. MVAD'nin anomalileri score belirlemek için nasıl kullan olduğunu anlama:

Bir veri noktasının hem genel hem de yerel açıdan anormal olup olmadığını göz önünde bulundurabilirsiniz. Bir score zaman damgası belirli bir eşiğin üzerinde ise zaman damgası anomali olarak işaretlenir. eşikten score düşükse ancak segmentte görece daha yüksekse, anomali olarak da işaretlenir.

Sonraki adımlar