パラメータサーバ (PS) は、多数のオフラインおよびオンラインのトレーニングジョブを処理するために使用される。 スケーラブル多重加法回帰木 (SMART) は、PSベースの勾配ブースティング決定木 (GBDT) を使用することによって実装される反復アルゴリズムです。 Platform for AI (PAI) のPS-SMARTマルチクラス分類コンポーネントは、数百億のサンプルと数十万の機能のトレーニングジョブをサポートします。 コンポーネントは、数千のノードでトレーニングジョブを実行できます。 このコンポーネントは、ヒストグラムを使用した近似など、複数のデータ形式と最適化技術もサポートしています。
制限事項
PS-SMARTマルチクラス分類コンポーネントの入力データは、次の要件を満たす必要があります。
宛先列のデータは数値データ型である必要があります。 MaxComputeテーブルのデータ型がSTRINGの場合、データを数値データ型に変換する必要があります。 たとえば、分類オブジェクトがGood/Medium/Badなどの文字列の場合、文字列を0/1/2に変換する必要があります。
データがキー値形式の場合、フィーチャIDは正の整数で、フィーチャ値は実数でなければなりません。 フィーチャIDがSTRING型の場合、シリアル化コンポーネントを使用してデータをシリアル化する必要があります。 特徴値がカテゴリ文字列の場合、特徴の離散化などの特徴エンジニアリングを実行して値を処理する必要があります。
PS-SMARTマルチクラス分類コンポーネントは、数十万の機能関連ジョブをサポートします。 ただし、これらのジョブはリソース集約的で時間がかかります。 この問題を解決するには、トレーニングでGBDTアルゴリズムを使用します。 GBDTアルゴリズムは、連続フィーチャがトレーニングに使用されるシナリオに適しています。 カテゴリフィーチャに対してワンホットなエンコードを実行して、低頻度のフィーチャをフィルタリングできます。 数値データ型の連続フィーチャに対してフィーチャの離散化を実行しないことを推奨します。
PS-SMARTアルゴリズムは、ランダム性を導入し得る。 例えば、ランダム性は、data_sample_ratioおよびfee_sample_ratioに基づくデータおよび特徴のサンプリング、近似のためのヒストグラムを使用することによるPS-SMARTアルゴリズムの最適化、およびローカルスケッチのグローバルスケッチへのマージのシナリオに導入され得る。 ジョブが分散モードで複数のワーカーノードで実行されると、ツリーの構造が異なります。 ただし、モデルのトレーニング効果は理論的には同じです。 トレーニング中に同じデータとパラメーターを使用しても、結果が異なる場合があります。
トレーニングを高速化する場合は、Coresパラメーターをより大きな値に設定できます。 PS-SMARTアルゴリズムは、必要なリソースが提供された後にジョブのトレーニングを開始します。 待機期間は、要求されるリソースの量とともに増加する。
使用上の注意
PS-SMARTマルチクラス分類コンポーネントを使用する場合は、次の項目に注意してください。
PS-SMARTマルチクラス分類コンポーネントは、数十万の機能関連ジョブをサポートします。 ただし、これらのジョブはリソース集約的で時間がかかります。 この問題を解決するには、トレーニングでGBDTアルゴリズムを使用します。 GBDTアルゴリズムは、連続フィーチャがトレーニングに使用されるシナリオに適しています。 カテゴリフィーチャに対してワンホットなエンコードを実行して、低頻度のフィーチャをフィルタリングできます。 数値データ型の連続フィーチャに対してフィーチャの離散化を実行しないことを推奨します。
PS-SMARTアルゴリズムは、ランダム性を導入し得る。 例えば、ランダム性は、data_sample_ratioおよびfee_sample_ratioに基づくデータおよび特徴のサンプリング、近似のためのヒストグラムを使用することによるPS-SMARTアルゴリズムの最適化、およびローカルスケッチのグローバルスケッチへのマージのシナリオに導入され得る。 ジョブが分散モードで複数のワーカーノードで実行されると、ツリーの構造が異なります。 ただし、モデルのトレーニング効果は理論的には同じです。 トレーニング中に同じデータとパラメーターを使用しても、結果が異なる場合があります。
トレーニングを高速化する場合は、Coresパラメーターをより大きな値に設定できます。 PS-SMARTアルゴリズムは、必要なリソースが提供された後にジョブのトレーニングを開始します。 待機期間は、要求されるリソースの量とともに増加する。
コンポーネントの設定
方法1: PAIコンソールでコンポーネントを設定する
Machine Learning Designerのパイプラインページで、PS-SMARTマルチクラス分類コンポーネントを追加します。 次のパラメーターを設定します。
カテゴリ | パラメーター | 説明 |
フィールド設定 | スパース形式の使用 | 入力データがスパース形式かどうかを指定します。 入力データがkey-value形式のスパースデータの場合は、key-valueペアをスペースで区切り、keyとvaluesをコロン (:) で区切ります。 例: 1:0.3 3:0.9 |
フィーチャー列 | 入力テーブルからトレーニング用のフィーチャ列を選択します。 入力テーブルのデータがdense形式の場合、BIGINT型とDOUBLE型の列のみがサポートされます。 入力テーブルのデータがスパース形式のキーと値のペアであり、keysとvaluesが数値データ型の場合、STRING型の列のみがサポートされます。 | |
ラベル列 | 入力テーブルのラベル列。 STRINGデータ型と数値データ型の列がサポートされています。 ただし、列には数値データ型のデータしか格納できません。 例えば、列値は、バイナリ分類で0または1することができる。 | |
重量コラム | サンプルの各行の重みを含む列を選択します。 数値データ型の列がサポートされています。 | |
パラメーター設定 | クラス | マルチクラス分類のクラス数。 パラメーターをnに設定すると、label列の値は {0,1,2,...,n-1} になります。 |
評価インジケータタイプ | このパラメーターは、[Multiclass Negative Log Likelihood] または [Multiclass Classification Error] に設定できます。 | |
木 | 木の数。 値は正の整数である必要があります。 Treesの値は、トレーニング期間に比例します。 | |
最大決定ツリーの深さ | デフォルト値は5で、最大32個のリーフノードを設定できることを示します。 | |
データサンプリング比 | ツリーが構築されたときのデータサンプリング率。 サンプルデータは、トレーニングを高速化する弱学習器を構築するために使用されます。 | |
特徴サンプリング分数 | ツリーが構築されたときの特徴サンプリング比。 サンプルフィーチャを使用して、トレーニングを高速化する弱学習器を構築します。 | |
L1ペナルティ係数 | リーフノードのサイズ。 値が大きいほど、リーフノードの分布がより均一であることを示す。 オーバーフィットが発生した場合は、パラメーター値を増やします。 | |
L2ペナルティ係数 | リーフノードのサイズ。 値が大きいほど、リーフノードの分布がより均一であることを示す。 オーバーフィットが発生した場合は、パラメーター値を増やします。 | |
学習率 | 学習率を入力します。 有効値: (0,1) | |
スケッチベースの近似精度 | スケッチを作成するときに分位数を選択するためのしきい値を入力します。 値が小さいほど、より多くのビンが得られることを示す。 ほとんどの場合、デフォルト値. 03が使用されます。 | |
最小スプリット損失変更 | ノードの分割に必要な最小損失変更を入力します。 値が大きいほど、ノード分割の確率が低いことを示す。 | |
機能 | フィーチャー数または最大フィーチャーIDを入力します。 リソース使用量を評価する場合は、このパラメーターを設定します。 | |
グローバルオフセット | すべてのサンプルの初期予測値を入力します。 | |
ランダムシード | ランダムシードを入力します。 このパラメーターの値は整数でなければなりません。 | |
機能重要性タイプ | フィーチャーのタイプ。 有効な値:
| |
チューニング | コア | コアの数。 デフォルトでは、システムが値を決定します。 |
コアあたりのメモリサイズ (MB) | 各コアのメモリサイズ。 単位:MB。 ほとんどの場合、システムはメモリサイズを決定します。 |
方法2: PAIコマンドを使用してコンポーネントを構成する
PAIコマンドを使用して、PS-SMARTマルチクラス分類コンポーネントを設定します。 SQLスクリプトコンポーネントを使用してPAIコマンドを呼び出すことができます。 詳細については、「SQLスクリプト」をご参照ください。
--Training
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"
--Prediction
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 | 対象 | 非該当 | トレーニング用に入力テーブルから選択されたフィーチャ列。 入力テーブルのデータがdense形式の場合、BIGINT型とDOUBLE型の列のみがサポートされます。 入力テーブルのデータがkey-value形式のスパースデータで、keysとvaluesが数値データ型の場合、STRINGデータ型の列のみがサポートされます。 |
labelColName | 対象 | 非該当 | 入力テーブルのラベル列。 STRING型の列と数値データ型がサポートされています。 ただし、列には数値データ型のデータしか格納できません。 たとえば、列値は、マルチクラス分類では {0,1、2、… 、n-1} になります。 nはクラスの数を示します。 | |
weightCol | 非対象 | 非該当 | サンプルの各行の重みを含む列を選択します。 数値データ型の列がサポートされています。 | |
enableSparse | 非対象 | false | 入力データがスパース形式かどうかを指定します。 有効な値: trueとfalse。 入力データがkey-value形式のスパースデータの場合は、key-valueペアをスペースで区切り、keyとvaluesをコロン (:) で区切ります。 例: 1:0.3 3:0.9 | |
inputTableName | 対象 | 非該当 | 入力テーブルの名前。 | |
modelName | 対象 | 非該当 | 出力モデルの名前。 | |
outputImportanceTableName | 非対象 | 非該当 | フィーチャの重要度を含むテーブルの名前。 | |
inputTablePartitions | 非対象 | 非該当 | トレーニング用に入力テーブルから選択されたパーティション。 形式: ds=1/pt=1 | |
outputTableName | 非対象 | 非該当 | 生成されるMaxComputeテーブル。 このテーブルは、読み取ることができないバイナリファイルであり、PS-SMART予測コンポーネントを使用してのみ取得できます。 | |
ライフサイクル | 非対象 | 3 | 出力テーブルのライフサイクル。 | |
アルゴリズムのパラメーター | classNum | 対象 | 非該当 | マルチクラス分類のクラス数。 このパラメーターをnに設定すると、label列の値は {0,1,2,...,n-1} になります。 |
客観的 | 対象 | 非該当 | 目的関数の型。 トレーニングにマルチクラス分類を使用する場合は、multi:softprob目的関数を指定します。 | |
metric | 非対象 | 非該当 | トレーニングセットの評価メトリックタイプ。logviewのコーディネーターの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ペナルティ係数。 値が大きいほど、リーフノードの分布がより均一であることを示す。 オーバーフィットが発生した場合は、パラメーター値を増やします。 | |
収缩 | 非対象 | 0.3 | 有効値: (0,1) | |
sketchEps | 非対象 | 0.03 | スケッチを作成するときに分位数を選択するためのしきい値。 ビンの数はO(1.0/sketchEps) である。 値が小さいほど、より多くのビンが得られることを示す。 ほとんどの場合、デフォルト値が使用されます。 有効値: (0,1) | |
minSplitLoss | 非対象 | 0 | ノードを分割するために必要な最小損失変更。 値が大きいほど、ノード分割の確率が低いことを示す。 | |
featureNum | 非対象 | 非該当 | フィーチャの数または最大フィーチャID。 リソース使用量を評価する場合は、このパラメーターを設定します。 | |
baseScore | 非対象 | 0.5 | すべてのサンプルの初期予測値。 | |
randSeed | 非対象 | 非該当 | ランダムシード。 このパラメーターの値は整数でなければなりません。 | |
featureImportanceType | 非対象 | ゲイン | フィーチャの重要度のタイプ。 有効な値:
| |
チューニングパラメータ | coreNum | 非対象 | 自動割り当て | コンピューティングで使用されるコアの数。 コンピューティングアルゴリズムの速度は、このパラメータの値とともに増加します。 |
memSizePerCore | 非対象 | 自動割り当て | 各コアのメモリサイズ。 単位:MB。 |
PS-SMARTモデルの展開
PS-SMARTバイナリ分類トレーニングコンポーネントによって生成されたモデルをオンラインサービスとしてEASにデプロイする場合は、PS-SMARTバイナリ分類トレーニングコンポーネントの下流ノードとしてモデルエクスポートコンポーネントを追加し、モデルエクスポートコンポーネントを構成する必要があります。 詳細については、「モデルのエクスポート」をご参照ください。
モデルエクスポートコンポーネントが正常に実行された後、EAS-online Model Servicesページで、生成されたモデルをオンラインサービスとしてEASにデプロイできます。 詳細については、「PAIコンソールでのモデルサービスのデプロイ」をご参照ください。