K 最近傍 (k-NN) アルゴリズム - Amazon SageMaker

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

K 最近傍 (k-NN) アルゴリズム

Amazon SageMaker k-最近傍法 (k-NN) アルゴリズムはインデックスベースのアルゴリズムです。このアルゴリズムは、分類または回帰にノンパラメトリック手法を使用します。分類問題の場合、アルゴリズムはサンプルポイントに最も近い k ポイントに対してクエリを実行し、そのクラスで最も頻繁に使用されるラベルを予測ラベルとして返します。回帰問題の場合、アルゴリズムはサンプルポイントに最も近い k ポイントに対してクエリを実行し、それらの特徴値の平均を予測値として返します。

k-NN アルゴリズムを使用したトレーニングには、サンプリング、次元削減、およびインデックス構築の 3 つのステップがあります。サンプリングによって、初期データセットがメモリに収まるように、そのサイズが縮小されます。次元削減の場合、アルゴリズムはデータの特徴次元を削減して、メモリ内の k-NN モデルのフットプリントと推論レイテンシーを減らします。ランダムプロジェクションと高速 Johnson-Lindenstrauss 変換の 2 つの次元削減手法が用意されています。通常、高次元 (d > 1000) のデータセットには次元削減を使用して、「次元の呪い」を回避します。次元の呪いとは、次元数が増加するにつれてスパースが進み、データの統計分析が困難になるという現象です。k-NN のトレーニングの主な目標は、インデックスを構築することです。このインデックスを使用すると、値またはクラスラベルがまだ判別されていないポイントと、推論に使用する k 近傍ポイントとの間の距離を効率的に検索できます。

k-NN アルゴリズムの入出力インターフェイス

SageMaker k-NN はトレーニングデータチャネルとテストデータチャネルをサポートします。

  • サンプリングして k-NN インデックスに構築するデータには、トレーニングチャネルを使用します。

  • ログファイルにスコアを出力するには、テストチャネルを使用します。スコアはミニバッチごとに 1 行で表示され、classifier については精度、regressor については平均二乗誤差 (mse) のスコアが表示されます。

トレーニング入力の場合、k-NN は text/csv および application/x-recordio-protobuf データ形式をサポートします。入力タイプが text/csv の場合は、最初の label_size 列が、その行のラベルベクトルとして解釈されます。ファイルモードまたはパイプモードを使用すると、recordIO-wrapped-protobuf または CSV の形式のデータについてモデルをトレーニングできます。

推論入力の場合、k-NN は application/jsonapplication/x-recordio-protobuf、および text/csv データ形式をサポートします。text/csv 形式は、label_size およびエンコーディングパラメータを受け入れます。label_size は 0 であり、UTF-8 エンコーディングであることが想定されます。

推論出力の場合、k-NN は application/json および application/x-recordio-protobuf データ形式をサポートします。これら 2 つのデータ形式は冗長出力モードもサポートします。冗長出力モードでは 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-最近傍カバータイプを参照してください。

Jupyter ノートブックインスタンスを使用しての例を実行します。 SageMakerで Jupyter ノートブックインスタンスを作成して開く方法については、を参照してください。 SageMaker Amazon SageMaker Notebook インスタンスノートブックインスタンスを作成して開いたら、「SageMaker Examples」タブを選択すると、すべてのサンプルノートブックのリストが表示されます。 SageMaker 「Introduction to Amazon algorithms (Amazon アルゴリズムの概要)」セクションで、K-Nearest Neighbor ノートブックを検索します。ノートブックを開くには、その [Use (使用)] タブをクリックして [Create copy (コピーを作成)] を選択します。

k-NN アルゴリズムの EC2 インスタンスに関する推奨事項

CPU インスタンス (ml.m5.2xlarge など) または GPU インスタンスでトレーニングすることをお勧めします。k-NN アルゴリズムは、トレーニングと推論用の P2、P3、G4dn、G5 GPU インスタンスファミリーをサポートします。

GPU ハードウェアを使用すると、CPU から GPU への通信に負担がかかるため、通常、CPU からの推論リクエストは GPU からのリクエストよりも平均レイテンシーが短くなります。ただし、GPU は一般的にバッチサイズが大きいほどスループットが高くなります。