Algoritmo K-Nearest Neighbors (k-NN) - Amazon SageMaker

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à.

Algoritmo K-Nearest Neighbors (k-NN)

L'algoritmo Amazon SageMaker k-Nearest Neighbors (k-NN) è un algoritmo basato su indici. Utilizza un metodo non parametrico per la classificazione o la regressione. Per la classificazione dei problemi, l'algoritmo esegue la query dei punti k più vicini al punto di esempio e restituisce l'etichetta più utilizzata della classe come etichetta prevista. Per i problemi di regressione, l'algoritmo esegue la query dei punti k più vicini al punto di esempio e restituisce la media dei valori di caratteristiche e il valore previsto.

L’addestramento con l'algoritmo k-NN ha tre fasi: campionamento, riduzione della dimensione e costruzione dell'indice. Il campionamento riduce la dimensione del set di dati iniziale in modo che possa essere contenuto in memoria. Per la riduzione della dimensione, l'algoritmo diminuisce la dimensione della caratteristica dei dati per ridurre il footprint del modello k-NN nella latenza della memoria e dell'inferenza. Sono forniti due metodi di riduzione della dimensione: la proiezione casuale e la trasformazione veloce Johnson-Lindenstrauss. In genere, si utilizza la riduzione della dimensione per set di dati ad alta dimensionalità (d> 1000) per evitare la "maledizione della dimensionalità" che disturba l'analisi statistica dei dati che diventa sparsa con l'aumentare della dimensionalità. L'obiettivo principale dell’addestramento k-NN è quello di costruire l'indice. L'indice consente ricerche efficienti di distanze tra i punti i cui valori o etichette di classe non sono ancora stati determinati e i k punti più vicini da utilizzare per l'inferenza.

Interfaccia di input/output per l'algoritmo k-NN

SageMaker K-nn supporta canali di dati di addestramento e test.

  • Usa un canale di addestramento per i dati che vuoi campionare e costruire nell'indice k-NN.

  • Utilizza un canale di test per emettere i punteggi nel file di log. I punteggi sono elencati come una riga per mini-lotto: accuratezza per classifier, errore quadratico medio (mse) per regressor per il punteggio.

Per gli input di addestramento, k-NN supporta i formati di dati text/csv e application/x-recordio-protobuf. Per il tipo di input text/csv, le prime colonne label_size sono interpretate come il vettore delle etichette per la riga. Puoi utilizzare la modalità file o la modalità pipe per addestrare i modelli sui dati formattati come recordIO-wrapped-protobuf o CSV.

Per gli input di inferenza, k-NN supporta i formati di dati application/json, application/x-recordio-protobuf e text/csv. Il formato text/csv accetta un label_size e il parametro di codifica. Presuppone che label_size sia 0 e la codifica UTF-8.

Per gli output di inferenza, k-NN supporta i formati di dati application/json e application/x-recordio-protobuf. Questi due formati di dati supportano anche la modalità di output dettagliato. Nella modalità di output dettagliato, l'API fornisce i risultati della ricerca con il vettore delle distanze ordinato dal più piccolo al più grande e gli elementi corrispondenti nel vettore delle etichette.

Per la trasformazione in batch, k-NN supporta il formato application/jsonlines per l'input e l'output. Di seguito viene riportato un input di esempio:

content-type: application/jsonlines {"features": [1.5, 16.0, 14.0, 23.0]} {"data": {"features": {"values": [1.5, 16.0, 14.0, 23.0]}}

Di seguito viene riportato un output di esempio:

accept: application/jsonlines {"predicted_label": 0.0} {"predicted_label": 2.0}

Per ulteriori informazioni sui formati di file di input e output, consulta Formati di dati per l'input di addestramento k-NN per l’addestramento, Formati di richieste e risposte k-NN per l'inferenza e Notebook di esempio k-NN.

Notebook di esempio k-NN

Per un notebook di esempio che utilizza l'algoritmo SageMaker k-Nearest Neighbor per prevedere i tipi di copertura delle aree naturali sulla base dei dati dei servizi geologici e forestali, vedi K-Nearest Neighbor Covertype.

Usa un'istanza di notebook Jupyter in cui eseguire l'esempio. SageMaker Per informazioni su come creare e aprire un'istanza di notebook Jupyter in, vedi. SageMaker Istanze Amazon SageMaker Notebook Dopo aver creato un'istanza di notebook e averla aperta, seleziona la scheda SageMaker Esempi per visualizzare un elenco di tutti i SageMaker taccuini di esempio. Trova i notebook K-Nearest Neighbor nella sezione Introduzione agli algoritmi di Amazon. Per aprire un notebook, fai clic sulla relativa scheda Use (Utilizza) e seleziona Create copy (Crea copia).

Raccomandazione istanza EC2 per l'algoritmo K-nn

Consigliamo l'addestramento su un'istanza CPU (come ml.m5.2xlarge) o su un'istanza GPU. L'algoritmo k-NN supporta famiglie di istanze GPU P2, P3, G4dn e G5 per l'addestramento e l'inferenza.

Le richieste di inferenza da parte delle CPU in genere hanno una latenza media inferiore rispetto alle richieste da GPU perché c'è una tassa sulla comunicazione da CPU a GPU quando si utilizza l'hardware GPU. Tuttavia, le GPU hanno generalmente un throughput più elevato per i batch di dimensioni maggiori.