k 近傍法アルゴリズムは、予測テーブルの各行に対して、トレーニングテーブル内で最も近い K 個のレコードを見つけ、データを分類します。これら K 個のレコードの中で最も頻繁に出現するクラスが、その行の予測クラスとして割り当てられます。
コンポーネント設定
k 近傍法コンポーネントは、以下のいずれかの方法で設定できます。
方法1:GUIでの設定
[Designer] のワークフローページで、コンポーネントパラメーターを設定できます。
タブ | パラメーター | 説明 |
[フィールド設定] | [トレーニングテーブルの特徴列] | トレーニングに使用する特徴列です。 |
[トレーニングテーブルのラベル列] | トレーニングのターゲット列です。 | |
[予測テーブルの特徴列] | このパラメーターを設定しない場合、予測テーブルの特徴列はトレーニングテーブルの特徴列と同じになります。 | |
[ID 列を出力テーブルに追加] | 特定の列の予測値を取得するための ID 列を指定します。デフォルトでは、予測テーブルの特徴列が ID 列として使用されます。 | |
[入力データがスパースフォーマットである] | スパースデータには、キーと値のペアのフォーマットを使用します。 | |
[キーと値のペアの区切り文字] | デフォルトの区切り文字はカンマ (,) です。 | |
[キーと値の区切り文字] | デフォルトの区切り文字はコロン (:) です。 | |
[パラメーター設定] | [近傍数] | デフォルト値は 100 です。 |
[実行チューニング] | [コア数] | デフォルトでは、システムによって自動的に割り当てられます。 |
[メモリサイズ] | デフォルトでは、システムによって割り当てられます。 |
方法2: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 | はい | トレーニングテーブルの名前です。 | なし |
trainFeatureColNames | はい | トレーニングテーブル内の特徴列の名前です。 | なし |
trainLabelColName | はい | トレーニングテーブル内のラベル列の名前です。 | なし |
trainTablePartitions | いいえ | トレーニングに使用するトレーニングテーブル内のパーティションです。 | すべてのパーティション |
predictTableName | はい | 予測テーブルの名前です。 | なし |
outputTableName | はい | 出力テーブルの名前です。 | なし |
predictFeatureColNames | いいえ | 予測テーブル内の特徴列の名前です。 | trainFeatureColNames と同じです |
predictTablePartitions | いいえ | 予測に使用する予測テーブル内のパーティションです。 | すべてのパーティション |
appendColNames | いいえ | 予測テーブルから出力テーブルに追加する列の名前です。 | predictFeatureColNames と同じです |
outputTablePartition | いいえ | 出力テーブルのパーティションです。 | テーブル全体 |
k | いいえ | 近傍数です。有効値:1~1000。 | 100 |
enableSparse | いいえ | 入力テーブルのデータがスパースフォーマットであるかどうかを指定します。有効値:{true,false}。 | false |
itemDelimiter | いいえ | 入力データがスパースフォーマットの場合、キーと値のペア間の区切り文字です。 | カンマ (,) |
kvDelimiter | いいえ | 入力データがスパースフォーマットの場合、キーと値の間の区切り文字です。 | コロン (:) |
coreNum | いいえ | ノード数です。このパラメーターは memSizePerCore と一緒に使用します。有効値:1~20,000。 | システムによる計算 |
memSizePerCore | いいえ | 単一ノードのメモリです。有効値:1024 MB ~ 64 × 1024 MB。 | システムによる計算 |
lifecycle | いいえ | 出力テーブルのライフサイクルです。 | なし |
例
トレーニングデータを生成します。
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 近傍法コンポーネントのパラメーターを設定します。
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 個の最近傍クラスとその確率を示します。