K-Nearest Neighbors(k-NN) 알고리즘 - 아마존 SageMaker

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

K-Nearest Neighbors(k-NN) 알고리즘

Amazon SageMaker k-최근접이웃 (k-NN) 알고리즘은 인덱스 기반 알고리즘입니다. 이 알고리즘은 분류 또는 회귀에 비모수적 방법을 사용합니다. 분류 문제의 경우 이 알고리즘은 샘플 지점과 가장 가까운 k 지점을 쿼리하여 가장 자주 사용하는 클래스 레이블을 예측 레이블로 반환합니다. 회귀 문제의 경우 이 알고리즘은 샘플 지점과 가장 가까운 k 지점을 쿼리해 특징 값의 평균을 예측 값으로 반환합니다.

k-NN 알고리즘을 사용한 훈련에는 샘플링, 차원 감소 및 인덱스 빌드, 이렇게 3가지 단계가 있습니다. 샘플링은 메모리에 맞도록 최초 데이터 세트의 크기를 줄입니다. 차원 감소를 위해 이 알고리즘은 데이터의 특징 차원을 줄여 메모리 내에서 k-NN 모델이 차지하는 공간을 줄이고 추론 지연 시간을 단축합니다. 차원 감소 메서드로 Random Projection과 빠른 Johnson-Lindenstrauss 변환 두 가지를 제공합니다. 일반적으로, 차원의 증가에 따라 밀도가 떨어지는 데이터의 통계적 분석 문제를 일으키는 "차원의 저주"(curse of dimensionality)를 피하기 위해 고차원(d >1000) 데이터 세트에 대해 차원 감소를 사용합니다. k-NN의 주요 훈련 목표는 인덱스를 생성하는 것입니다. 인덱스를 사용하면 값 또는 클래스 레이블이 아직 확인되지 않은 지점과 추론에 사용할 k nearest 지점 간에 거리를 효율적으로 조회할 수 있습니다.

k-NN 알고리즘에 대한 입력/출력 인터페이스

SageMaker k-NN은 훈련 및 테스트 데이터 채널을 지원합니다.

  • train 채널은 샘플링하거나 k-NN 인덱스로 생성하려는 데이터에 사용합니다.

  • test 채널은 로그 파일에 점수를 내보냅니다. 점수는 미니 배치당 행 하나로 나열되는데, classifier는 정확도, regressor 점수는 평균 제곱근 오차(mse)를 나타냅니다.

훈련 입력의 경우 k-NN은 text/csvapplication/x-recordio-protobuf 데이터 형식을 지원합니다. 입력 유형 text/csv의 경우 첫 번째 label_size 열은 해당 행의 레이블 벡터로 해석됩니다. 파일 모드 또는 파이프 모드를 사용하여 recordIO-wrapped-protobuf 또는 CSV로 형식이 지정된 데이터에 대해 모델을 훈련할 수 있습니다.

추론 입력의 경우 k-NN은 application/json, application/x-recordio-protobuftext/csv 데이터 형식을 지원합니다. text/csv 형식은 label_size 및 인코딩 파라미터를 수용하고, 0의 label_size와 UTF-8 인코딩을 가정합니다.

추론 출력의 경우 k-NN은 application/jsonapplication/x-recordio-protobuf 데이터 형식을 지원합니다. 이러한 두 가지 데이터 형식 역시 verbose 출력 모드를 지원합니다. verbose 출력 모드에서 API는 가장 작은 항목에서 가장 큰 항목 순으로 정렬된 거리 벡터 및 레이블 벡터의 해당 요소와 함께 검색 결과를 제공합니다.

배치 변환의 경우 k-NN은 입력 및 출력 둘 다에 대해 application/jsonlines 데이터 형식을 지원합니다. 예제 입력은 다음과 같습니다.

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

예제 출력은 다음과 같습니다.

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

입력 및 출력 파일 형식에 대한 자세한 정보는 k-NN 훈련 입력을 위한 데이터 형식(훈련의 경우), k-NN 요청 및 응답 형식(추론의 경우) 및 k-NN 샘플 노트북 단원을 참조하세요.

k-NN 샘플 노트북

SageMaker k-최근접이웃 알고리즘을 사용하여 지질학 및 산림청 데이터로부터 황야 피복 유형을 예측하는 샘플 노트북은 K-Nearest Neighbor Covertype을 참조하십시오.

에서 Jupyter 노트북 인스턴스를 사용하여 예제를 실행하십시오. SageMaker 에서 Jupyter 노트북 인스턴스를 만들고 여는 방법을 알아보려면 을 참조하십시오. SageMaker 아마존 SageMaker 노트북 인스턴스 노트북 인스턴스를 생성하여 연 다음 SageMaker 예제 탭을 선택하면 모든 예제 노트북 목록이 표시됩니다. SageMaker Introduction to Amazon algorithms(Amazon 알고리즘 소개) 섹션에서 K-Nearest Neighbor 노트북을 찾으세요. 노트북을 열려면 사용 탭을 클릭하고 Create copy(사본 생성)를 선택합니다.

k-NN 알고리즘에 대한 EC2 인스턴스 권장 사항

CPU 인스턴스(예: ml.m5.2xlarge) 또는 GPU 인스턴스에서 훈련하는 것이 좋습니다. k-NN 알고리즘은 훈련 및 추론을 위해 P2, P3, G4dn, G5 GPU 인스턴스 패밀리를 지원합니다.

GPU 하드웨어를 사용하는 경우 GPU 간 통신에 대한 부담이 있기 때문에 CPU의 추론 요청은 일반적으로 GPU의 요청보다 평균 지연 시간이 낮습니다. 그러나 GPU는 일반적으로 큰 배치에 대해 처리량이 더 많습니다.