Logo Zephyrnet

Costruisci un rilevatore di anomalie della qualità dell'aria utilizzando Amazon Lookout for Metrics

Data:

Oggi, l'inquinamento atmosferico è un problema ambientale familiare che crea gravi condizioni respiratorie e cardiache, che rappresentano gravi rischi per la salute. Anche le piogge acide, l'esaurimento dello strato di ozono e il riscaldamento globale sono conseguenze negative dell'inquinamento atmosferico. È necessario un monitoraggio e un'automazione intelligenti al fine di prevenire gravi problemi di salute e, in casi estremi, situazioni pericolose per la vita. La qualità dell'aria viene misurata utilizzando la concentrazione di inquinanti nell'aria. L'identificazione precoce dei sintomi e il controllo del livello di inquinante prima che diventi pericoloso è fondamentale. Il processo di identificazione della qualità dell'aria e dell'anomalia nel peso degli inquinanti e di una rapida diagnosi della causa principale è difficile, costoso e soggetto a errori.

Il processo di applicazione di soluzioni basate sull'intelligenza artificiale e sull'apprendimento automatico (ML) per individuare le anomalie dei dati comporta molta complessità nell'acquisizione, cura e preparazione dei dati nel formato corretto e quindi nell'ottimizzazione e nel mantenimento dell'efficacia di questi modelli ML per lunghi periodi di volta. Questo è stato uno degli ostacoli all'implementazione e alla scalabilità rapida dell'adozione delle funzionalità di ML.

Questo post mostra come utilizzare una soluzione integrata con Amazon Lookout per le metriche ed Firehose dati Amazon Kinesis per infrangere queste barriere importando rapidamente e facilmente i dati in streaming e rilevando successivamente le anomalie negli indicatori chiave di prestazione di tuo interesse.

Lookout for Metrics rileva e diagnostica automaticamente le anomalie (valori anomali rispetto alla norma) nei dati aziendali e operativi. È un servizio ML completamente gestito che utilizza modelli ML specializzati per rilevare le anomalie in base alle caratteristiche dei tuoi dati. Ad esempio, le tendenze e la stagionalità sono due caratteristiche delle metriche delle serie temporali in cui il rilevamento delle anomalie basato sulla soglia non funziona. Le tendenze sono variazioni continue (aumenti o diminuzioni) del valore di una metrica. D'altra parte, la stagionalità è un pattern periodico che si verifica in un sistema, di solito sale al di sopra di una linea di base e poi diminuisce di nuovo. Non è necessaria l'esperienza di machine learning per utilizzare Lookout for Metrics.

Dimostriamo uno scenario comune di monitoraggio della qualità dell'aria, in cui rileviamo anomalie nella concentrazione di inquinanti nell'aria. Entro la fine di questo post, imparerai come utilizzare questi servizi gestiti da AWS per prevenire problemi di salute e riscaldamento globale. È possibile applicare questa soluzione ad altri casi d'uso per una migliore gestione dell'ambiente, come il rilevamento di anomalie nella qualità dell'acqua, nella qualità del terreno e nei modelli di consumo energetico, solo per citarne alcuni.

Panoramica della soluzione

L'architettura è composta da tre blocchi funzionali:

  • Sensori wireless posizionati in punti strategici per rilevare il livello di concentrazione di monossido di carbonio (CO), biossido di zolfo (SO2) e biossido di azoto (NO2) nell'aria
  • Importazione e archiviazione dei dati in streaming
  • Rilevamento e notifica delle anomalie

La soluzione fornisce un percorso dati completamente automatizzato dai sensori fino a una notifica inviata all'utente. Puoi anche interagire con la soluzione utilizzando l'interfaccia utente di Lookout for Metrics per analizzare le anomalie identificate.

Il diagramma seguente illustra l'architettura della nostra soluzione.

Prerequisiti

Sono necessari i seguenti prerequisiti prima di poter procedere con la soluzione. Per questo post, utilizziamo la regione us-east-1.

  1. Scarica lo script Python (pubblicare.py) e file di dati dal Repository GitHub.
  2. Aprire il live_data.csv file nel tuo editor preferito e sostituisci le date in modo che siano la data di oggi e quella di domani. Ad esempio, se la data odierna è l'8 luglio 2022, sostituire 2022-03-25 con 2022-07-08. Mantieni il formato lo stesso. Ciò è necessario per simulare i dati del sensore per la data corrente utilizzando lo script del simulatore IoT.
  3. Creare un Servizio di archiviazione semplice Amazon (Amazon S3) e una cartella denominata air-quality. Crea una sottocartella all'interno air-quality detto historical. Per istruzioni, vedere Creazione di una cartella.
  4. Carica il live_data.csv file nel bucket S3 radice e historical_data.json nella cartella storica.
  5. Creare un AWS Cloud9 ambiente di sviluppo, che utilizziamo per eseguire il programma di simulazione Python per creare i dati dei sensori per questa soluzione.

Acquisisci e trasforma i dati utilizzando AWS IoT Core e Kinesis Data Firehose

Utilizziamo un flusso di consegna Kinesis Data Firehose da cui importare i dati in streaming AWS IoT Core e consegnalo ad Amazon S3. Completa i seguenti passaggi:

  1. Nella console di Kinesis Data Firehose, selezionare Crea flusso di consegna.
  2. Nel Fontescegli PUT diretto.
  3. Nel Nei Dintorniscegli Amazon S3.
  4. Nel Nome flusso di consegna, inserisci un nome per il tuo stream di consegna.
  5. Nel Benna S3, inserisci il bucket che hai creato come prerequisito.
  6. Immettere i valori per Prefisso del secchio S3 ed Prefisso di output dell'errore del bucket S3.Uno dei punti chiave da notare è la configurazione del prefisso personalizzato configurato per la destinazione Amazon S3. Questo modello di prefisso assicura che i dati vengano creati nel bucket S3 secondo la gerarchia dei prefissi prevista da Lookout for Metrics. (Ulteriori informazioni più avanti in questo post.) Per ulteriori informazioni sui prefissi personalizzati, vedere Prefissi personalizzati per oggetti Amazon S3.
  7. Nel Intervallo di buffer, accedere 60.
  8. Scegli Crea o aggiorna il ruolo IAM.
  9. Scegli Crea flusso di consegna.

    Ora configuriamo AWS IoT Core ed eseguiamo il programma di simulazione della qualità dell'aria.
  10. Sulla console AWS IoT Core, creare una policy AWS IoT chiamato amministratore.
  11. Nel riquadro di navigazione sotto Instradamento dei messaggiscegli Regole.
  12. Scegli Crea regola.
  13. Crea una regola con il Azione Kinesis Data Firehose (tubo antincendio)..
    Invia i dati da un messaggio MQTT a un flusso di consegna Kinesis Data Firehose.
  14. Scegli Creare.
  15. Crea un oggetto AWS IoT con nome Test-Thing e allega la polizza che hai creato.
  16. Scarica il certificato, la chiave pubblica, la chiave privata, il certificato del dispositivo e la CA radice per AWS IoT Core.
  17. Salva ciascuno dei file scaricati in certificates sottodirectory creata in precedenza.
  18. Carica publish.py su iot-test-publish cartella.
  19. Nella console AWS IoT Core, nel riquadro di navigazione, scegli Impostazioni profilo.
  20. Sotto Endpoint personalizzato, copia l'endpoint.
    Questo URL dell'endpoint personalizzato AWS IoT Core è personale per il tuo account e regione AWS.
  21. sostituire customEndpointUrl con l'URL dell'endpoint personalizzato AWS IoT Core, i certificati con il nome del certificato e Your_S3_Bucket_Name con il nome del tuo bucket S3.
    Successivamente, installi pip e l'SDK AWS IoT per Python.
  22. Accedi ad AWS Cloud9 e crea una directory di lavoro nel tuo ambiente di sviluppo. Per esempio: aq-iot-publish.
  23. Crea una sottodirectory per i certificati nella tua nuova directory di lavoro. Per esempio: certificates.
  24. Installa l'SDK AWS IoT per Python v2 eseguendo quanto segue dalla riga di comando.
    pip install awsiotsdk

  25. Per testare la pipeline di dati, eseguire il comando seguente:
    python3 publish.py

Puoi vedere il carico utile nello screenshot seguente.

Infine, i dati vengono consegnati al bucket S3 specificato nella struttura del prefisso.

I dati dei file sono i seguenti:

  • {"TIMESTAMP":"2022-03-20 00:00","LOCATION_ID":"B-101","CO":2.6,"SO2":62,"NO2":57}
  • {"TIMESTAMP":"2022-03-20 00:05","LOCATION_ID":"B-101","CO":3.9,"SO2":60,"NO2":73}

I timestamp mostrano che ogni file contiene dati a intervalli di 5 minuti.

Con un codice minimo, ora abbiamo acquisito i dati del sensore, creato un flusso di input dai dati acquisiti e archiviato i dati in un bucket S3 in base ai requisiti di Lookout for Metrics.

Nelle sezioni seguenti, esamineremo più in dettaglio i costrutti all'interno di Lookout for Metrics e quanto sia facile configurare questi concetti utilizzando la console Lookout for Metrics.

Crea un rilevatore

Un rilevatore è una risorsa Lookout for Metrics che monitora un set di dati e identifica le anomalie a una frequenza predefinita. I rilevatori utilizzano il ML per trovare modelli nei dati e distinguere tra variazioni previste nei dati e anomalie legittime. Per migliorare le sue prestazioni, un rilevatore apprende di più sui tuoi dati nel tempo.

Nel nostro caso d'uso, il rilevatore analizza i dati dal sensore ogni 5 minuti.

Per creare il rilevatore, vai alla console Lookout for Metrics e scegli Crea rilevatore. Fornire il nome e la descrizione (opzionale) del rilevatore, insieme all'intervallo di 5 minuti.

I tuoi dati sono crittografati per impostazione predefinita con una chiave che AWS possiede e gestisce per te. È inoltre possibile configurare se si desidera utilizzare una chiave di crittografia diversa da quella utilizzata per impostazione predefinita.

Ora puntiamo questo rilevatore ai dati su cui vuoi che esegua il rilevamento delle anomalie.

Crea un set di dati

Un set di dati indica al rilevatore dove trovare i dati e quali metriche analizzare per rilevare eventuali anomalie. Per creare un set di dati, completare i seguenti passaggi:

  1. Nella console Amazon Lookout for Metrics, vai al tuo rilevatore.
  2. Scegli Aggiungi un set di dati.
  3. Nel Nome, inserisci un nome (ad esempio, air-quality-dataset).
  4. Nel Fonte di dati, scegli la tua origine dati (per questo post, Amazon S3).
  5. Nel Modalità rilevatore, seleziona la tua modalità (per questo post, Educazione).

Con Amazon S3, puoi creare un rilevatore in due modalità:

    • Backtest – Questa modalità viene utilizzata per trovare anomalie nei dati storici. Ha bisogno che tutti i record siano consolidati in un unico file.
    • Educazione – Questa modalità viene utilizzata per rilevare anomalie nei dati in tempo reale. Utilizziamo questa modalità con il nostro caso d'uso perché vogliamo rilevare le anomalie quando riceviamo i dati sugli inquinanti atmosferici dal sensore di monitoraggio dell'aria.
  1. Immettere il percorso S3 per la cartella S3 live e il modello di percorso.
  2. Nel Intervallo origine datiscegli Intervalli di 5 minuti.Se si dispone di dati storici da cui il rilevatore può apprendere i modelli, è possibile fornirli durante questa configurazione. I dati dovrebbero essere nello stesso formato utilizzato per eseguire un backtest. Fornire dati storici accelera il processo di training del modello ML. Se questo non è disponibile, il rilevatore continuo attende che siano disponibili dati sufficienti prima di effettuare inferenze.
  3. Per questo post, abbiamo già dati storici, quindi seleziona Usa dati storici.
  4. Immettere il percorso S3 di historical_data.json.
  5. Nel Formato del file, selezionare Linee JSON.

A questo punto, Lookout for Metrics accede all'origine dati e verifica se può analizzare i dati. Se l'analisi ha esito positivo, viene visualizzato il messaggio "Convalida riuscita" e si passa alla pagina successiva, in cui si configurano misure, dimensioni e timestamp.

Configura misure, dimensioni e timestamp

Misure definire i KPI per i quali si desidera tenere traccia delle anomalie. È possibile aggiungere fino a cinque misure per rilevatore. I campi utilizzati per creare KPI dai dati di origine devono essere di formato numerico. I KPI possono essere attualmente definiti aggregando i record all'interno dell'intervallo di tempo eseguendo una SOMMA o una MEDIA.

Dimensioni ti dà la possibilità di affettare e tagliare i tuoi dati definendo categorie o segmenti. Ciò consente di tenere traccia delle anomalie per un sottoinsieme dell'intero insieme di dati per il quale è applicabile una determinata misura.

Nel nostro caso d'uso, aggiungiamo tre misure, che calcolano la media degli oggetti visti nell'intervallo di 5 minuti, e hanno una sola dimensione, per la quale viene misurata la concentrazione di inquinanti.

Ogni record nel set di dati deve avere un timestamp. La configurazione seguente consente di scegliere il campo che rappresenta il valore del timestamp e anche il formato del timestamp.

La pagina successiva consente di rivedere tutti i dettagli aggiunti e quindi salvare e attivare il rilevatore.

Il rilevatore inizia quindi ad apprendere il flusso di dati nell'origine dati. A questo punto, lo stato del rilevatore cambia in Initializing.

È importante notare la quantità minima di dati necessaria prima che Lookout for Metrics possa iniziare a rilevare le anomalie. Per ulteriori informazioni su requisiti e limiti, vedere Cerca le quote delle metriche.

Con una configurazione minima, hai creato il tuo rilevatore, lo hai puntato su un set di dati e hai definito le metriche in cui desideri che Lookout for Metrics trovi le anomalie.

Visualizza le anomalie

Lookout for Metrics offre una ricca esperienza dell'interfaccia utente per gli utenti che desiderano utilizzare il Console di gestione AWS per analizzare le anomalie rilevate. Fornisce inoltre la possibilità di interrogare le anomalie tramite API.

Diamo un'occhiata a un esempio di anomalia rilevata dal nostro caso d'uso dei dati sulla qualità dell'aria. Lo screenshot seguente mostra un'anomalia rilevata nella concentrazione di CO nell'aria all'ora e alla data designate con un punteggio di gravità di 93. Mostra anche il contributo percentuale della dimensione all'anomalia. In questo caso, il contributo del 100% proviene dalla dimensione ID posizione B-101.

Crea avvisi

Lookout for Metrics ti consente di inviare avvisi utilizzando una varietà di canali. È possibile configurare la soglia del punteggio di gravità dell'anomalia alla quale devono essere attivati ​​gli avvisi.

Nel nostro caso d'uso, configuriamo gli avvisi da inviare a un Servizio di notifica semplice Amazon (Amazon SNS), che a sua volta invia un SMS. Le schermate seguenti mostrano i dettagli della configurazione.

Puoi anche utilizzare un avviso per attivare le automazioni utilizzando AWS Lambda funzioni per guidare le operazioni basate su API su AWS IoT Core.

Conclusione

In questo post, ti abbiamo mostrato quanto sia facile utilizzare Lookout for Metrics e Kinesis Data Firehose per rimuovere il lavoro pesante indifferenziato coinvolto nella gestione del ciclo di vita end-to-end della creazione di applicazioni di rilevamento delle anomalie basate su ML. Questa soluzione può aiutarti ad accelerare la tua capacità di trovare anomalie nelle metriche aziendali chiave e permetterti di concentrare i tuoi sforzi sulla crescita e il miglioramento della tua attività.

Ti invitiamo a saperne di più visitando il Guida per gli sviluppatori di Amazon Lookout for Metrics e prova la soluzione end-to-end abilitata da questi servizi con un set di dati rilevante per i tuoi KPI aziendali.


Circa l'autore

Dhiraj Thakur è un Solutions Architect con Amazon Web Services. Collabora con clienti e partner AWS per fornire indicazioni sull'adozione, la migrazione e la strategia del cloud aziendale. È appassionato di tecnologia e ama costruire e sperimentare nello spazio di analisi e AI/ML.

spot_img

L'ultima intelligenza

spot_img

Parla con noi

Ciao! Come posso aiutarla?