PS-SMART は、GBDT ベースのアルゴリズムを使用して多クラス分類モデルをトレーニングします。このアルゴリズムは、数十億のサンプルと数千のノードまでスケールします。
制限事項
-
ターゲット列は数値型のみを受け入れます。トレーニングの前に、MaxCompute テーブルの STRING 型データを変換する必要があります。例: Good/Medium/Bad を 0/1/2 に変換します。
-
KV 形式のデータの場合、特徴 ID は正の整数、特徴値は実数である必要があります。シリアライズコンポーネントを使用して、文字列型の特徴 ID を変換します。カテゴリカルな文字列値には、特徴量エンジニアリング (離散化など) を適用します。
-
このコンポーネントは数十万の特徴量を処理できますが、大量のリソースを消費し、実行速度が遅くなります。GBDT アルゴリズムは、連続値を持つ特徴量で最も高いパフォーマンスを発揮します。低頻度の特徴量をフィルタリングするために、カテゴリカルな特徴量に one-hot エンコーディングを適用します。連続値を持つ特徴量の離散化は避けてください。
-
PS-SMART は、データサンプリング (data_sample_ratio)、特徴サンプリング (fea_sample_ratio)、ヒストグラム近似、およびスケッチのマージ順序によってランダム性を導入します。ツリー構造は分散ワーカー間で異なる場合がありますが、モデルのパフォーマンスはほぼ同等です。同じデータとパラメーターを使用しても、実行ごとに結果が一致しない場合があります。
-
[コンピューティングコア] を増やすと、トレーニングが高速化されます。トレーニングは、すべてのサーバーが必要なリソースを取得した後にのみ開始されます。クラスターの輻輳時にリソースをさらに要求すると、待機時間が長くなります。
コンポーネントの設定
方法 1:GUI の使用
Designer のワークフローに [PS-SMART 多クラス分類] を追加し、パラメーターを設定します。
|
パラメータータイプ |
パラメーター |
説明 |
|
フィールド設定 |
スパース形式かどうか |
スパース形式は、スペースで KV ペアを区切り、コロンで キー と 値 を区切ります。例: 1:0.3 3:0.9。 |
|
特徴列 |
入力テーブルの特徴量列。密形式の場合は、数値列 (BIGINT または DOUBLE) のみを選択します。キーと値の両方が数値である疎な KV 形式の場合は、STRING 型の列のみを選択します。 |
|
|
ラベル列 |
入力テーブルのラベル列。STRING 型と数値型を受け入れます。内部ストレージには、0、1、2 のような数値型が必要です。 |
|
|
重み列 |
各サンプル行の重み列。数値型のみを受け入れます。 |
|
|
パラメーター設定 |
クラス数 |
多クラス分類のクラス数。n に設定した場合、ラベル列の値の範囲は 0 から n-1 である必要があります。 |
|
評価メトリックタイプ |
評価メトリックタイプ:多クラス負の対数尤度と多クラス分類エラー。 |
|
|
ツリー数 |
ツリーの数 (正の整数)。トレーニング時間は比例して長くなります。 |
|
|
ツリーの最大深度 |
ツリーの最大深度。値の範囲は 1 から 20 です。デフォルト: 5 (最大 32 のリーフノードを許容)。 |
|
|
データサンプリング率 |
各ツリーを構築する際にサンプリングされるデータの割合。弱学習器を作成し、トレーニングを高速化します。 |
|
|
特徴サンプリング率 |
各ツリーを構築する際にサンプリングされる特徴の割合。弱学習器を作成し、トレーニングを高速化します。 |
|
|
L1 ペナルティ係数 |
L1 ペナルティ係数。リーフノードの重みに対する正則化項です。値が大きいほどモデルの複雑さが抑制され、過学習を防ぎます。 |
|
|
L2 ペナルティ係数 |
L2 ペナルティ係数。リーフノードの重みに対する正則化項です。値が大きいほどモデルの複雑さが抑制され、過学習を防ぎます。 |
|
|
学習率 |
学習率。範囲: (0,1)。 |
|
|
概算スケッチ精度 |
スケッチ構築のための分位点閾値。値が小さいほど、より多くのバケットが作成されます。デフォルト: 0.03。手動での設定は不要です。 |
|
|
最小分割損失変化 |
ノードを分割するために必要な最小損失減少量。値が大きいほど、より保守的な分割になります。 |
|
|
特徴数 |
特徴数または最大の特徴 ID。リソースの見積もりに使用されます。 |
|
|
グローバルバイアス |
すべてのサンプルの初期予測値。ベーススコアとも呼ばれます。 |
|
|
乱数シード |
乱数シード (整数)。 |
|
|
特徴量重要度タイプ |
特徴量重要度の計算タイプ:
|
|
|
実行チューニング |
コア数 |
コンピューティングコアの数。デフォルトではシステムが自動的に割り当てます。 |
|
コアごとのメモリサイズ |
コアごとのメモリ (MB)。システムが自動的に割り当てます。手動での設定はほとんど不要です。 |
方法 2:PAI コマンドの使用
SQL スクリプトコンポーネントから PAI コマンドを呼び出します。詳細については、「シナリオ 4: SQL スクリプトコンポーネントで PAI コマンドを実行する」をご参照ください。
--トレーニング
PAI -name ps_smart
-project algo_public
-DinputTableName="smart_multiclass_input"
-DmodelName="xlab_m_pai_ps_smart_bi_545859_v0"
-DoutputTableName="pai_temp_24515_545859_2"
-DoutputImportanceTableName="pai_temp_24515_545859_3"
-DlabelColName="label"
-DfeatureColNames="features"
-DenableSparse="true"
-Dobjective="multi:softprob"
-Dmetric="mlogloss"
-DfeatureImportanceType="gain"
-DtreeCount="5"
-DmaxDepth="5"
-Dshrinkage="0.3"
-Dl2="1.0"
-Dl1="0"
-Dlifecycle="3"
-DsketchEps="0.03"
-DsampleRatio="1.0"
-DfeatureRatio="1.0"
-DbaseScore="0.5"
-DminSplitLoss="0"
--予測
PAI -name prediction
-project algo_public
-DinputTableName="smart_multiclass_input";
-DmodelName="xlab_m_pai_ps_smart_bi_545859_v0"
-DoutputTableName="pai_temp_24515_545860_1"
-DfeatureColNames="features"
-DappendColNames="label,features"
-DenableSparse="true"
-DkvDelimiter=":"
-Dlifecycle="28"
|
モジュール |
パラメーター |
必須 |
デフォルト |
説明 |
|
データパラメーター |
featureColNames |
はい |
None |
入力テーブルの特徴列。デンス形式の場合、数値列 (BIGINT または DOUBLE) のみを選択します。キー と 値 の両方が数値であるスパース KV 形式の場合、STRING 列のみを選択します。 |
|
labelColName |
はい |
None |
入力テーブルのラベル列。STRING 型と数値型を受け入れます。内部ストレージには数値型が必要です。多クラス分類の場合、値の範囲は 0 から n-1 である必要があります。ここで n はクラス数です。 |
|
|
weightCol |
いいえ |
None |
各サンプル行の重み列。数値型のみを受け入れます。 |
|
|
enableSparse |
いいえ |
false |
データがスパース形式かどうか。値: true または false。スパース形式は、スペースで KV ペアを区切り、コロンで キー と 値 を区切ります。例: 1:0.3 3:0.9。 |
|
|
inputTableName |
はい |
None |
入力テーブルの名前。 |
|
|
modelName |
はい |
None |
出力モデルの名前。 |
|
|
outputImportanceTableName |
いいえ |
None |
特徴量重要度の出力テーブルの名前。 |
|
|
inputTablePartitions |
いいえ |
None |
フォーマット: ds=1/pt=1。 |
|
|
outputTableName |
いいえ |
None |
MaxCompute の出力テーブル。バイナリ形式であり、直接読み取ることはできません。SMART 予測コンポーネントを介してのみアクセス可能です。 |
|
|
lifecycle |
いいえ |
3 |
出力テーブルのライフサイクル (日数)。 |
|
|
アルゴリズムパラメーター |
classNum |
はい |
None |
多クラス分類のクラス数。n に設定した場合、ラベル列の値の範囲は 0 から n-1 である必要があります。 |
|
objective |
はい |
None |
目的関数のタイプ。多クラス分類のトレーニングには、multi:softprob を使用します。 |
|
|
metric |
いいえ |
None |
トレーニングデータセットの評価メトリックタイプ。出力は Logview の Coordinator エリアの stdout に書き込まれます。タイプ:
|
|
|
treeCount |
いいえ |
1 |
ツリーの数 (正の整数)。トレーニング時間は比例して長くなります。 |
|
|
maxDepth |
いいえ |
5 |
ツリーの最大深度。範囲: 1 から 20。 |
|
|
sampleRatio |
いいえ |
1.0 |
データサンプリング率。範囲: (0,1]。値 1.0 はサンプリングを無効にします。 |
|
|
featureRatio |
いいえ |
1.0 |
特徴サンプリング率。範囲: (0,1]。値 1.0 はサンプリングを無効にします。 |
|
|
l1 |
いいえ |
0 |
L1 ペナルティ係数。リーフノードの重みに対する正則化項です。値が大きいほどモデルの複雑さが抑制され、過学習を防ぎます。 |
|
|
l2 |
いいえ |
1.0 |
L2 ペナルティ係数。リーフノードの重みに対する正則化項です。値が大きいほどモデルの複雑さが抑制され、過学習を防ぎます。 |
|
|
shrinkage |
いいえ |
0.3 |
学習率。範囲: (0,1)。 |
|
|
sketchEps |
いいえ |
0.03 |
スケッチ構築のための分位点閾値。バケット数: O(1.0/sketchEps)。値が小さいほど、より多くのバケットが作成されます。デフォルト値を使用してください。手動での設定は不要です。範囲: (0,1)。 |
|
|
minSplitLoss |
いいえ |
0 |
ノードを分割するために必要な最小損失減少量。値が大きいほど、より保守的な分割になります。 |
|
|
featureNum |
いいえ |
None |
特徴数または最大の特徴 ID。リソースの見積もりに使用されます。 |
|
|
baseScore |
いいえ |
0.5 |
すべてのサンプルの初期予測値。グローバルバイアスとも呼ばれます。 |
|
|
randSeed |
いいえ |
None |
乱数シード (整数)。 |
|
|
featureImportanceType |
いいえ |
gain |
特徴量重要度の計算タイプ:
|
|
|
チューニングパラメーター |
coreNum |
いいえ |
システム割り当て |
コンピューティングコアの数。値が大きいほど実行が高速化されます。 |
|
memSizePerCore |
いいえ |
システム割り当て |
コアごとのメモリ (MB)。 |
PS-SMARTモデルのデプロイ手順
PS-SMART コンポーネントによって生成されたモデルをオンラインサービスとしてデプロイするには、PS-SMART コンポーネントのダウンストリームに [General-purpose Model Export] コンポーネントを追加する必要があります。他の PSシリーズコンポーネントと同様に、コンポーネントパラメーターを設定できます。詳細については、「General-purpose Model Export」をご参照ください。
正常な実行後、[PAI-EAS モデルオンラインサービス] ページに移動してモデルサービスをデプロイできます。詳細については、「コンソールでサービスをデプロイする」をご参照ください。