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. slidingWindow k 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 slidingWindow 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 her değişkenin bir değere sahip olduğu zaman damgalarına, yani tüm değişkenlerin kesişimine göre raporalacağını belirtir. Outer modelin, her değişkenin 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

    Inner 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

    Outer 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 , Previous Subsequent ve, Zero Fixed 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 fillNAMethod Fixed ve bu durumda sağlanması gereken zamanı doldurmanız için kullanılır. Diğer durumlarda 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 modelle ilgili diğer meta verileri ve giriş verilerini işaretlemek için bunu kullanabilirsiniz. Varsayılan değer boş bir dizedir.

Giriş verileri şeması

MVAD bir ölçüm grubundan anomalileri algılar ve her ölçümü değişken veya zaman serisi olarak kabul ederiz.

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

  • Her değişkenin iki ve yalnızca iki alanı ( ve ) olmalı ve virgülle ayrılmış değerler timestamp value (CSV) dosyasında depolanmış olması gerekir.

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

  • Değerler ISO 8601 ile uyumlu olmalıdır; tamsayılar veya herhangi bir sayıda ondalık timestamp value basamağı olan ondalık sayılar olabilir. 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 damgası saat, dakika ve/veya saniyeleri varsa, API'leri çağırmadan önce bunların düzgün bir şekilde yuvarlanmış olduğundan emin olun.

    Örneğin, veri sıklığınız her 30 saniyede bir veri noktası olacaksa ancak "12:00:01" ve "12:00:28" gibi zaman damgası görüyorsanız, zaman damgasını "12:00:00" ve "12:00:30" gibi yeni değerlere önceden işlemeniz gerektiğinin güçlü bir sinyalidir.

    Ayrıntılar için lütfen en iyi yöntemler belgesinin "Zaman damgası yukarı" 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, eğitim için , , , ve kullanıyorsanız çıkarım için tam olarak series_1 series_2 aynı değişkenleri series_3 series_4 series_5 sağlasanız gerekir.

  • CSV dosyaları bir zip dosyası olarak sıkıştırılır ve bir Azure blob kapsayıcıya yüklenmeli. Zip dosyasında istediğiniz adı bulun.

Klasör yapısı

Veri hazırlamada sık yapılan bir hata, zip dosyasındaki ek klasörlerdir. Örneğin, zip dosyasının adının olduğunu series.zip varsayalım. Ardından, dosyaları yeni bir klasöre açtıktan sonra CSV dosyalarının doğru ./series yolu olur ve yanlış bir yol ./series/series_1.csv ./series/foo/bar/series_1.csv olabilir.

Dosyanın içinde zip dosyasının sıkıştırması açık olduktan sonra dizin ağacının doğru Windows

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

Dosyanın içinde zip dosyasının sıkıştırması açık olduktan sonra dizin ağacının yanlış Windows

.
└── 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ında olmalı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 gerçekten çı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 slidingWindow ve bir veri noktası içerebilir; daha sonra aynı sayıda veri noktasına sahip başka bir ZIP dosyası oluşturabilir ( slidingWindow + 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. alignMode Outer (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, 1 ve 2 değişkende ortak bir zaman damgası yoktur ve alignMode Inner birleştirilmiş tablo boş olur.

Bu nedenle, 1 ve 2 değişkeninin zaman damgası önceden işlenmeli (en yakın 30 saniyelik zaman damgasına yuvarlanmış) ve yeni zaman serisi şu şekildedir:

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ştirilen tablo daha mantıklıdır.

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

Yakın zaman damgasında farklı değişkenlerin değerleri düzgün hizalanır ve MVAD modeli artık bağıntı bilgilerini ayıklar.

Yaygın tuzaklar

Hata kodu tablosu dışında,MVAD API'lerini kullanırken sizin gibi bazı yaygın tuzaklar hakkında bilgi öğrendik. Bu tablo bu sorunlardan kaçınmanıza yardımcı olur.

Tuzak Sonucu Açıklama ve çözüm
Eğitim verilerinde ve/veya çıkarım verilerinde zaman damgası, her değişkenin ilgili veri sıklığıyla uyumlu olacak şekilde yukarı yuvarlanmadı. Çıkarım sonuçlarının zaman damgası beklendiği gibi değildir: çok az zaman damgası veya çok fazla zaman damgası. Lütfen Zaman damgası yuvarlaması'ne bakın.
Eğitim verisinde çok fazla anormal veri noktası var Eğitim sırasında anormal veri noktalarını normal desenler olarak kabul eden model doğruluğu olumsuz yönde etkilemektedir. Ampirik olarak anormal oranı %1'in altında veya altında tutmanın size yardımcı olduğunu unutmayın.
Çok az eğitim verisi Model doğruluğu tehlikeye girdi. Ampirik olarak, bir MVAD modelini eğittikte iyi bir doğruluk için değişken başına 15.000 veya daha fazla veri noktası (zaman damgası) gerekir.
Tüm veri noktalarını isAnomaly = true anomali olarak alma Çok fazla hatalı pozitif sonuç Hem hem de (veya ) kullanarak ciddi olan anomalileri yok edin ve (isteğe bağlı olarak) rastgele gürültüleri bastırmak için anomalilerin süresini kontrol etmek için isAnomaly severity score gruplama kullan. ile arasındaki fark için lütfen aşağıdaki SSS bölümüne severity 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 siniz. ve startTime endTime 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:00Z 2021-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:00Z 2021-01-02T00:00:00Z 'ye (kapsayıcı) verileri taşır ve 2021-01-02T00:01:00Z kullanır. Tarafından belirtilen son zaman damgasına (veya gerçek en son zaman damgasına) kadar aynı şekilde (karşılaştıracak 1.440 veri noktası alır) endTime 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 istek 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 severity score 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üresinden daha karmaşık kurallara ihtiyaç olduğunu tespit ettiyebilirsiniz. Daha güçlü filtreler oluşturmak için bunu severity severity score 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