Öğretici: Bir saat içinde Çok Değişkenli Anomali Algılamayı Öğrenme
Anomali Algılayıcısı Anomali Algılama (MVAD) ile çalışma, bir ölçüm grubundan gelen anomalileri kontrolsüz bir şekilde algılamaya yarayan gelişmiş bir AI aracıdır.
Genel olarak, MVAD kullanmak için şu adımları atabilirsiniz:
- Azure'Anomali Algılayıcısı MVAD destekleyen bir kaynak oluşturun.
- Verilerinizi hazırlayın.
- Bir MVAD modelini eğitin.
- Modelinizin durumunu sorgular.
- Eğitilen MVAD modeliyle anomalileri algılama.
- Çıkarım sonuçlarını alma ve yorumlama.
Bu öğreticide şunları bulacaksınız:
- Verilerinizi doğru biçimde hazırlamayı anlama.
- MVAD ile eğitip çıkarımları anlama.
- Giriş parametrelerini ve çıkış çıkarım sonuçlarını yorumlamayı anlama.
1. MVAD Anomali Algılayıcısı bir kaynak oluşturma
- Azure aboneliğiniz yoksa oluşturma - Ücretsiz abonelik oluşturma
- Azure aboneliğinize sahip olduktan sonra API anahtarı Anomali Algılayıcısı nızı ve API Azure portal almak için Azure portal kaynağı oluşturun.
Not
Ö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.
2. Veri hazırlama
Ardından eğitim verilerinizi (ve çıkarım verilerinizi) hazırlamanız gerekir.
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
Verileri sıkıştırma ve karşıya yükleme araçları
Bu bölümde, MVAD giriş verileriyle ilgili kendi uygulama mantığınıza eklemek için kopyalayıp düzenleyemezsiniz bazı örnek kod ve araçlar paylaşacağız.
NIX'te CSV * dosyalarını sıkıştırma
zip -j series.zip series/*.csv
Csv dosyalarını Windows
- Tüm CSV dosyalarının bulunduğu klasöre gidin.
- Size gereken tüm CSV dosyalarını seçin.
- CSV dosyalarından birini sağ tıklatın ve öğesini
Send toseçin. - Açılan
Compressed (zipped) folderlisteden seçin. - Zip dosyasını gereken şekilde yeniden adlandırın.
Python kodu & Azure Blob depolamaya veri Depolama
Azure Blob'a dosya yükleme hakkında bilgi edinmek için bu belgeye başvurabilirsiniz.
Veya aşağıdaki örnek koda başvurarak zipping ve uploading yapabilirsiniz. Bu bölümdeki Python kodunu kopyalayıp bir .py dosyası (örneğin, ) olarak kaydedebilir ve aşağıdaki gibi zipAndUpload.py komut satırlarını kullanarak çalıştırabilirsiniz:
python zipAndUpload.py -s "foo\bar" -z test123.zip -c {azure blob connection string} -n container_xxxBu komut tüm CSV dosyalarını adlı
foo\bartek bir zip dosyasına sıkıştırır.test123.zipBlobutest123.zipkapsayıcınızacontainer_xxxyükler.python zipAndUpload.py -s "foo\bar" -z test123.zip -c {azure blob connection string} -n container_xxx -rBu komut yukarıdakiyle aynı şeyi yapar, ancak başarıyla karşıya yüklendikten sonra zip
test123.zipdosyasını siler.
Bağımsız değişken:
--source-folder,-s, CSV dosyalarını içeren kaynak klasörün yolu--zipfile-name,-z, zip dosyasının adı--connection-string,-c, bağlantı dizesini blob'nize--container-name,-n, kapsayıcının adı--remove-zipfile,-r, if on, zip dosyasını kaldırın
import os
import argparse
import shutil
import sys
from azure.storage.blob import BlobClient
import zipfile
class ZipError(Exception):
pass
class UploadError(Exception):
pass
def zip_file(root, name):
try:
z = zipfile.ZipFile(name, "w", zipfile.ZIP_DEFLATED)
for f in os.listdir(root):
if f.endswith("csv"):
z.write(os.path.join(root, f), f)
z.close()
print("Compress files success!")
except Exception as ex:
raise ZipError(repr(ex))
def upload_to_blob(file, conn_str, cont_name, blob_name):
try:
blob_client = BlobClient.from_connection_string(conn_str, container_name=cont_name, blob_name=blob_name)
with open(file, "rb") as f:
blob_client.upload_blob(f, overwrite=True)
print("Upload Success!")
except Exception as ex:
raise UploadError(repr(ex))
if __name__ == "__main__":
parser = argparse.ArgumentParser()
parser.add_argument("--source-folder", "-s", type=str, required=True, help="path to source folder")
parser.add_argument("--zipfile-name", "-z", type=str, required=True, help="name of the zip file")
parser.add_argument("--connection-string", "-c", type=str, help="connection string")
parser.add_argument("--container-name", "-n", type=str, help="container name")
parser.add_argument("--remove-zipfile", "-r", action="store_true", help="whether delete the zip file after uploading")
args = parser.parse_args()
try:
zip_file(args.source_folder, args.zipfile_name)
upload_to_blob(args.zipfile_name, args.connection_string, args.container_name, args.zipfile_name)
except ZipError as ex:
print(f"Failed to compress files. {repr(ex)}")
sys.exit(-1)
except UploadError as ex:
print(f"Failed to upload files. {repr(ex)}")
sys.exit(-1)
except Exception as ex:
print(f"Exception encountered. {repr(ex)}")
try:
if args.remove_zipfile:
os.remove(args.zipfile_name)
except Exception as ex:
print(f"Failed to delete the zip file. {repr(ex)}")
3. MVAD Modeli Eğitma
Burada bir MVAD modeli eğitmek için örnek istek gövdesi ve Python'daki örnek kod ve yer alın.
// Sample Request Body
{
"slidingWindow": 200,
"alignPolicy": {
"alignMode": "Outer",
"fillNAMethod": "Linear",
"paddingValue": 0
},
// This could be your own ZIP file of training data stored on Azure Blob and a SAS url could be used here
"source": "https://aka.ms/AnomalyDetector/MVADSampleData",
"startTime": "2021-01-01T00:00:00Z",
"endTime": "2021-01-02T12:00:00Z",
"displayName": "Contoso model"
}
# Sample Code in Python
########### Python 3.x #############
import http.client, urllib.request, urllib.parse, urllib.error, base64
headers = {
# Request headers
'Content-Type': 'application/json',
'Ocp-Apim-Subscription-Key': '{API key}',
}
params = urllib.parse.urlencode({})
try:
conn = http.client.HTTPSConnection('{endpoint}')
conn.request("POST", "/anomalydetector/v1.1-preview/multivariate/models?%s" % params, "{request body}", headers)
response = conn.getresponse()
data = response.read()
print(data)
conn.close()
except Exception as e:
print("[Errno {0}] {1}".format(e.errno, e.strerror))
####################################
Yanıt kodu 201 başarılı bir isteği gösterir.
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.
4. Model durumunu al
Eğitim API'si zaman uyumsuz olduğu için eğitim API'sini çağıran modeli hemen elde etmeyebilirsiniz. Ancak, tüm modelleri listeleyecek API anahtarına göre veya belirli modelle ilgili bilgileri listeleyene model kimliğine göre modellerin durumunu sorguabilirsiniz.
Tüm modelleri listele
İstek URL'si ve istek üst bilgileri hakkında bilgi için bu sayfaya başvurabilirsiniz. Güncelleştirme zamanlarına göre sıra edilen yalnızca 10 model iade edeceğimize dikkat edin, ancak istek URL'sinde ve parametrelerini ayarerek diğer $skip $top modelleri ziyaret edin. Örneğin, istek URL'niz ise https://{endpoint}/anomalydetector/v1.1-preview/multivariate/models?$skip=10&$top=20 en son 10 modeli atlayıp sonraki 20 modeli geri döneceğiz.
Örnek yanıt:
{
"models": [
{
"createdTime":"2020-12-01T09:43:45Z",
"displayName":"DevOps-Test",
"lastUpdatedTime":"2020-12-01T09:46:13Z",
"modelId":"b4c1616c-33b9-11eb-824e-0242ac110002",
"status":"READY",
"variablesCount":18
},
{
"createdTime":"2020-12-01T09:43:30Z",
"displayName":"DevOps-Test",
"lastUpdatedTime":"2020-12-01T09:45:10Z",
"modelId":"ab9d3e30-33b9-11eb-a3f4-0242ac110002",
"status":"READY",
"variablesCount":18
}
],
"currentCount": 1,
"maxCount": 50,
"nextLink": "<link to more models>"
}
Yanıt, , , ve 4 models currentCount alan maxCount nextLink içerir.
modelsoluşturma saati, son güncelleştirme zamanı, model kimliği, görünen ad, değişken sayıları ve her modelin durumunu içerir.currentCounteğitilen çok değişkenli modellerin sayısını içerir.maxCount, bu kaynak tarafından desteklenen en fazla model Anomali Algılayıcısı sayısıdır.nextLinkdaha fazla model getirmek için kullanılabilir.
Model kimliğine göre modelleri al
Bu sayfa model kimliğine göre model bilgilerini sorgulamak için istek URL'sini açıklar. Örnek yanıt şu şekildedir
{
"modelId": "45aad126-aafd-11ea-b8fb-d89ef3400c5f",
"createdTime": "2020-06-30T00:00:00Z",
"lastUpdatedTime": "2020-06-30T00:00:00Z",
"modelInfo": {
"slidingWindow": 300,
"alignPolicy": {
"alignMode": "Outer",
"fillNAMethod": "Linear",
"paddingValue": 0
},
"source": "<TRAINING_ZIP_FILE_LOCATED_IN_AZURE_BLOB_STORAGE_WITH_SAS>",
"startTime": "2019-04-01T00:00:00Z",
"endTime": "2019-04-02T00:00:00Z",
"displayName": "Devops-MultiAD",
"status": "READY",
"errors": [],
"diagnosticsInfo": {
"modelState": {
"epochIds": [10, 20, 30, 40, 50, 60, 70, 80, 90, 100],
"trainLosses": [0.6291328072547913, 0.1671326905488968, 0.12354248017072678, 0.1025966405868533,
0.0958492755889896, 0.09069952368736267,0.08686016499996185, 0.0860302299260931,
0.0828735455870684, 0.08235538005828857],
"validationLosses": [1.9232804775238037, 1.0645641088485718, 0.6031560301780701, 0.5302737951278687,
0.4698025286197664, 0.4395163357257843, 0.4182931482799006, 0.4057914316654053,
0.4056498706340729, 0.3849248886108984],
"latenciesInSeconds": [0.3398594856262207, 0.3659665584564209, 0.37360644340515137,
0.3513407707214355, 0.3370304107666056, 0.31876277923583984,
0.3283309936523475, 0.3503587245941162, 0.30800247192382812,
0.3327946662902832]
},
"variableStates": [
{
"variable": "ad_input",
"filledNARatio": 0,
"effectiveCount": 1441,
"startTime": "2019-04-01T00:00:00Z",
"endTime": "2019-04-02T00:00:00Z",
"errors": []
},
{
"variable": "ad_ontimer_output",
"filledNARatio": 0,
"effectiveCount": 1441,
"startTime": "2019-04-01T00:00:00Z",
"endTime": "2019-04-02T00:00:00Z",
"errors": []
},
// More variables
]
}
}
}
Sorgulanan model hakkında daha ayrıntılı bilgi alırsınız. Yanıtta model, eğitim parametreleri ve tanılama bilgileriyle ilgili meta bilgiler yer almaktadır. Tanılama Bilgileri, eğitim ilerlemesini ayıklama ve izleme için yararlıdır.
epochIds, modelin toplam 100 dönem içinde kaç dönem eğitilmiş olduğunu gösterir. Örneğin, model hala eğitim durumunda ise bu, 50. eğitim dönemini tamamlamış ve yarı yoldaepochId[10, 20, 30, 40, 50]olduğu anlamına geliyor olabilir.trainLossesvevalidationLossesiyileştirme ilerlemesi yakınsanıp yakınsanmaması durumunda iki kaybın kademeli olarak azaltıp azalmaması gerektiğini kontrol etmek için kullanılır.latenciesInSecondsher dönem için zaman maliyetini içerir ve her 10 dönem için kaydedilir. Bu örnekte, 10. dönem yaklaşık 0,34 saniye sürer. Bu, eğitimin tamamlanma süresiyle ilgili tahminde yardımcı olabilir.variableStatesher değişkenle ilgili bilgileri özetler. Azalan düzendefilledNARatiosıralandı. Her değişken için kullanılan veri noktası sayılarını ve kaçfilledNARationoktanın eksik olduğunu söyler. Genellikle mümkün olduğuncafilledNARatioazaltmamız gerekir. Çok fazla eksik veri noktası, model doğruluğunu bozacak.- Veri işleme sırasındaki hatalar alanına
errorsdahil edilir.
5. MVAD ile çıkarım
Çıkarım gerçekleştirmek için, çıkarım verilerini, başlangıç saati ve bitiş saatlerini içeren zip dosyasına blob kaynağını sağlamanız gerekir.
Çıkarım da zaman uyumsuzdur, bu nedenle sonuçlar hemen döndürülmaz. Bir değişkene sonuçların bağlantısını içeren yanıt üst bilgisinde kaydetmeye dikkat edin; böylece sonuçları daha sonra nereden resultId ala bilirsiniz.
Hatalara genellikle model sorunları veya veri sorunları neden olur. Model hazır değilse veya veri bağlantısı geçersizse çıkarım gerçekleştiresiniz. Eğitim verileri ve çıkarım verileri tutarlı olduğundan emin olun; bu da tam olarak aynı değişkenler, farklı zaman damgasına sahip olması gerektiği anlamına gelir. Daha fazla değişken, daha az değişken veya farklı bir değişken kümesine sahip çıkarım, veri doğrulama aşamasından geçmez ve hatalar oluşur. Veri doğrulama ertelenmiştir, böylece yalnızca sonuçları sorgularken hata iletisi alırsınız.
6. Çıkarım sonuçlarını al
Sonuçları almak resultId için gerekir. resultId , çıkarım isteğini gönderdiğinizde yanıt üst bilgilerinden elde edilir. Bu sayfa çıkarım sonuçlarını sorgulamaya ilişkin yönergeleri içerir.
Örnek yanıt şu şekildedir
{
"resultId": "663884e6-b117-11ea-b3de-0242ac130004",
"summary": {
"status": "READY",
"errors": [],
"variableStates": [
{
"variable": "ad_input",
"filledNARatio": 0,
"effectiveCount": 26,
"startTime": "2019-04-01T00:00:00Z",
"endTime": "2019-04-01T00:25:00Z",
"errors": []
},
{
"variable": "ad_ontimer_output",
"filledNARatio": 0,
"effectiveCount": 26,
"startTime": "2019-04-01T00:00:00Z",
"endTime": "2019-04-01T00:25:00Z",
"errors": []
},
// more variables
],
"setupInfo": {
"source": "https://aka.ms/AnomalyDetector/MVADSampleData",
"startTime": "2019-04-01T00:15:00Z",
"endTime": "2019-04-01T00:40:00Z"
}
},
"results": [
{
"timestamp": "2019-04-01T00:15:00Z",
"errors": [
{
"code": "InsufficientHistoricalData",
"message": "historical data is not enough."
}
]
},
// more results
{
"timestamp": "2019-04-01T00:20:00Z",
"value": {
"contributors": [],
"isAnomaly": false,
"severity": 0,
"score": 0.17805261260751692
}
},
// more results
{
"timestamp": "2019-04-01T00:27:00Z",
"value": {
"contributors": [
{
"contributionScore": 0.0007775013367514271,
"variable": "ad_ontimer_output"
},
{
"contributionScore": 0.0007989604079048129,
"variable": "ad_series_init"
},
{
"contributionScore": 0.0008900927229851369,
"variable": "ingestion"
},
{
"contributionScore": 0.008068144477478554,
"variable": "cpu"
},
{
"contributionScore": 0.008222036467507165,
"variable": "data_in_speed"
},
{
"contributionScore": 0.008674941549594993,
"variable": "ad_input"
},
{
"contributionScore": 0.02232242629793674,
"variable": "ad_output"
},
{
"contributionScore": 0.1583773213660846,
"variable": "flink_last_ckpt_duration"
},
{
"contributionScore": 0.9816531517495176,
"variable": "data_out_speed"
}
],
"isAnomaly": true,
"severity": 0.42135109874230336,
"score": 1.213510987423033
}
},
// more results
]
}
Yanıt; sonuç durumunu, değişken bilgilerini, çıkarım parametrelerini ve çıkarım sonuçlarını içerir.
variableStatesçıkarım isteğinde her değişkenin bilgilerini listeler.setupInfo, bu çıkarım için gönderilen istek gövdesidir.resultsalgılama sonuçlarını içerir. Üç tipik algılama sonucu türü vardır.- Hata
InsufficientHistoricalDatakodu. Bu durum genellikle yalnızca ilk birkaç zaman damgasıyla gerçekleşir çünkü model verileri pencere tabanlı bir şekilde çıkarıyor ve karar için geçmiş verilere ihtiyaç ediyor. İlk birkaç zaman damgası için yetersiz geçmiş veri olduğu için çıkarım gerçekleştirilememektedir. Bu durumda, hata iletisi yoksayılabilir. "isAnomaly": falsegeçerli zaman damgasının bir anomali olmadığını gösterir.severityanomalinin göreli önem derecesine ve normal veriler için her zaman 0 olduğunu gösterir.score, modelin normal veri noktaları için bile sıfır olmayan bir karar aldığı ham çıkıştır.
"isAnomaly": truegeçerli zaman damgasındaki bir anomaliyi gösterir.severity, anomalinin göreli önem derecesine ve anormal veriler için her zaman 0'dan büyük olduğunu gösterir.score, modelin üzerinde karar aldığı ham çıkıştır.severity, değerinden türetilen birscoredeğerdir. Her veri noktasının birscorevar.contributors, her değişkenin katkı puanını içeren bir listedir. Daha yüksek katkı puanları, kök nedenin daha yüksek olasılığını işaret ediyor. Bu liste genellikle anomalileri yorumlamak ve kök nedenleri tanılamak için kullanılır.
- Hata
Not
Yaygın bir tuzak, tüm veri noktalarını isAnomaly = true anomali olarak almaktır. Bu, çok fazla hatalı pozitif sonuçla sonuç olabilir.
Hem hem de (veya ) kullanarak ciddi olan anomalileri yok edin ve (isteğe bağlı olarak) rastgele gürültüyü bastırmak için anomalilerin süresini kontrol etmek için isAnomaly severity score gruplama kullan. ile arasındaki fark için lütfen en iyi yöntemler belgesinde yer alan SSS bölümüne severity score bakın.