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ırstartTime.endTimeVerilerdeki gerçek en son zaman damgasından daha sonra ise, gerçek en son zaman damgası bitiş noktası olarak kullanılır. ŞunaendTimeeşitsestartTime, 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.slidingWindowkModel eğitimi için ise,kgeç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 bulundurunslidingWindow:- 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 ayarlayabilirsinizslidingWindow. - Eğitim/çıkarım süresi ve olası performans etkisi arasındaki denge. Daha büyük bir
slidingWindowsüre, eğitim/çıkarım süresine neden olabilir. Daha büyükslidingWindows 'nin doğruluk kazanmasına neden olacağı garantisi yoktur. Küçük birslidingWindow, modelin en iyi çözüme yakınsamasına neden olabilir. Örneğin,slidingWindowyalnızca iki noktaya sahip olduğunda bozukluklar tespit etmek zordur.
- 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
alignMode-Birden çok değişkeni (zaman serisi) zaman damgalarına hizalayın. Bu parametre için iki seçenek vardırInnerveOuter, ve varsayılan değerdirOuter.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.
Innermodelin 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.Outermodelin, 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 Inneriki değişkene birleştirintimestamp Değişken-1 Değişken-2 2020-11-01 1 1 2020-11-02 2 2 2020-11-04 4 4 Outeriki değişkene birleştirintimestamp Değişken-1 Değişken-2 2020-11-01 1 1 2020-11-02 2 2 2020-11-03 nan3 2020-11-04 4 4 2020-11-05 5 nanfillNAMethod-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,PreviousSubsequentve,ZeroFixedvarsayılan değerdirLinear.Seçenek Yöntem LinearnanDeğerleri doğrusal ilişkilendirmeden doldurPreviousBoşlukları dolduracak son geçerli değeri yayar. Örnek: [1, 2, nan, 3, nan, 4]->[1, 2, 2, 3, 3, 4]SubsequentBoş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]ZeronanDeğerleri 0 ile doldur.FixednanDeğerleri, içinde sağlanması gereken belirtilen geçerli bir değer ile doldururpaddingValue.paddingValue-Padding değerinan, ne zaman olduğunufillNAMethodFixedve 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
timestampvalue(CSV) dosyasında depolanmış olması gerekir.CSV dosyasının sütun adları tam olarak ve
timestampbüyük/büyük/büyükvalueharfe duyarlıdır.Değerler ISO 8601 ile uyumlu olmalıdır; tamsayılar veya herhangi bir sayıda ondalık
timestampvaluebasamağı 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_1series_2aynı değişkenleriseries_3series_4series_5sağ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,
Outerzaman 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
slidingWindowve 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 gelenslidingWindowve 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
startTimeendTimedeğ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ğuslidingWindowveya 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
endTimeiçin , değerden büyükstartTimeolur. Bu tür senaryolarda çıkarım "hareketli pencere" şeklinde gerçekleştirilir. Örneğin, MVAD veri kaynağından (kapsayıcı) veri kullanarak verinin anormal2021-01-01T00:00:00Z2021-01-01T23:59:00Zolup olmadığını2021-01-02T00:00:00Zbelirler. Ardından, 'de verilerin anormal olup olmadığını belirlemek için 'den2021-01-01T00:01:00Z2021-01-02T00:00:00Z'ye (kapsayıcı) verileri taşır ve2021-01-02T00:01:00Zkullanı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)endTimedevam eder. Bu nedenle, çıkarım veri kaynağınız ile başlayan ve ideal olarak toplam boyut + () içindestartTime-slidingWindowyer alan verilerislidingWindowiçermesiendTime-startTimegerekir.
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.