As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.
Algoritmo k-nearest neighbors (k-NN)
O algoritmo SageMaker k-Nearest Neighbors (k-NN) da Amazon é um algoritmo baseado em índices. Ele usa um método não paramétrico para classificação ou regressão. Para problemas de classificação, o algoritmo consulta os k pontos que estão mais próximos do ponto de amostragem e retorna o rótulo mais utilizado da sua classe como o rótulo previsto. Para problemas de regressão, o algoritmo consulta os k pontos mais próximos do ponto de amostragem e retorna a média de seus valores de recursos como o valor previsto.
O treinamento com o algoritmo k-NN possui três etapas: amostragem, redução de dimensão e criação do índice. A amostragem reduz o tamanho do conjunto de dados inicial para que ele caiba na memória. Para a redução da dimensão, o algoritmo diminui a dimensão do recurso dos dados para reduzir a área de ocupação do modelo k-NN na latência de memória e da inferência. Fornecemos dois métodos de redução da dimensão: a projeção aleatória e a transformação rápida de Johnson-Lindenstrauss. Normalmente, você usa a redução de dimensão para conjuntos de dados altamente dimensionais (d > 1000) para evitar a "maldição da dimensionalidade" que perturba as análises estatísticas de dados que se tornam esparsos à medida que a dimensionalidade aumenta. O principal objetivo do treinamento do k-NN é construir o índice. Esse índice permite pesquisas eficientes de distâncias entre pontos cujos valores ou rótulos de classe ainda não foram determinados e dos k pontos mais próximos a serem usados para inferência.
Tópicos
- Interface de entrada/saída para o algoritmo k-NN
- Blocos de anotações de amostra de k-NN
- Como funciona o algoritmo k-NN
- Recomendação de instância do EC2 para o algoritmo k-NN
- Hiperparâmetros de k-NN
- Ajustar um modelo k-NN
- Formatos de dados para entrada de treinamento de k-NN
- Formatos de resposta e solicitação para k-NN
Interface de entrada/saída para o algoritmo k-NN
SageMaker O k-NN suporta canais de dados de treinamento e teste.
-
Use um canal de treinamento para os dados que você deseja amostrar e construir no índice k-NN.
-
Use um canal de teste para emitir pontuações em arquivos de log. Essas pontuações são listadas com uma linha por minilote: precisão para
classifier
, erro quadrático médio (mse) pararegressor
da pontuação.
Para entradas de treinamento, k-NN oferece suporte aos formatos de dados text/csv
e application/x-recordio-protobuf
. Para o tipo de entrada text/csv
, as primeiras label_size
colunas são interpretadas como o vetor de rótulo dessa linha. É possível usar o modo de Arquivo ou de Pipe para treinar modelos em dados formatados como recordIO-wrapped-protobuf
ou CSV
.
Para entradas de inferência, k-NN oferece suporte aos formatos de dados application/json
, application/x-recordio-protobuf
e text/csv
. O formato text/csv
aceita um label_size
e um parâmetro de codificação. Ele assume um label_size
de 0 e uma codificação UTF-8.
Para saídas de inferência, k-NN oferece suporte aos formatos de dados application/json
e application/x-recordio-protobuf
. Esses dois formatos de dados também oferecem suporte a um modo de saída detalhado. No modo de saída detalhada, a API fornece aos resultados da pesquisa o vetor de distâncias, classificadas da menor para a maior, bem como os elementos correspondentes no vetor de rótulos.
Para transformação em lote, o k-NN oferece suporte ao formato de dados application/jsonlines
para a entrada e a saída. Veja a seguir um exemplo de entrada:
content-type: application/jsonlines {"features": [1.5, 16.0, 14.0, 23.0]} {"data": {"features": {"values": [1.5, 16.0, 14.0, 23.0]}}
Veja a seguir um exemplo de saída:
accept: application/jsonlines {"predicted_label": 0.0} {"predicted_label": 2.0}
Para obter mais informações sobre formatos de arquivo de entrada e saída, consulte Formatos de dados para entrada de treinamento de k-NN para treinamento, Formatos de resposta e solicitação para k-NN para inferência e os Blocos de anotações de amostra de k-NN.
Blocos de anotações de amostra de k-NN
Use uma instância do notebook Jupyter para executar o exemplo em. SageMaker Para saber como criar e abrir uma instância do notebook Jupyter em SageMaker, consulte. Instâncias do Amazon SageMaker Notebook Depois de criar uma instância de notebook e abri-la, selecione a guia SageMaker Exemplos para ver uma lista de todos os notebooks de SageMaker exemplo. Encontre blocos de anotações do K-Nearest Neighbor na seção Introdução aos algoritmos do Amazon. Para abrir um bloco de anotações, clique em sua guia Uso e selecione Criar cópia.
Recomendação de instância do EC2 para o algoritmo k-NN
Recomendamos treinar em uma instância de CPU (como ml.m5.2xlarge) ou em uma instância de GPU. O algoritmo k-NN oferece suporte às famílias de instâncias de GPU P2, P3, G4dn e G5 para treinamento e inferência.
Em geral, as solicitações de inferência provenientes de CPUs têm uma latência média menor que as solicitações provenientes de GPUs, pois existe uma tarifa sobre a comunicação da CPU para a GPU ao usar o hardware da GPU. No entanto, as GPUs geralmente têm maior rendimento para lotes maiores.