K-NNコンポーネントは、分類のために予測テーブルの行からK個の最も近いレコードを選択する。 K最近傍レコードの最も一般的なクラスが、行のクラスとして使用される。
コンポーネントの設定
次のいずれかの方法を使用して、K-NNコンポーネントを設定できます。
方法1: パイプラインページでコンポーネントを設定する
K-NNコンポーネントのパラメーターは、Machine Learning Platform for AI (PAI) のMachine Learning Designerのパイプラインページで設定できます。 Machine Learning Designerは、以前はMachine Learning Studioとして知られていました。 下表に、各パラメーターを説明します。
タブ | パラメーター | 説明 |
フィールド設定 | トレーニングテーブルのフィーチャー列 | トレーニングに使用されるフィーチャ列。 |
トレーニングテーブルのラベル列を指定します | トレーニング用に選択されているラベル列。 | |
予測テーブルのフィーチャ列 | このパラメーターが指定されていない場合、予測テーブルから選択されたフィーチャ列は、トレーニングテーブルのフィーチャ列と同じになります。 | |
出力テーブルにID列を追加 | 列の予測値を取得するために使用されるID列。 デフォルトでは、予測テーブルから選択されたフィーチャ列がID列として使用されます。 | |
スパース形式での入力 | 入力データがスパース形式かどうかを指定します。 チェックボックスをオンにすると、入力データはkey-value形式になります。 | |
KVペア区切り文字 | キーと値のペアを区切るために使用される区切り文字。 デフォルトでは、Commas (,) が使用されます。 | |
キーと値の区切り文字 | キーと値を区切るために使用される区切り文字。 Colons (:) はデフォルトで使用されます。 | |
パラメーター設定 | 数の隣人 | デフォルト値:100 |
チューニング | コア数 | コアの数。 デフォルトでは、システムが値を決定します。 |
メモリサイズ | 各コアのメモリサイズ。 デフォルトでは、システムが値を決定します。 |
方法2: PAIコマンドを使用する
PAIコマンドを使用してコンポーネントパラメータを設定します。 SQLスクリプトコンポーネントを使用してPAIコマンドを呼び出すことができます。 詳細については、「SQLスクリプト」をご参照ください。
PAI -name knn
-DtrainTableName=pai_knn_test_input
-DtrainFeatureColNames=f0,f1
-DtrainLabelColName=class
-DpredictTableName=pai_knn_test_input
-DpredictFeatureColNames=f0,f1
-DoutputTableName=pai_knn_test_output
-Dk=2;
パラメーター | 必須 | 説明 | デフォルト値 |
trainTableName | 可 | トレーニングテーブルの名前。 | N/A |
trainFeatureColNames | 可 | トレーニングテーブルのフィーチャ列の名前。 | N/A |
trainLabelColName | 可 | トレーニングテーブルのラベル列の名前。 | N/A |
trainTablePartitions | 不可 | トレーニング用にトレーニングテーブルから選択されたパーティション。 | すべてのパーティション |
predictTableName | 可 | 予測テーブルの名前。 | N/A |
outputTableName | 可 | 出力テーブルの名前。 | N/A |
predictFeatureColNames | 不可 | 予測テーブルのフィーチャ列の名前。 | trainFeatureColNamesパラメーターの値と同じ |
predictTablePartitions | 不可 | 予測のために予測テーブルから選択されるパーティション。 | すべてのパーティション |
appendColNames | 不可 | 出力テーブルに追加される列の名前。 | predictFeatureColNamesパラメーターの値と同じ |
outputTablePartition | 不可 | 出力テーブルのパーティション。 | ll table |
k | 不可 | K近傍の数。 有効な値: 1 ~ 1000 | 100 |
enableSparse | 不可 | 入力テーブルのデータがスパース形式かどうかを指定します。 有効な値: trueとfalse。 | false |
itemDelimiter | 不可 | キーと値のペアを区切るために使用される区切り文字。 | , |
kvDelimiter | 不可 | キーと値のペアでキーと値を区切るために使用される区切り文字。 | : |
coreNum | 不可 | コアの数。 このパラメーターは、memSizePerCoreパラメーターと共に使用する必要があります。 有効な値: 1 ~ 20000 | システムによって決定される |
memSizePerCore | 不可 | 各コアのメモリサイズ。 有効値: 1024〜64x1024。 単位:MB。 | システムによって決定される |
ライフサイクル | 不可 | 出力テーブルのライフサイクル。 | N/A |
例:
トレーニングデータを生成します。
create table pai_knn_test_input as select * from ( select 1 as f0,2 as f1, 'good' as class union all select 1 as f0,3 as f1, 'good' as class union all select 1 as f0,4 as f1, 'bad' as class union all select 0 as f0,3 as f1, 'good' as class union all select 0 as f0,4 as f1, 'bad' as class )tmp;
次のPAIコマンドを実行して、K-NNコンポーネントのパラメーターを送信します。
pai -name knn -DtrainTableName=pai_knn_test_input -DtrainFeatureColNames=f0,f1 -DtrainLabelColName=class -DpredictTableName=pai_knn_test_input -DpredictFeatureColNames=f0,f1 -DoutputTableName=pai_knn_test_output -Dk=2;
トレーニング結果を表示します。 結果には次の列が含まれます。
f0およびf1: 付加された列。
prediction_result: 分類結果をリストします。
prediction_score: 分類結果の確率を示します。
prediction_detail: K近傍のクラスとその確率をリストします。