すべてのプロダクト
Search
ドキュメントセンター

Platform For AI:PS-SMART回帰

最終更新日:Jul 22, 2024

パラメータサーバ (PS) は、多数のオフラインおよびオンラインのトレーニングタスクを処理するために使用される。 SMARTは、スケーラブルな重加法回帰木の略です。 PS-SMARTは、PSベースの勾配ブースティング決定木 (GBDT) を使用することによって実装される反復アルゴリズムである。 PS-SMARTバイナリ分類トレーニングコンポーネントは、数百億のサンプルと数十万の機能のトレーニングタスクをサポートします。 何千ものノードでトレーニングタスクを実行できます。 このコンポーネントは、複数のデータ形式と、ヒストグラムベースの近似などの最適化技術もサポートしています。

制限事項

PS-SMART回帰コンポーネントの入力データは、次の要件を満たす必要があります。

  • PS-SMART回帰コンポーネントで使用できるのは、数値データ型の列のみです。 MaxComputeテーブルのデータ型がSTRINGの場合、まずデータ型を変換する必要があります。

  • データがkey-value形式の場合、フィーチャ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アルゴリズムは、必要なリソースが提供された後にトレーニングタスクを開始します。 したがって、より多くのリソースが要求されるほど、より長く待つ必要があります。

コンポーネントの設定

次のいずれかの方法を使用して、PS-SMART回帰コンポーネントを設定できます。

方法1: Platform for AI (PAI) コンソールでコンポーネントを構成する

Machine Learning Designerでコンポーネントパラメーターを設定します。 下表に、各パラメーターを説明します。

タブ

パラメーター

説明

フィールド設定

スパース形式の使用

入力データがスパース形式かどうかを指定します。 スパース形式のデータがキーと値のペアを使用して表示される場合は、キーと値のペアをスペースで区切り、キーをコロン (:) で区切ります。 例: 1:0.3 3:0.9

フィーチャー列

入力テーブルからトレーニング用のフィーチャ列を選択します。 入力テーブルのデータがdense形式の場合、BIGINT型とDOUBLE型の列のみがサポートされます。 入力テーブルのデータがキーと値のペアを使用して表示されるスパース形式であり、keysvaluesが数値データ型の場合、STRING型の列のみがサポートされます。

ラベル列

入力テーブルからラベル列を選択します。 STRING型の列と数値データ型がサポートされています。 ただし、列には数値データ型のデータしか格納できません。 例えば、列値は、バイナリ分類で0または1することができる。

重量コラム

サンプルの各行の重みを含む列を選択します。 数値データ型の列がサポートされています。

パラメーター設定

目的関数タイプ

有効な値:

  • 線形回帰 (デフォルト)

  • ロジスティック回帰

  • ポアソン回帰

  • ガンマ回帰

  • トゥイーディー回帰

Tweedie分布指数

Tweedie分布の分散と平均値との関係の指数。 このパラメーターは、目的関数型パラメーターをTweedie Regressionに設定した場合にのみサポートされます。

評価インジケータタイプ

有効な値:

  • 根付き平均二乗誤差

  • 平均絶対エラー

  • ロジスティック回帰の負の対数尤度

  • ポアソン回帰の負の対数

  • ガンマ回帰の残留偏差

  • ガンマ回帰の負の対数尤度

  • Tweedie回帰の負の対数尤度

  • なし

ツリーの数を入力します。 このパラメーターの値は整数でなければなりません。 ツリー数は、トレーニング時間の量に比例する。

最大ツリー深さ

デフォルト値は5で、最大32個のリーフノードを設定できることを指定します。

データサンプリング分画

ツリー構築時のデータサンプリング比を入力します。 サンプルデータは、トレーニングを高速化する弱学習器を構築するために使用されます。

特徴サンプリング分数

ツリーが構築されるときのフィーチャサンプリング比を入力します。 サンプルフィーチャを使用して、トレーニングを高速化する弱学習器を構築します。

L1ペナルティ係数

リーフノードのサイズを制御します。 より大きな値は、リーフノードのより均一な分布をもたらす。 オーバーフィットが発生した場合は、パラメーター値を増やします。

L2ペナルティ係数

リーフノードのサイズを制御します。 より大きな値は、リーフノードのより均一な分布をもたらす。 オーバーフィットが発生した場合は、パラメーター値を増やします。

学習率

学習率を入力します。 有効値: (0,1)

スケッチベースの近似精度

スケッチを作成するときに分位数を選択するためのしきい値を入力します。 値が小さいほど、より多くのビンを得ることができる。 ほとんどの場合、デフォルト値. 03が使用されます。

最小スプリット損失変更

ノードの分割に必要な最小損失変更を入力します。 値が大きいほど、ノード分割が発生する可能性が低いことを指定します。

機能

フィーチャー数または最大フィーチャーIDを入力します。 このパラメーターがリソース使用量の見積もりに指定されていない場合、システムは自動的にSQLタスクを実行して、機能の数または最大機能IDを計算します。

グローバルオフセット

すべてのサンプルの初期予測値を入力します。

ランダムシード

ランダムシードを入力します。 このパラメーターの値は整数でなければなりません。

機能重要性タイプ

有効な値:

  • Weight: フィーチャーの分割数を示します。

  • ゲイン: フィーチャによって提供される情報ゲインを示します。 デフォルト値です。

  • Cover: 分割ノードのフィーチャーでカバーされるサンプル数を示します。

チューニング

コア

コアの数を選択します。 デフォルトでは、システムが値を決定します。

コアあたりのメモリサイズ

各コアのメモリサイズを選択します。 単位:MB。 ほとんどの場合、システムはメモリサイズを決定します。

方法2: PAIコマンドを使用してコンポーネントを構成する

PAIコマンドを使用してコンポーネントパラメータを設定します。 次のセクションでは、パラメーターについて説明します。 SQLスクリプトコンポーネントを使用してPAIコマンドを呼び出すことができます。 詳細については、「SQLスクリプト」をご参照ください。

# Training 
PAI -name ps_smart
    -project algo_public
    -DinputTableName="smart_regression_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="reg:linear"
    -Dmetric="rmse"
    -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_regression_input";
    -DmodelName="xlab_m_pai_ps_smart_bi_545859_v0"
    -DoutputTableName="pai_temp_24515_545860_1"
    -DfeatureColNames="features"
    -DappendColNames="label,features"
    -DenableSparse="true"
    -Dlifecycle="28"

モジュール

パラメーター

必須

説明

デフォルト値

データパラメーター

featureColNames

トレーニング用に入力テーブルから選択されたフィーチャ列。 入力テーブルのデータがdense形式の場合、BIGINTおよびDOUBLEデータ型の列のみがサポートされます。 入力テーブルのデータがキーと値のペアを使用して表示されるスパース形式であり、keysvaluesが数値データ型の場合、STRINGデータ型の列のみがサポートされます。

デフォルト値なし

labelColName

入力テーブルのラベル列。 STRING型の列と数値データ型がサポートされています。 ただし、列には数値データ型のデータしか格納できません。 例えば、列値は、バイナリ分類で0または1することができる。

デフォルト値なし

weightCol

不可

サンプルの各行の重みを含む列。 数値データ型の列がサポートされています。

デフォルト値なし

enableSparse

不可

入力データがスパース形式かどうかを指定します。 有効な値: trueとfalse。 入力データがスパース形式かどうかを指定します。 スパース形式のデータがキーと値のペアを使用して表示される場合は、キーと値のペアをスペースで区切り、キーをコロン (:) で区切ります。 例: 1:0.3 3:0.9

false

inputTableName

入力テーブルの名前。

デフォルト値なし

modelName

出力モデルの名前。

デフォルト値なし

outputImportanceTableName

不可

機能の重要性を提供するテーブルの名前。

デフォルト値なし

inputTablePartitions

不可

トレーニング用に入力テーブルから選択されたパーティション。 形式: ds=1/pt=1

デフォルト値なし

outputTableName

不可

MaxComputeにエクスポートされるテーブルの名前。 テーブル名はバイナリ形式でなければなりません。

デフォルト値なし

ライフサイクル

不可

出力テーブルのライフサイクル。 単位:日

3

アルゴリズムのパラメーター

客観的

目的関数の型。 有効な値:

  • reg: リニア: リニア回帰

  • reg:logistic: ロジスティック回帰

  • count:poisson: ポアソン回帰

  • reg: ガンマ: ガンマ回帰

  • reg:tweedie: Tweedie Regression

reg: リニア

metric

不可

トレーニングセットの評価メトリックのタイプ。logviewのコーディネーターのstdoutに含まれています。 有効な値:

  • rmse: Machine Learning Platform for AIコンソールの評価インデックスタイプパラメーターのルート平均二乗誤差値。

  • mae: Machine Learning Platform for AIコンソールの評価インデックスタイプパラメーターの平均絶対誤差値。

  • logistic-nloglik: Machine Learning Platform for AIコンソールの評価インデックスタイプパラメーターのロジスティック回帰の負の対数尤度値。

  • poisson-nloglik: AIコンソール用機械学習プラットフォームの評価インデックスタイプパラメーターのポアソン回帰の負対数尤度値。

  • gamma-deviance: Machine Learning Platform for AIコンソールの評価インデックスタイプパラメーターのガンマ回帰の残留偏差値。

  • gamma-nloglik: Machine Learning Platform for AIコンソールの評価インデックスタイプパラメーターの [ガンマ回帰の負の対数尤度] 値。

  • tweedie-nloglik: Machine Learning Platform for AIコンソールの [評価インデックスタイプ] パラメーターの [Tweedie回帰の負の対数尤度] の値。

デフォルト値なし

treeCount

不可

木の数。 値はトレーニング時間に比例します。

1

maxDepth

不可

ツリーの最大深さ。 有効な値: 1 ~ 20。

5

sampleRatio

不可

データサンプリング比。 値の範囲: (0,1) このパラメーターが1.0に設定されている場合、サンプリングは実行されません。

1.0

featureRatio

不可

特徴サンプリング比。 値の範囲: (0,1) このパラメーターが1.0に設定されている場合、データはサンプリングされません。

1.0

l1

不可

L1ペナルティ係数。 このパラメータの値が大きいほど、リーフノードの分布がより均一になります。 オーバーフィットが発生した場合は、パラメーター値を増やします。

0

l2

不可

L2ペナルティ係数。 このパラメータの値が大きいほど、リーフノードの分布がより均一になります。 オーバーフィットが発生した場合は、パラメーター値を増やします。

1.0

収缩

不可

学習率。 値の範囲: (0,1)

0.3

sketchEps

不可

スケッチを作成するときに分位数を選択するためのしきい値。 ビンの数はO(1.0/sketchEps) である。 値が小さいほど、より多くのビンを得ることができる。 ほとんどの場合、デフォルト値が使用されます。 値の範囲: (0,1)

0.03

minSplitLoss

不可

ノードの分割に必要な最小損失変更を入力します。 値が大きいほど、ノード分割が発生する可能性が低いことを指定します。

0

featureNum

不可

フィーチャの数または最大フィーチャID。 このパラメーターがリソース使用量の見積もりに指定されていない場合、システムは自動的にSQLタスクを実行して、機能の数または最大機能IDを計算します。

デフォルト値なし

baseScore

不可

すべてのサンプルの初期予測値。

0.5

randSeed

不可

ランダムシード。 このパラメーターの値は整数でなければなりません。

デフォルト値なし

featureImportanceType

不可

フィーチャの重要度タイプ。 有効な値:

  • weight: フィーチャーの分割数を示します。

  • gain: 機能によって提供される情報ゲインを示します。

  • cover: 分割ノードのフィーチャーでカバーされるサンプル数を示します。

ゲイン

tweedieVarPower

不可

Tweedie分布の分散と平均値との関係の指数。

1.5

チューニングパラメータ

coreNum

不可

コンピューティングアルゴリズムによって使用されるコアの数。 値が大きいほど、計算アルゴリズムの実行が速くなります。

システムによって指定される

memSizePerCore

不可

各コアのメモリサイズ。 単位:MB。

システムによって指定される

例:

  1. 次のSQL文を実行して、ODPS SQLノードで入力データを生成します。 この例では、キー − 値ペアの入力データが生成される。

    drop table if exists smart_regression_input;
    create table smart_regression_input as
    select
    *
    from
    (
    select 2.0 as label, '1:0.55 2:-0.15 3:0.82 4:-0.99 5:0.17' as features
        union all
    select 1.0 as label, '1:-1.26 2:1.36 3:-0.13 4:-2.82 5:-0.41' as features
        union all
    select 1.0 as label, '1:-0.77 2:0.91 3:-0.23 4:-4.46 5:0.91' as features
        union all
    select 2.0 as label, '1:0.86 2:-0.22 3:-0.46 4:0.08 5:-0.60' as features
        union all
    select 1.0 as label, '1:-0.76 2:0.89 3:1.02 4:-0.78 5:-0.86' as features
        union all
    select 1.0 as label, '1:2.22 2:-0.46 3:0.49 4:0.31 5:-1.84' as features
        union all
    select 0.0 as label, '1:-1.21 2:0.09 3:0.23 4:2.04 5:0.30' as features
        union all
    select 1.0 as label, '1:2.17 2:-0.45 3:-1.22 4:-0.48 5:-1.41' as features
        union all
    select 0.0 as label, '1:-0.40 2:0.63 3:0.56 4:0.74 5:-1.44' as features
        union all
    select 1.0 as label, '1:0.17 2:0.49 3:-1.50 4:-2.20 5:-0.35' as features
    ) tmp;

    生成されたトレーニングデータを次の図に示します。image

  2. 次の図に示すパイプラインを作成し、コンポーネントを実行します。 詳細については、「アルゴリズムモデリング」をご参照ください。image

    1. Machine Learning Designerの左側のコンポーネントリストで、[Read Table] 、[Regression] 、[Prediction] 、[Write Table] の各コンポーネントを個別に検索し、右側のキャンバスにPS-SMARTします。

    2. コンポーネントパラメーターを設定します。

      • キャンバスで、[Read Table-1] コンポーネントをクリックします。 右側のウィンドウの [テーブルの選択] タブで、[テーブル名] をsmart_regression_inputに設定します。

      • キャンバスで、PS-SMART回帰-1コンポーネントをクリックし、右側のウィンドウでパラメーターを設定します。 下表に、各パラメーターを説明します。 表に記載されていないパラメーターのデフォルト値を保持します。

        タブ

        パラメーター

        説明

        フィールド設定

        スパース形式の使用

        [スパース形式の使用] を選択します。

        フィーチャー列

        [features] 列を選択します。

        ラベル列

        label列を選択します。

        パラメーター設定

        目的関数タイプ

        パラメーターを線形回帰に設定します。

        評価インジケータタイプ

        パラメーターを [根付き平均二乗誤差] に設定します。

        パラメーターを5に設定します。

      • キャンバスで、[予測-1] コンポーネントをクリックし、パラメーターを設定します。 下表に、各パラメーターを説明します。 表に記載されていないパラメーターのデフォルト値を保持します。

        タブ

        パラメーター

        説明

        フィールド設定

        フィーチャー列

        デフォルトでは、入力テーブルのすべての列が選択されます。 特定の列をトレーニングに使用することはできません。 これらの列は予測結果に影響を与えません。

        予約済み列

        label列を選択します。

        スパース行列

        [スパースマトリックス] を選択します。

        KVデリミタ

        このパラメーターをコロン (:) に設定します。

        KVペア区切り文字

        このパラメーターをスペースに設定します。

      • キャンバスで、Write Table-1コンポーネントをクリックします。 右側のウィンドウの [テーブルの選択] タブで、[新しいテーブル名] をsmart_regression_outputに設定します。

    3. パラメーターの設定が完了したら、ボタンをクリックしimageてパイプラインを実行します。

  3. [予測-1] コンポーネントを右クリックし、[データの表示] > [予測結果出力ポート] を選択して予測結果を表示します。image

  4. [PS-SMART回帰-1] コンポーネントを右クリックし、[データの表示] > [出力フィーチャ重要度テーブル] を選択してフィーチャ重要度テーブルを表示します。 image

    id: 渡されたフィーチャのID。 この例では、入力データはkey-value形式です。 id列の値は、キーと値のペアのキーを示します。 特徴重要度テーブルは、2つの特徴のみを有する。 これは、これら2つの特徴のみがツリーの分割で使用されることを示す。 他の特徴の特徴重要度は0と考えることができる。 value: フィーチャの重要度タイプ。 このパラメーターのデフォルト値はgainです。これは、モデルのフィーチャによって提供される情報ゲインの合計を示します。

PS-SMARTモデルの展開

PS-SMARTバイナリ分類トレーニングコンポーネントによって生成されたモデルをオンラインサービスとしてEASにデプロイする場合は、PS-SMARTバイナリ分類トレーニングコンポーネントの下流ノードとしてモデルエクスポートコンポーネントを追加し、モデルエクスポートコンポーネントを構成する必要があります。 詳細については、「モデルのエクスポート」をご参照ください。

モデルエクスポートコンポーネントが正常に実行された後、EAS-online Model Servicesページで、生成されたモデルをオンラインサービスとしてEASにデプロイできます。 詳細については、「PAIコンソールでのモデルサービスのデプロイ」をご参照ください。

関連ドキュメント