

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

# Ottimizzazione delle trasformazioni basate su machine learning in AWS Glue
<a name="add-job-machine-learning-transform-tuning"></a>

È possibile ottimizzare le trasformazioni basate su machine learning in AWS Glue al fine di migliorare i risultati delle operazioni di pulizia dei dati affinché soddisfino gli obiettivi desiderati. Per migliorare la trasformazione, è possibile addestrarla generando un set di dati da etichettare, aggiungendo le etichette e quindi ripetendo questi passaggi diverse volte fino a ottenere i risultati desiderati. È inoltre possibile applicare l'ottimizzazione modificando alcuni parametri del sistema di machine learning. 

Per ulteriori informazioni sulle trasformazioni basate su machine learning, consultare [Record di abbinamento con AWS Lake Formation FindMatches](machine-learning.md).

**Topics**
+ [Misurazioni del machine learning](machine-learning-terminology.md)
+ [Scelta tra precisione e recupero](machine-learning-precision-recall-tradeoff.md)
+ [Scelta tra accuratezza e costo](machine-learning-accuracy-cost-tradeoff.md)
+ [Stima della qualità delle corrispondenze utilizzando i punteggi di confidenza delle corrispondenze](match-scoring.md)
+ [Addestramento della trasformazione di rilevamento delle corrispondenze](machine-learning-teaching.md)

# Misurazioni del machine learning
<a name="machine-learning-terminology"></a>

Per comprendere le misurazioni che vengono utilizzate per ottimizzare una trasformazione basata su machine learning, è necessario avere familiarità con la seguente terminologia:

**Vero positivo (True positive, TP)**  
Una corrispondenza nei dati correttamente individuata dalla trasformazione, denominata anche *colpo a segno*.

**Vero negativo (True negative , TN)**  
Una mancata corrispondenza nei dati correttamente esclusa dalla trasformazione.

**Falso positivo (False positive, FP)**  
Una mancata corrispondenza nei dati che la trasformazione ha erroneamente classificato come una corrispondenza, denominata anche *falso allarme*.

**Falso negativo (False negative, FN)**  
Una corrispondenza nei dati non rilevata dalla trasformazione, denominata anche *colpo mancato*.

Per ulteriori informazioni sulla terminologia utilizzata nel campo del machine learning, consultare la voce [Matrice di confusione](https://en.wikipedia.org/wiki/Confusion_matrix) su Wikipedia.

Per ottimizzare le trasformazioni basate su machine learning, è possibile modificare il valore delle seguenti misurazioni nella sezione **Advanced properties (Proprietà avanzate)** della trasformazione.
+ **Precision (Precisione)** misura la capacità della trasformazione di individuare veri positivi sul numero totale di record che identifica come positivi (veri positivi e falsi positivi). Per ulteriori informazioni, consulta la voce [Precisione e recupero](https://en.wikipedia.org/wiki/Precision_and_recall) su Wikipedia.
+ **Recall (Recupero)** misura la capacità della trasformazione di individuare i veri positivi rispetto al totale dei record che compongono i dati di origine. Per ulteriori informazioni, consulta la voce [Precisione e recupero](https://en.wikipedia.org/wiki/Precision_and_recall) su Wikipedia.
+ **Accuracy (Accuratezza)** misura la capacità della trasformazione di individuare i veri positivi e i veri negativi. L'incremento dell'accuratezza implica maggiori risorse di elaborazione e costi superiori. Tuttavia permette di raggiungere anche un livello maggiore di recupero. Per ulteriori informazioni, consultare la voce [Accuratezza e precisione](https://en.wikipedia.org/wiki/Accuracy_and_precision#In_information_systems) su Wikipedia.
+ **Cost (Costo)** misura la quantità di risorse di elaborazione (e quindi di denaro) consumate per l'esecuzione della trasformazione.

# Scelta tra precisione e recupero
<a name="machine-learning-precision-recall-tradeoff"></a>

Ogni trasformazione `FindMatches` contiene un parametro `precision-recall`. È possibile utilizzare questo parametro per specificare uno dei seguenti requisiti:
+ Se la preoccupazione maggiore riguarda la possibilità che la trasformazione indichi la corrispondenza tra due record quando in effetti tale corrispondenza non esiste, allora è opportuno enfatizzare l'aspetto della *precisione*. 
+ Se la preoccupazione maggiore riguarda la mancata rilevazione di record tra i quali esiste in effetti una corrispondenza, allora è opportuno enfatizzare l'aspetto del *recupero*.

È possibile regolare questo compromesso all'interno della console di AWS Glue o utilizzando le operazioni API di machine learning di AWS Glue.

**Quando favorire la precisione**  
È opportuno favorire la precisione se la preoccupazione maggiore riguarda il rischio che `FindMatches` stabilisca una relazione tra due record quando in effetti tale corrispondenza non esiste. Per favorire la precisione, scegliere un valore *più alto* per il compromesso tra precisione e recupero. Con un valore più alto, la trasformazione `FindMatches` richiede un numero maggiore di elementi a sostegno per stabilire se una coppia di record deve essere è legata da una corrispondenza. Si incrementa la predisposizione della trasformazione a supporre che tra i record non esista una corrispondenza.

Ad esempio, si supponga di utilizzare `FindMatches` per rilevare gli elementi duplicati in un catalogo di video e di assegnare al parametro precisione-recupero della trasformazione un valore elevato. Se la trasformazione rileva erroneamente che *Star Wars: Una nuova speranza* è la stessa cosa di *Star Wars: L'impero colpisce ancora*, a un cliente che desidera *Una nuova speranza* potrebbe essere mostrato *L'impero colpisce ancora*. Si tratterebbe di un'esperienza utente scadente. 

Tuttavia, se la trasformazione non riesce a rilevare che *Star Wars: Una nuova speranza* e *Star Wars: Episodio IV - Una nuova speranza* sono lo stesso elemento, il cliente potrebbe essere confuso all'inizio ma potrebbe alla fine riconoscere i due elementi come lo stesso film. Sarebbe un errore, ma non così grave come nel caso precedente.

**Quando favorire il recupero**  
È opportuno favorire il recupero se la preoccupazione maggiore riguarda il rischio che i risultati della trasformazione `FindMatches` possano non riuscire a rilevare una coppia di record tra i quali esiste un effetti una corrispondenza. Per favorire il recupero, scegliere un valore *più basso* per il compromesso tra precisione e recupero. Con un valore più basso, la trasformazione `FindMatches` richiede un numero minore di elementi a sostegno per decidere che una coppia di record è legata da una corrispondenza. Si incrementa la predisposizione della trasformazione a supporre che tra i record esista una corrispondenza.

Ad esempio, questa potrebbe essere una priorità per un'azienda che si occupa di sicurezza. Si supponga di confrontare l'elenco dei clienti con uno di noti frodatori e che sia importante determinare se un cliente è un frodatore. Si sta utilizzando `FindMatches` per trovare le corrispondenze tra l'elenco dei frodatori e quello dei clienti. Ogni volta che `FindMatches` rileva una corrispondenza tra i due elenchi, a un revisore umano viene assegnato il compito di verificare che la persona sia, in effetti, un frodatore. L'azienda potrebbe scegliere di favorire il recupero rispetto alla precisione. In altre parole, è preferibile che i verificatori debbano esaminare manualmente e rigettare alcuni casi in cui il cliente non è un frodatore piuttosto che fallire nell'identificazione di un cliente che si trova, in effetti, nell'elenco dei frodatori.

**Come favorire sia la precisione che il recupero**  
Il modo migliore per migliorare la precisione e il recupero è etichettare una maggiore quantità di dati. Etichettando una maggiore quantità di dati, migliora la precisione globale della trasformazione `FindMatches`, con conseguenti miglioramenti sia della precisione che del recupero. Tuttavia, anche nel caso della trasformazione più accurata possibile, esiste sempre un'area grigia dove è necessario sperimentare se favorire precisione o recupero oppure scegliere un valore intermedio. 

# Scelta tra accuratezza e costo
<a name="machine-learning-accuracy-cost-tradeoff"></a>

Ogni trasformazione `FindMatches` contiene un parametro `accuracy-cost`. È possibile utilizzare questo parametro per specificare uno dei seguenti requisiti:
+ Se la preoccupazione maggiore riguarda la possibilità che la trasformazione riveli con precisione la corrispondenza tra due record, allora è opportuno enfatizzare l'aspetto dell'*accuratezza*.
+ Se la preoccupazione maggiore riguarda il costo o la velocità di esecuzione della trasformazione, allora è opportuno enfatizzare l'aspetto della *riduzione del costo*.

È possibile regolare questo compromesso all'interno della console di AWS Glue o utilizzando le operazioni API di machine learning di AWS Glue.

**Quando favorire l'accuratezza**  
È opportuno favorire l'accuratezza se la preoccupazione maggiore riguarda il rischio che i risultati della trasformazione `find matches` non includano le corrispondenze. Per favorire l'accuratezza, scegliere un valore *più alto* per il compromesso tra accuratezza e costo. Con un valore più elevato, la trasformazione `FindMatches` richiede più tempo per approfondire la ricerca sui record tra i quali esiste una corrispondenza. Si noti che questo parametro non rende meno probabile la possibilità di indicare erroneamente corrispondenti due record tra i quali non esiste nessuna corrispondenza. Si incrementa la predisposizione della trasformazione a dedicare un tempo maggiore alla ricerca delle corrispondenze.

**Quando favorire il costo**  
È opportuno favorire il costo se la preoccupazione maggiore riguarda il costo di esecuzione della trasformazione `find matches` rispetto al numero di corrispondenze rilevate. Per favorire il costo, scegliere un valore *più basso* per il compromesso tra accuratezza e costo. Con un valore più basso, la trasformazione `FindMatches` richiede una minore quantità di risorse per l'esecuzione. Si incrementa la predisposizione della trasformazione alla ricerca di un numero minore di corrispondenze. Utilizzare questa impostazione se, pur favorendo la ricerca di costi inferiori, i risultati sono comunque accettabili.

**Come favorire sia l'accuratezza che il costo**  
Per esaminare un numero maggiore di coppie di record al fine di determinare la presenza di eventuali corrispondenze, serve un tempo di elaborazione maggiore. Se si desidera ridurre i costi senza ridurre la qualità, è possibile seguire la procedura illustrata qui di seguito: 
+ Eliminare i record dell'origine dati per i quali la presenza di una corrispondenza non è di interesse.
+ Eliminare le colonne dell'origine dati che si è certi non siano utili ai fini della determinazione della presenza o meno di una corrispondenza. Un buon metodo per stabilirle quali siano è eliminare le colonne che non sembrano influenzare la propria valutazione sul fatto che un insieme di record rappresentino "la stessa cosa".

# Stima della qualità delle corrispondenze utilizzando i punteggi di confidenza delle corrispondenze
<a name="match-scoring"></a>

I punteggi di confidenza delle partite forniscono una stima della qualità delle corrispondenze rilevate FindMatches per distinguere tra record corrispondenti in cui il modello di apprendimento automatico è altamente sicuro, incerto o improbabile. Un punteggio di confidenza delle corrispondenze sarà compreso tra 0 e 1, dove il punteggio più alto significa una somiglianza più elevata. L'esame dei punteggi di confidenza delle corrispondenze consente di distinguere tra cluster di corrispondenze in cui il sistema è altamente sicuro (che potresti decidere di unire), cluster su cui il sistema è incerto (che potresti decidere di far esaminare da un essere umano) e cluster che il sistema ritiene improbabile (che potresti decidere di rifiutare).

Potresti dover modificare i tuoi dati di formazione in situazioni in cui vedi un punteggio di confidenza elevato, ma determinare che non ci sono corrispondenze, o dove vedi un punteggio basso determinare che ci sono, di fatto, corrispondenze.

I punteggi di fiducia sono particolarmente utili quando esistono set di dati industriali di grandi dimensioni, in cui è impossibile rivedere ogni decisione. FindMatches 

I punteggi di confidenza delle corrispondenze sono disponibili in AWS Glue versione 2.0 o successive.

## Generazione di punteggi di confidenza delle corrispondenze
<a name="specifying-match-scoring"></a>

È possibile generare punteggi di confidenza delle corrispondenze impostando il valore booleano di `computeMatchConfidenceScores` su Vero quando si chiama `FindMatches` o lAPI `FindIncrementalMatches`.

AWS Glue aggiunge una nuova `column match_confidence_score` all'output.

## Esempi di punteggio di corrispondenza
<a name="match-scoring-examples"></a>

Considera, ad esempio, le corrispondenze di registri seguenti:

**Punteggio >= 0,9**  
Riepilogo dei registri corrispondenti:

```
  primary_id  |   match_id  | match_confidence_score

3281355037663    85899345947   0.9823658302132061
1546188247619    85899345947   0.9823658302132061
```

Informazioni:

![\[Esempio di tabella di routing con un gateway Internet.\]](http://docs.aws.amazon.com/it_it/glue/latest/dg/images/match_score1.png)


Da questo esempio, possiamo vedere che due registri sono molto simili e condividono `display_position`, `primary_name` e`street name`. 

**Punteggio >= 0,8 e punteggio < 0,9**  
Riepilogo dei registri corrispondenti:

```
  primary_id  |   match_id  | match_confidence_score

309237680432     85899345928   0.8309852373674638
3590592666790    85899345928   0.8309852373674638
343597390617     85899345928   0.8309852373674638
249108124906     85899345928   0.8309852373674638
463856477937     85899345928   0.8309852373674638
```

Informazioni:

![\[Esempio di tabella di routing con un gateway Internet.\]](http://docs.aws.amazon.com/it_it/glue/latest/dg/images/match_score2.png)


Da questo esempio, possiamo vedere che questi registri condividono gli stessi `primary_name` e`country`.

**Punteggio >= 0,6 e punteggio < 0,7**  
Riepilogo dei registri corrispondenti:

```
  primary_id  |   match_id  | match_confidence_score

2164663519676    85899345930   0.6971099896480333
 317827595278    85899345930   0.6971099896480333
 472446424341    85899345930   0.6971099896480333
3118146262932    85899345930   0.6971099896480333
 214748380804    85899345930   0.6971099896480333
```

Informazioni:

![\[Esempio di tabella di routing con un gateway Internet.\]](http://docs.aws.amazon.com/it_it/glue/latest/dg/images/match_score3.png)


Da questo esempio, possiamo vedere che questi registri condividono solo lo stesso `primary_name`.

Per ulteriori informazioni, consulta:
+ [Fase 5: aggiunta ed esecuzione di un processo con la trasformazione basata su machine learning](machine-learning-transform-tutorial.md#ml-transform-tutorial-add-job)
+ PySpark: [FindMatches classe](aws-glue-api-crawler-pyspark-transforms-findmatches.md)
+ PySpark: [FindIncrementalMatches classe](aws-glue-api-crawler-pyspark-transforms-findincrementalmatches.md)
+ Scala: [FindMatches classe](glue-etl-scala-apis-glue-ml-findmatches.md)
+ Scala: [FindIncrementalMatches classe](glue-etl-scala-apis-glue-ml-findincrementalmatches.md)

# Addestramento della trasformazione di rilevamento delle corrispondenze
<a name="machine-learning-teaching"></a>

Ogni trasformazione `FindMatches` deve essere addestrata rispetto a ciò che deve essere considerato una corrispondenza e ciò che non deve essere considerato tale. Una trasformazione viene addestrata aggiungendo delle etichette a un file e caricando tali scelte su AWS Glue. 

È possibile orchestrare questa operazione di etichettatura all'interno della console di AWS Glue o utilizzando le operazioni API di machine learning di AWS Glue.

**Quante volte è necessario eseguire l'operazione di etichettatura? Quante etichette sono necessarie?**  
Le risposte a queste domande dipendono generalmente dall'utilizzatore. È necessario valutare se `FindMatches` offre il livello di accuratezza di cui si necessita e se si ritiene che un'etichettatura aggiuntiva possa valere la pena. Il modo migliore per deciderlo è analizzare i parametri "Precision", "Recall" e "Area sotto la curva di precisione e recall" che è possibile generare selezionando **Estimate quality (Valuta la qualità)** all'interno della console di AWS Glue. Dopo aver etichettato ulteriori insiemi di attività, ricalcolare questi parametri e verificare il loro eventuale miglioramento. Se, dopo l'etichettatura di alcuni insiemi di attività, non si percepisce un miglioramento del parametro di interesse, la qualità della trasformazione potrebbe aver raggiunto uno stato stazionario.

**Perché servono le etichette sia per gli eventi veri positivi che per quelli veri negativi?**  
La trasformazione `FindMatches` ha bisogno di esempi sia positivi che negativi per comprendere cosa intende l'utente per corrispondenza. Se si stanno etichettando dei dati di addestramento generati da `FindMatches` (ad esempio, utilizzando l'opzione **I do not have labels (Non dispongo di etichette)**), `FindMatches` prova a generare un set di "id di insiemi di etichette". All'interno di ciascuna attività, si assegna la stessa "etichetta" ad alcuni record e diverse "etichette" ad altri record. In altre parole, le attività generalmente non prevedono solo la presenza di elementi tutti uguali o tutti diversi (anche se è normale che una specifica attività comprenda elementi "tutti uguali" o "tutti diversi").

Se si sta addestrando la trasformazione `FindMatches` utilizzando l'opzione **Upload labels from S3 (Caricamento delle etichette da S3)**, provare a includere sia esempi di record corrispondenti e che di record non corrispondenti. È accettabile averne di un solo tipo. Queste etichette consentono di creare una trasformazione `FindMatches` più accurata, ma è comunque necessario etichettare alcuni record generati utilizzando l'opzione **Generate labeling file (Genera file di etichettatura)**.

**Come posso fare in modo che la trasformazione rilevi le corrispondenze esattamente come è stata addestrata a fare?**  
La trasformazione `FindMatches` esegue un processo di apprendimento a partire dalle etichette fornite, perciò potrebbe generare coppie di record che non rispettano tali etichette. Per far sì che la `FindMatches` trasformazione rispetti le tue etichette, seleziona **EnforceProvidedLabels**in. **FindMatchesParameter**

**Quali tecniche è possibile utilizzare quando una trasformazione basata su ML identifica come corrispondenti degli elementi che non lo sono?**  
È possibile utilizzare le seguenti tecniche:
+ Incrementare il valore di `precisionRecallTradeoff`. Questa operazione porterà all'individuazione di un numero minore di corrispondenze ma, al raggiungimento di un valore sufficientemente elevato, dovrebbe anche suddividere un cluster di grandi dimensioni in componenti più piccole. 
+ Selezionare le righe di output corrispondenti ai risultati errati e riformattarle sotto forma di insieme di dati per l'etichettatura (rimuovendo la colonna `match_id` e aggiungendo le colonne `labeling_set_id` e `label`). Se necessario, spezzettarle (suddividerle) in più insiemi di dati per l'etichettatura al fine di assicurare che l'addetto all'etichettatura possa concentrarsi su ogni set di dati durante il processo di etichettatura. Quindi, etichettare correttamente i set corrispondenti e caricare il file di etichettatura accodandolo alle etichette esistenti. Queste informazioni potrebbero addestrare la trasformazione a sufficienza su cosa cercare per comprendere lo schema. 
+ (Avanzato) Infine, controllare i dati per verificare la presenza di uno schema che il sistema non sta rilevando. Pre-elaborare tali dati utilizzando le funzioni standard di AWS Glue per *normalizzarli*. Evidenziare gli elementi dai quali si desidera che l'algoritmo tragga insegnamenti separando i dati che l'utente ritiene importanti per la loro diversità nelle rispettive colonne. Oppure creare colonne combinate a partire dalle colonne i cui dati sono da ritenersi correlati. 