Migliora la qualità delle previsioni nei modelli di classificazione personalizzati con Amazon Comprehend

Migliora la precisione delle previsioni nei modelli di classificazione personalizzati con Amazon Comprehend

L’intelligenza artificiale (AI) e il machine learning (ML) sono stati ampiamente adottati da organizzazioni aziendali e governative. Elaborare dati non strutturati è diventato più facile grazie ai progressi nel processing del linguaggio naturale (NLP) e ai servizi AI/ML user-friendly come Amazon Textract, Amazon Transcribe e Amazon Comprehend. Le organizzazioni hanno iniziato a utilizzare servizi AI/ML come Amazon Comprehend per costruire modelli di classificazione con i loro dati non strutturati per ottenere approfondimenti che non avevano in precedenza. Nonostante sia possibile utilizzare modelli pre-addestrati con uno sforzo minimo, senza una corretta curatela dei dati e l’ottimizzazione del modello, non si possono realizzare tutti i benefici dei modelli AI/ML.

In questo post, spieghiamo come costruire e ottimizzare un modello di classificazione personalizzato utilizzando Amazon Comprehend. Dimostriamo questo utilizzando una classificazione personalizzata di Amazon Comprehend per costruire un modello di classificazione personalizzato multi-etichetta e forniamo linee guida su come preparare il dataset di addestramento e ottimizzare il modello per ottenere metriche di performance come l’accuratezza, la precisione, il richiamo e il punteggio F1. Utilizziamo gli artefatti di addestramento del modello Amazon Comprehend come una matrice di confusione per ottimizzare le performance del modello e guidarti nel miglioramento dei tuoi dati di addestramento.

Panoramica della soluzione

Questa soluzione presenta un approccio per costruire un modello di classificazione personalizzato ottimizzato utilizzando Amazon Comprehend. Attraversiamo diversi passaggi, inclusa la preparazione dei dati, la creazione del modello, l’analisi delle metriche di performance del modello e l’ottimizzazione dell’inference basata sulla nostra analisi. Utilizziamo un notebook Amazon SageMaker e la Console di gestione AWS per completare alcuni di questi passaggi.

Andiamo anche attraverso le best practice e le tecniche di ottimizzazione durante la preparazione dei dati, la costruzione del modello e l’ottimizzazione del modello.

Prerequisiti

Se non si dispone di un’istanza di notebook SageMaker, è possibile crearne una. Per istruzioni, fare riferimento a Creare un’istanza di notebook SageMaker.

Prepara i dati

Per questa analisi, utilizziamo il dataset di classificazione commenti tossici da Kaggle. Questo dataset contiene 6 etichette con 158.571 punti dati. Tuttavia, ogni etichetta ha solo meno del 10% dei dati totali come esempi positivi, con due delle etichette che hanno meno dell’1%.

Convertiamo il dataset Kaggle esistente nel formato CSV di Amazon Comprehend a due colonne con le etichette separate da un delimitatore a pipe (|). Amazon Comprehend si aspetta almeno un’etichetta per ogni punto dati. In questo dataset, incontriamo diversi punti dati che non rientrano in nessuna delle etichette fornite. Creiamo un’etichetta chiamata “clean” e assegnamo a tutti i punti dati che non sono tossici di essere positivi con questa etichetta. Infine, suddividiamo i dataset curati in dataset di addestramento e di test utilizzando un rapporto di divisione 80/20 per etichetta.

Utilizzeremo il notebook Data-Preparation. I seguenti passaggi utilizzano il dataset Kaggle e preparano i dati per il nostro modello.

  1. Nella console di SageMaker, scegliere “Istanze di notebook” nel riquadro di navigazione.
  2. Selezionare l’istanza di notebook configurata e scegliere “Apri Jupyter”.
  3. Nel menu “Nuovo”, scegliere “Terminale”.

  1. Esegui i seguenti comandi nel terminale per scaricare gli artefatti richiesti per questo post:
cd SageMakerwget https://aws-ml-blog.s3.amazonaws.com/artifacts/amazon-comprehend-improve-prediction-quality/comprehend-blog-artifacts.zipunzip comprehend-blog-artifacts.ziprm comprehend-blog-artifacts.zipmkdir assets
  1. Chiudi la finestra del terminale.

Dovresti vedere tre notebook e i file train.csv.

  1. Scegli il notebook Data-Preparation.ipynb.
  2. Esegui tutti i passaggi nel notebook.

Questi passaggi preparano il set di dati iniziale di Kaggle per servire come set di dati curati per l’addestramento e il test. I set di dati curati verranno memorizzati nel notebook e nel Amazon Simple Storage Service (Amazon S3).

Considera le seguenti linee guida per la preparazione dei dati quando tratti set di dati multitarget su larga scala:

  • I set di dati devono avere almeno 10 campioni per target.
  • Amazon Comprehend accetta al massimo 100 target. Questo è un limite flessibile che può essere aumentato.
  • Assicurati che il file del set di dati sia correttamente formattato con il delimitatore corretto. Delimitatori errati possono introdurre target vuoti.
  • Tutti i punti dati devono avere dei target.
  • I set di dati di addestramento e di test dovrebbero avere una distribuzione bilanciata dei dati per ciascun target. Non utilizzare una distribuzione casuale perché potrebbe introdurre un bias nei set di dati di addestramento e di test.

Crea un modello di classificazione personalizzato

Utilizziamo i set di dati di addestramento e di test curati che abbiamo creato durante la fase di preparazione dei dati per costruire il nostro modello. I seguenti passaggi creano un modello di classificazione personalizzato multi-target di Amazon Comprehend:

    <li+nell'Amazon Comprehend console, scegli Classificazione personalizzata nel riquadro di navigazione.

  1. Scegli Crea nuovo modello.
  2. Per Nome modello, inserisci toxic-classification-model.
  3. Per Nome versione, inserisci 1.
  4. Per Annotation e formato dei dati, scegli Modalità multi-target.
  5. Per Set di dati di addestramento, inserisci la posizione del set di dati di addestramento curato su Amazon S3.
  6. Scegli Fornito dal cliente set di dati di test e inserisci la posizione dei dati di test curati su Amazon S3.
  7. Per Dati di output, inserisci la posizione di Amazon S3.
  8. Per Ruolo IAM, seleziona Crea un ruolo IAM, specifica il suffisso del nome come “comprehend-blog”.
  9. Scegli Crea per avviare l’addestramento e la creazione del modello di classificazione personalizzato.
  10. </li+nell'

La seguente schermata mostra i dettagli del modello di classificazione personalizzato nella console di Amazon Comprehend.

Sintonizzare le prestazioni del modello

La seguente schermata mostra le metriche di prestazione del modello. Include metriche chiave come precisione, richiamo, score F1, accuratezza e altro ancora.

Dopo che il modello è stato addestrato e creato, genererà il file output.tar.gz, che contiene i target del set di dati e la matrice di confusione per ciascun target. Per sintonizzare ulteriormente le prestazioni di previsione del modello, è necessario capire il tuo modello con le probabilità di previsione per ogni classe. Per fare ciò, devi creare un lavoro di analisi per identificare i punteggi assegnati da Amazon Comprehend a ciascuno dei punti dati.

Completa i seguenti passaggi per creare un lavoro di analisi:

  1. Nella console di Amazon Comprehend, scegli Lavori di analisi nel riquadro di navigazione.
  2. Scegli Crea lavoro.
  3. Per Nome, inserisci toxic_train_data_analysis_job.
  4. Per Tipo di analisi, scegli Classificazione personalizzata.
  5. Per Modelli di classificazione e volani, specifica toxic-classification-model.
  6. Per Versione, specifica 1.
  7. Per Posizione dati di input su S3, inserisci la posizione del file di dati di addestramento curato.
  8. Per Formato di input, scegli Un documento per riga.
  9. Per Posizione dati di output su S3, inserisci la posizione.
  10. Per Permessi di accesso, seleziona Usa un ruolo IAM esistente e scegli il ruolo creato in precedenza.
  11. Scegli Crea lavoro per avviare il lavoro di analisi.
  12. Seleziona i Lavori di analisi per visualizzare i dettagli del lavoro. Ricorda l’id del lavoro nei dettagli del lavoro. Lo utilizzeremo nel prossimo passaggio.

Ripetete i passaggi per avviare il lavoro di analisi per i dati di test selezionati. Utilizziamo gli output di previsione dai nostri lavori di analisi per conoscere le probabilità di previsione del nostro modello. Si prega di annotare gli ID dei lavori di formazione e test di analisi.

Utilizziamo il quaderno Model-Threshold-Analysis.ipynb per testare gli output su tutte le possibili soglie e valutare l’output in base alla probabilità di previsione utilizzando la funzione precision_recall_curve di scikit-learn. Inoltre, possiamo calcolare il punteggio F1 per ogni soglia.

Avere bisogno degli ID dei lavori di analisi di Amazon Comprehend come input per il quaderno Model-Threshold-Analysis. Gli ID dei lavori possono essere ottenuti dalla console di Amazon Comprehend. Eseguire tutti i passaggi nel quaderno Model-Threshold-Analysis per osservare le soglie per tutte le classi.

Notare come la precisione aumenta all’aumentare della soglia, mentre l’inverso avviene con il richiamo. Per trovare un equilibrio tra i due, utilizziamo il punteggio F1 dove ci sono picchi visibili nella curva. I picchi nel punteggio F1 corrispondono a una particolare soglia che può migliorare le prestazioni del modello. Notare come la maggior parte delle etichette ricada intorno al valore 0,5 per la soglia, ad eccezione dell’etichetta di minaccia, che ha una soglia intorno a 0,04.

Poi possiamo utilizzare questa soglia per etichette specifiche che sono meno performanti con la soglia predefinita di 0,5. Utilizzando le soglie ottimizzate, i risultati del modello sui dati di test migliorano per l’etichetta di minaccia da 0,00 a 0,24. Utilizziamo il punteggio F1 massimo per la soglia come punto di riferimento per determinare positivo vs negativo per quella particolare etichetta invece di un punto di riferimento comune (un valore standard come > 0,7) per tutte le etichette.

Gestione delle classi sottorappresentate

Un altro approccio efficace per un dataset sbilanciato è il sovracampionamento. Sovracampionando la classe sottorappresentata, il modello vede più frequentemente la classe sottorappresentata e ne enfatizza l’importanza di questi campioni. Utilizziamo il quaderno Oversampling-underrepresented.ipynb per ottimizzare i dataset.

Per questo dataset, abbiamo testato come le prestazioni del modello sul dataset di valutazione cambiano al fornire più campioni. Utilizziamo la tecnica di sovracampionamento per aumentare la presenza di classi sottorappresentate e migliorare le prestazioni.

In questo caso specifico, abbiamo testato con 10, 25, 50, 100, 200 e 500 esempi positivi. Notare che sebbene stiamo ripetendo i punti dati, stiamo migliorando intrinsecamente le prestazioni del modello enfatizzando l’importanza della classe sottorappresentata.

Costo

Con Amazon Comprehend, si paga in base al numero di caratteri di testo elaborati. Fare riferimento a Amazon Comprehend Pricing per i costi effettivi.

Pulizia

Quando hai finito di sperimentare con questa soluzione, pulisci le tue risorse per eliminare tutte le risorse implementate in questo esempio. Questo ti aiuta a evitare costi continui nel tuo account.

Conclusione

In questo post, abbiamo fornito le migliori pratiche e linee guida sulla preparazione dei dati, sull’ottimizzazione del modello utilizzando le probabilità di previsione e sulle tecniche per gestire le classi di dati sottorappresentate. Puoi utilizzare queste migliori pratiche e tecniche per migliorare le metriche di performance del tuo modello di classificazione personalizzato di Amazon Comprehend.

Per ulteriori informazioni su Amazon Comprehend, visita risorse per sviluppatori di Amazon Comprehend per trovare risorse video e post di blog e consulta AWS Comprehend FAQ.