Rilevamento di anomalie in data set di grandi dimensioni

Crea un job che rileva le anomalie utilizzando il rilevamento asincrono.

È possibile utilizzare il rilevamento asincrono per rilevare anomalie nei set di dati di rilevamento univariati e multivariati. I casi d'uso tipici adatti per il rilevamento asincrono sono:

Rilevamento di anomalie in set di dati di grandi dimensioni

Il numero massimo di datapoint supportati dall'API sincrona REST detectAnomalies è 30.000. Ciò potrebbe imporre restrizioni negli scenari di rilevamento delle anomalie in cui è necessario rilevare un gran numero di datapoint (in genere in milioni). Il rilevamento asincrono consente di analizzare e rilevare anomalie in set di dati di grandi dimensioni fino a 10 milioni di datapoint.

Automatizzazione dei flussi di lavoro di rilevamento

Nei casi d'uso di IoT, i dati delle serie temporali vengono in genere raccolti da un gran numero di sensori e dispositivi e memorizzati in un data store persistente, ad esempio un database o un file system. Spesso, questi dati non elaborati devono essere pre-elaborati (integrati) utilizzando i servizi PaaS, ad esempio Flusso di dati, prima di poter eseguire l'inferenza. Puoi integrare facilmente le API di rilevamento asincrono all'interno delle pipeline di elaborazione dei dati e automatizzare i flussi di lavoro di rilevamento.

Post-elaborazione di eventi anomali

In alcuni scenari di rilevamento delle anomalie, potrebbe essere necessario trasformare o arricchire i dati di rilevamento (anomalie rilevate) prima che possano essere utilizzati dalle applicazioni a valle. Con il rilevamento asincrono, le anomalie rilevate vengono salvate in un bucket di storage degli oggetti. È possibile utilizzare i servizi PaaS, ad esempio Data Flow, per analizzare, elaborare e arricchire gli eventi anomali. Inoltre, puoi utilizzare e visualizzare le anomalie nei grafici di visualizzazione in Oracle Analytics Cloud per consentirti di monitorare i sistemi di destinazione e intraprendere azioni correttive.

  • Prerequisiti:

    È necessario disporre di un progetto contenente un modello addestrato da utilizzare in un job Rilevamento anomalie asincrono.

    1. Aprire il menu di navigazione e fare clic su Analytics e AI. In Servizi AI fare clic su Rilevamento anomalie.
    2. Nel menu di navigazione a sinistra fare clic su Progetti.
    3. Selezionare il compartimento contenente il progetto che si desidera utilizzare.
    4. Fare clic sul nome del progetto.

      Viene visualizzata la pagina dei dettagli del progetto.

    5. Fare clic su Job.
    6. Fare clic su Create job.
    7. (Facoltativo) Immettere un nome univoco (limite di 255 caratteri) per la risorsa. Se non si fornisce un nome, ne viene generato uno automaticamente.

      Ad esempio:

      aianomalydetection<resource>20230825155844

    8. (Facoltativo) Immettere una descrizione (limite di 400 caratteri) per la risorsa.
    9. Selezionare il modello in cui si desidera eseguire questo job.
    10. (Facoltativo) Selezionare la quantità di sensibilità da utilizzare per il rilevamento delle anomalie da 0 a 1.
    11. Selezionare il tipo di richiesta di input che si desidera utilizzare per il job.
      • In linea:

        Trascinare un file JSON o CSV nella casella File oppure utilizzare Seleziona file per individuarlo e selezionarlo da un'unità locale.

      • area di memorizzazione degli oggetti:

        Selezionare il bucket di storage degli oggetti che contiene il file di dati di rilevamento, quindi selezionare il file che si desidera utilizzare per questo job. Sono supportati solo i file CSV.

        È possibile utilizzare più bucket di input e file di dati di rilevamento facendo clic su Bucket di input aggiuntivo ed effettuando ulteriori selezioni.

    12. Selezionare un bucket di output dello storage degli oggetti in cui memorizzare i file di output.

      Lo spazio di nomi mostra la tenancy in cui viene creato il job.

    13. (Facoltativo) Immettere un prefisso da utilizzare per identificare facilmente i risultati.

      Ad esempio, se myModel è il prefisso, il file dei risultati è myModel/results-file.json.

    14. Fare clic su Create job.

      Lo stato del job asincrono è inizialmente Accettato fino all'avvio dell'esecuzione del job, quindi è In corso. Al termine del job, lo stato viene modificato in Riuscito. Il tempo necessario per eseguire il job dipende dalla dimensione dei set di dati di rilevamento.

    15. Fare clic sul job asincrono completato per visualizzarne i dettagli ed esaminare i risultati del job.

      Il file dei risultati del rilevamento delle anomalie viene salvato in una cartella separata nel bucket di output dello storage degli oggetti selezionato. Il nome file utilizza la convenzione di denominazione <model-OCID>/<output_bucket_name>.

      • <model-OCID> è l'OCID del modello Rilevamento anomalie.

      • <output_bucket_name> è il nome del bucket dello storage degli oggetti.

      • Il nome del file dei risultati del rilevamento anomalie è uguale al nome del file del set di dati di rilevamento al quale è stato aggiunto -results.

  • Si consiglia questo approccio quando si desidera rilevare anomalie e ottenere risultati da set di dati di grandi dimensioni.

    1. Scaricare e configurare l'interfaccia CLI o l'SDK OCI come descritto nella documentazione OCI esistente.
    2. Utilizzare un modello addestrato creando una richiesta HTTP POST ed effettuare la richiesta all'endpoint ricevuto nel passo precedente.
    3. Analizza la risposta HTTP per ottenere i risultati da utilizzare nelle applicazioni.

    Esempi di chiamate API

    Utilizzare i comandi Rilevamento anomalie riportati di seguito e i parametri necessari per rilevare e ottenere i risultati.

    1. Ottenere il modello:

      https://anomalydetection.aiservice.us-phoenix-1.oci.oraclecloud.com/20210101/models/{ModelId}
       Method: GET
       Body:
    2. Rileva in modo asincrono i dati:

      Endpoint: https://anomalydetection.aiservice.us-phoenix-1.oci.oraclecloud.com/20210101/detectAnomalyJobs
      {
        "compartmentId": "ocid1.compartment.oc1..aaaaaaaaaqf4b7xq6kxrrb…..rcmjpbdfmcjmzdufz6sy52pra",
        "description": Ashburn data center,
        "displayName": Ashburn data center,
        "modelId": "ocid1.aianomalydetectionmodel.oc1.iad.amaaaaaaor7l3jia2q565gumqsmurg3anj6a6xad4e5talry7ynqivboyh5a",
        "inputDetails": {
            "inputType": "INLINE",
      "signalNames":["sensor1","sensor2","sensor3","sensor4","sensor5","sensor6","sensor7","sensor8","sensor9","sensor10"],
          "data": [
              {
                  "timestamp": "2020-07-13T18:54:46.000Z",
                  "values": [ 0.2282, -0.7092, -1.2002, -0.7971, 2.0967, -0.7369, -0.5242, -0.3949, -0.6563, -0.9429 ]
              },
              {
                  "timestamp": "2020-07-13T18:55:46.000Z",
                  "values": [ -0.4359, -0.153, -1.3603, -1.4552, 1.3512, -0.3683, -0.7328, -0.5223, -2.1182, -0.6212 ]
              },
              {
                  "timestamp": "2020-07-13T18:56:46.000Z",
                  "values": [ -0.7482, -0.7112, -2.0408, -0.8236, 1.9157, -0.9435, -1.1136, 0.1365, -0.8872, -0.7323 ]
              },
              {
                  "timestamp": "2020-07-13T18:57:46.000Z",
                  "values": [ 0.2655, -1.23, -0.6551, -0.6294, 1.4812, -1.1023, -1.3472, -1.18, -1.4353, -1.1863 ]
              },
              {
                  "timestamp": "2020-07-13T18:58:46.000Z",
                  "values": [ -0.6848, -1.6165, -1.4954, -1.2594, 2.5512, -0.6693, -0.5837, -1.2494, -0.2837, -0.7751 ]
              }
          ]
        },
        "outputDetails": {
          "outputType": "OBJECT_STORAGE",
          "namespaceName": "ax3dvjxgkemg",
          "bucketName": "output-bucket",
          "prefix": "test-prefix"
        }
      }
  • Si consiglia questo approccio quando si desidera rilevare anomalie e ottenere risultati da set di dati di grandi dimensioni.

    1. Scaricare e configurare l'interfaccia CLI o l'SDK OCI come descritto nella documentazione OCI esistente.
    2. Utilizzare un modello addestrato creando una richiesta HTTP POST ed effettuare la richiesta all'endpoint ricevuto nel passo precedente.
    3. Analizza la risposta HTTP per ottenere i risultati da utilizzare nelle applicazioni.

    Esempi di chiamate API

    Utilizzare l'operazione DetectAnomalies per rilevare e ottenere i risultati.

    1. Ottenere il modello:

      https://anomalydetection.aiservice.us-phoenix-1.oci.oraclecloud.com/20210101/models/{ModelId}
       Method: GET
       Body:
    2. Rileva in modo asincrono i dati:

      Endpoint: https://anomalydetection.aiservice.us-phoenix-1.oci.oraclecloud.com/20210101/detectAnomalyJobs
      {
        "compartmentId": "ocid1.compartment.oc1..aaaaaaaaaqf4b7xq6kxrrb…..rcmjpbdfmcjmzdufz6sy52pra",
        "description": Ashburn data center,
        "displayName": Ashburn data center,
        "modelId": "ocid1.aianomalydetectionmodel.oc1.iad.amaaaaaaor7l3jia2q565gumqsmurg3anj6a6xad4e5talry7ynqivboyh5a",
        "inputDetails": {
            "inputType": "INLINE",
      "signalNames":["sensor1","sensor2","sensor3","sensor4","sensor5","sensor6","sensor7","sensor8","sensor9","sensor10"],
          "data": [
              {
                  "timestamp": "2020-07-13T18:54:46.000Z",
                  "values": [ 0.2282, -0.7092, -1.2002, -0.7971, 2.0967, -0.7369, -0.5242, -0.3949, -0.6563, -0.9429 ]
              },
              {
                  "timestamp": "2020-07-13T18:55:46.000Z",
                  "values": [ -0.4359, -0.153, -1.3603, -1.4552, 1.3512, -0.3683, -0.7328, -0.5223, -2.1182, -0.6212 ]
              },
              {
                  "timestamp": "2020-07-13T18:56:46.000Z",
                  "values": [ -0.7482, -0.7112, -2.0408, -0.8236, 1.9157, -0.9435, -1.1136, 0.1365, -0.8872, -0.7323 ]
              },
              {
                  "timestamp": "2020-07-13T18:57:46.000Z",
                  "values": [ 0.2655, -1.23, -0.6551, -0.6294, 1.4812, -1.1023, -1.3472, -1.18, -1.4353, -1.1863 ]
              },
              {
                  "timestamp": "2020-07-13T18:58:46.000Z",
                  "values": [ -0.6848, -1.6165, -1.4954, -1.2594, 2.5512, -0.6693, -0.5837, -1.2494, -0.2837, -0.7751 ]
              }
          ]
        },
        "outputDetails": {
          "outputType": "OBJECT_STORAGE",
          "namespaceName": "ax3dvjxgkemg",
          "bucketName": "output-bucket",
          "prefix": "test-prefix"
        }
      }