サポートベクターマシン (SVM) は、統計的学習理論に基づく機械学習の手法です。経験リスクと信頼区間のバランスをとる構造的リスク最小化を通じて、モデルの汎化能力を向上させます。このトピックでは、線形 SVM コンポーネントの設定方法と使用例について説明します。
背景情報
この線形 SVM アルゴリズムは、カーネル関数を使用せずに実装されています。実装の詳細については、「L2-SVM の信頼領域法」セクションのアルゴリズムの原理をご参照ください。
制限事項
線形 SVM コンポーネントは、二項分類のみをサポートします。
コンポーネントの設定
線形 SVM コンポーネントのパラメーターは、次のいずれかの方法で設定できます。
方法 1:ビジュアル設定
-
入力ポート
線形 SVM コンポーネントには必須の入力ポートが 1 つあり、テーブル読み込みコンポーネントに接続する必要があります。
-
ワークフローページでコンポーネントのパラメーターを設定します。
パラメータータイプ
パラメーター
必須
説明
フィールド設定
特徴列
はい
モデルトレーニング用の特徴列です。サポートされているデータ型は BIGINT と DOUBLE です。
ラベル列
はい
モデルトレーニング用のラベル列です。サポートされているデータ型は BIGINT、DOUBLE、STRING です。
パラメーター設定
正例のラベル値
いいえ
正例を表す値です。このパラメーターを指定しない場合、ラベル列からランダムに値が選択されます。不均衡なデータセットの場合は、このパラメーターを指定することを推奨します。
正のペナルティ係数
いいえ
正例の重みです。デフォルト値は 1.0 で、値の範囲は (0, +∞) です。
負のペナルティ係数
いいえ
負のサンプルの重みです。デフォルト値は 1.0 で、値の範囲は (0, +∞) です。
収束係数
いいえ
収束誤差です。デフォルト値は 0.001 です。値の範囲は (0, 1) です。
実行チューニング
コア数
いいえ
指定しない場合、システムが自動的にリソースを割り当てます。
コアあたりのメモリ
いいえ
各コアのメモリサイズ (MB) です。指定しない場合、システムが自動的にリソースを割り当てます。
-
出力ポート
OfflineModel フォーマットでバイナリ分類モデルを出力します。このコンポーネントの出力は、予測コンポーネントに接続します。
方法 2:PAI コマンド
SQL スクリプトコンポーネントで PAI コマンドを実行して、コンポーネントのパラメーターを設定できます。詳細については、「SQL スクリプト」をご参照ください。
PAI -name LinearSVM -project algo_public
-DinputTableName="bank_data"
-DmodelName="xlab_m_LinearSVM_6143"
-DfeatureColNames="pdays,emp_var_rate,cons_conf_idx"
-DlabelColName="y"
-DpositiveLabel="0"
-DpositiveCost="1.0"
-DnegativeCost="1.0"
-Depsilon="0.001";
次の表に、PAI コマンドのパラメーターを説明します。
|
パラメーター |
必須 |
デフォルト |
説明 |
|
inputTableName |
はい |
N/A |
入力テーブルの名前です。 |
|
inputTablePartitions |
いいえ |
入力テーブルのすべてのパーティション。 |
トレーニング用の入力テーブルのパーティションです。次のフォーマットがサポートされています:
説明
複数のパーティションを指定するには、カンマ (,) で区切ります。 |
|
modelName |
はい |
N/A |
出力モデルの名前です。 |
|
featureColNames |
はい |
N/A |
入力テーブルの特徴列の名前です。 |
|
labelColName |
はい |
N/A |
入力テーブルのラベル列の名前です。 |
|
positiveLabel |
いいえ |
label 列からランダムに値が選択されます。 |
正例を表す値です。 |
|
positiveCost |
いいえ |
1.0 |
正のクラスの重みで、正のペナルティ係数とも呼ばれます。値は (0, +∞) の範囲内である必要があります。 |
|
negativeCost |
いいえ |
1.0 |
負のクラスの重みで、負のペナルティ係数とも呼ばれます。値は (0, +∞) の範囲内である必要があります。 |
|
epsilon |
いいえ |
0.001 |
収束係数です。値は (0,1) の範囲内である必要があります。 |
|
enableSparse |
いいえ |
false |
入力データがスパースフォーマットであるかどうかを指定します。有効な値は true と false です。 |
|
itemDelimiter |
いいえ |
, (カンマ) |
入力テーブルデータがスパースフォーマットの場合の KV ペア間のデリミタです。 |
|
kvDelimiter |
いいえ |
: (コロン) |
入力テーブルデータがスパースフォーマットの場合の key と value の間のデリミタです。 |
|
coreNum |
いいえ |
システム割り当て |
計算コアの数です。値は正の整数である必要があります。 |
|
memSizePerCore |
いいえ |
システム割り当て |
各コアのメモリサイズ (MB) です。値は [1, 65536] の範囲の整数である必要があります。 |
例
-
次のトレーニングデータをインポートします。
id
y
f0
f1
f2
f3
f4
f5
f6
f7
1
-1
-0.294118
0.487437
0.180328
-0.292929
-1
0.00149028
-0.53117
-0.0333333
2
+1
-0.882353
-0.145729
0.0819672
-0.414141
-1
-0.207153
-0.766866
-0.666667
3
-1
-0.0588235
0.839196
0.0491803
-1
-1
-0.305514
-0.492741
-0.633333
4
+1
-0.882353
-0.105528
0.0819672
-0.535354
-0.777778
-0.162444
-0.923997
-1
5
-1
-1
0.376884
-0.344262
-0.292929
-0.602837
0.28465
0.887276
-0.6
6
+1
-0.411765
0.165829
0.213115
-1
-1
-0.23696
-0.894962
-0.7
7
-1
-0.647059
-0.21608
-0.180328
-0.353535
-0.791962
-0.0760059
-0.854825
-0.833333
8
+1
0.176471
0.155779
-1
-1
-1
0.052161
-0.952178
-0.733333
9
-1
-0.764706
0.979899
0.147541
-0.0909091
0.283688
-0.0909091
-0.931682
0.0666667
10
-1
-0.0588235
0.256281
0.57377
-1
-1
-1
-0.868488
0.1
-
次のテストデータをインポートします。
id
y
f0
f1
f2
f3
f4
f5
f6
f7
1
+1
-0.882353
0.0854271
0.442623
-0.616162
-1
-0.19225
-0.725021
-0.9
2
+1
-0.294118
-0.0351759
-1
-1
-1
-0.293592
-0.904355
-0.766667
3
+1
-0.882353
0.246231
0.213115
-0.272727
-1
-0.171386
-0.981213
-0.7
4
-1
-0.176471
0.507538
0.278689
-0.414141
-0.702128
0.0491804
-0.475662
0.1
5
-1
-0.529412
0.839196
-1
-1
-1
-0.153502
-0.885568
-0.5
6
+1
-0.882353
0.246231
-0.0163934
-0.353535
-1
0.0670641
-0.627669
-1
7
-1
-0.882353
0.819095
0.278689
-0.151515
-0.307329
0.19225
0.00768574
-0.966667
8
+1
-0.882353
-0.0753769
0.0163934
-0.494949
-0.903073
-0.418778
-0.654996
-0.866667
9
+1
-1
0.527638
0.344262
-0.212121
-0.356974
0.23696
-0.836038
-0.8
10
+1
-0.882353
0.115578
0.0163934
-0.737374
-0.56974
-0.28465
-0.948762
-0.933333
-
次の図に示すようにパイプラインを作成します。詳細については、「アルゴリズムモデリング」をご参照ください。

-
次の表に示すように、線形 SVM コンポーネントのパラメーターを設定します。他のすべてのパラメーターはデフォルト値のままにします。
パラメータータイプ
パラメーター
説明
フィールド設定
特徴列
f0、f1、f2、f3、f4、f5、f6、f7 の列を選択します。
ラベル列
y 列を選択します。
-
パイプラインを実行し、予測結果を表示します。予測が完了すると、出力には、10 行のテストデータに対する二項分類の予測結果が、id、y (実際のラベル)、prediction_result (予測ラベル:+1 または -1)、prediction_score、prediction_detail (JSON フォーマットでの +1 および -1 クラスのスコア詳細) の 5 つの列で表示されます。