Amazon SageMaker 組み込みの表形式アルゴリズム LightGBM、CatBoost、TabTransformer、および AutoGluon-Tabular PlatoBlockchain Data Intelligence を使用したチャーン予測。 垂直検索。 あい。

Amazon SageMaker 組み込みの表形式アルゴリズムを使用したチャーン予測 LightGBM、CatBoost、TabTransformer、および AutoGluon-Tabular

アマゾンセージメーカー のスイートを提供します 組み込みアルゴリズム, 事前トレーニング済みモデル, 構築済みのソリューションテンプレート データ サイエンティストと機械学習 (ML) の実践者が、ML モデルのトレーニングとデプロイを迅速に開始できるようにします。 これらのアルゴリズムとモデルは、教師あり学習と教師なし学習の両方に使用できます。 表形式、画像、テキストなど、さまざまな種類の入力データを処理できます。

顧客離れは、電気通信から銀行に至るまで、さまざまな企業が直面する問題であり、通常、顧客は競合他社に奪われます。 通常、新規顧客を獲得するにはかなりの費用がかかるため、新規顧客を獲得するよりも、既存の顧客を維持することが企業にとって最善の利益となります。 携帯電話事業者には、顧客がサービスを継続して使用したり、最終的に解約したりした過去の記録があります。 携帯電話会社のチャーンに関するこの履歴情報を使用して、ML モデルをトレーニングできます。 このモデルをトレーニングした後、任意の顧客のプロファイル情報 (モデルのトレーニングに使用したのと同じプロファイル情報) をモデルに渡し、この顧客が解約するかどうかを予測させることができます。

この投稿では、トレーニングとデプロイを行います 最近リリースされた XNUMX つの SageMaker アルゴリズム—LightGBM、CatBoost、TabTransformer、および AutoGluon-Tabular —チャーン予測データセット。 を使用しております SageMaker自動モデルチューニング (ハイパーパラメータ最適化ツール) を使用して各モデルに最適なハイパーパラメータを見つけ、ホールドアウト テスト データセットでそれらのパフォーマンスを比較して最適なものを選択します。

このソリューションをテンプレートとして使用して、最先端の表形式アルゴリズムのコレクションを検索し、ハイパーパラメーター最適化を使用して全体的に最適なモデルを見つけることもできます。 関心のある実際のビジネス上の問題を解決するために、サンプル データセットを独自のデータセットに簡単に置き換えることができます。この投稿で説明する SageMaker SDK コードに直接ジャンプしたい場合は、以下を参照できます。 Jupyterノートブックのサンプル.

SageMakerの組み込みアルゴリズムの利点

特定のタイプの問題とデータのアルゴリズムを選択する場合、SageMakerの組み込みアルゴリズムを使用するのが最も簡単なオプションです。これには、次の主な利点があります。

  • 低コーディング – 組み込みアルゴリズムは、実験の実行を開始するためにコーディングをほとんど必要としません。 提供する必要がある唯一の入力は、データ、ハイパーパラメーター、およびコンピューティング リソースです。 これにより、結果とコードの変更を追跡するためのオーバーヘッドが少なくなり、実験をより迅速に実行できます。
  • 効率的でスケーラブルなアルゴリズムの実装 – 組み込みのアルゴリズムには、複数の計算インスタンスにわたる並列化が付属しており、適用可能なすべてのアルゴリズムに対してすぐに GPU をサポートします。 モデルのトレーニングに使用するデータが大量にある場合、ほとんどの組み込みアルゴリズムは需要に合わせて簡単に拡張できます。 事前トレーニング済みのモデルが既にある場合でも、移植してトレーニング スクリプトを自分で作成するよりも、SageMaker でその結果を使用して、既に知っているハイパーパラメーターを入力する方が簡単な場合があります。
  • 透明性 – 結果のモデル アーティファクトの所有者です。 そのモデルを取得して、いくつかの異なる推論パターンのために SageMaker にデプロイできます (すべての 利用可能な展開タイプ)そして簡単なエンドポイントのスケーリングと管理、または必要な場所にデプロイできます。

データの視覚化と前処理

まず、顧客離れのデータセットを収集します。 これは 5,000 レコードの比較的小さなデータセットで、各レコードは 21 の属性を使用して、不明な米国の携帯電話会社の顧客のプロファイルを記述しています。 属性の範囲は、顧客が居住する米国の州から、顧客サービスへの電話の回数、日中の通話に対して請求されるコストにまで及びます。 顧客が解約するかどうかを予測しようとしていますが、これは二項分類の問題です。 以下は、これらの機能のサブセットで、ラベルが最後の列に表示されています。

以下は、各列のいくつかの洞察です。具体的には、選択した機能の要約統計とヒストグラムです。

Amazon SageMaker 組み込みの表形式アルゴリズム LightGBM、CatBoost、TabTransformer、および AutoGluon-Tabular PlatoBlockchain Data Intelligence を使用したチャーン予測。 垂直検索。 あい。

次に、データを前処理し、トレーニング、検証、およびテスト セットに分割し、データをアップロードします。 Amazon シンプル ストレージ サービス (Amazon S3)。

表形式アルゴリズムの自動モデル調整

ハイパーパラメータは、基礎となるアルゴリズムがどのように動作し、モデルのパフォーマンスに影響を与えるかを制御します。 これらのハイパーパラメーターは、ニューラル ネットワーク ベースのモデルのレイヤー数、学習率、重み減衰率、およびドロップアウト、またはツリー アンサンブル モデルのリーフ数、反復、および最大ツリー深度になります。 最適なモデルを選択するために、トレーニング済みの XNUMX つの SageMaker 表形式アルゴリズムのそれぞれに SageMaker 自動モデル調整を適用します。 調整するハイパーパラメーターと、探索する各パラメーターの範囲を選択するだけです。 自動モデル調整の詳細については、次を参照してください。 Amazon SageMaker自動モデル調整:機械学習に機械学習を使用する or Amazon SageMaker 自動モデル調整: スケーラブルな勾配のない最適化.

これが実際にどのように機能するか見てみましょう。

ライトGBM

まず、LightGBM で自動モデル チューニングを実行し、そのプロセスを他のアルゴリズムに適応させます。 投稿で説明されているように AmazonSageMakerJumpStartモデルとアルゴリズムがAPI経由で利用可能になりました、SageMaker SDK を介して事前に構築されたアルゴリズムをトレーニングするには、次のアーティファクトが必要です。

  • トレーニングと推論に必要なすべての依存関係を含む、フレームワーク固有のコンテナー イメージ
  • 選択したモデルまたはアルゴリズムのトレーニング スクリプトと推論スクリプト

最初にこれらのアーティファクトを取得します。 model_id (lightgbm-classification-model この場合) とバージョン:

from sagemaker import image_uris, model_uris, script_uris
train_model_id, train_model_version, train_scope = "lightgbm-classification-model", "*", "training"
training_instance_type = "ml.m5.4xlarge"

# Retrieve the docker image
train_image_uri = image_uris.retrieve(region=None,
                                      framework=None,
                                      model_id=train_model_id,
                                      model_version=train_model_version,
                                      image_scope=train_scope,
                                      instance_type=training_instance_type,
                                      )                                      
# Retrieve the training script
train_source_uri = script_uris.retrieve(model_id=train_model_id,
                                        model_version=train_model_version,
                                        script_scope=train_scope
                                        )
# Retrieve the pre-trained model tarball (in the case of tabular modeling, it is a dummy file)
train_model_uri = model_uris.retrieve(model_id=train_model_id,
                                      model_version=train_model_version,
                                      model_scope=train_scope)

次に、LightGBM のデフォルトのハイパーパラメータを取得し、その一部を検証データのブースト ラウンド数や評価メトリックなどの選択した固定値に設定し、その他を検索する値の範囲を定義します。 SageMaker パラメータを使用します ContinuousParameter & IntegerParameter このため:

from sagemaker import hyperparameters
from sagemaker.tuner import ContinuousParameter, IntegerParameter, HyperparameterTuner

# Retrieve the default hyper-parameters for fine-tuning the model
hyperparameters = hyperparameters.retrieve_default(model_id=train_model_id,
                                                   model_version=train_model_version
                                                   )
# [Optional] Override default hyperparameters with custom values
hyperparameters["num_boost_round"] = "500"
hyperparameters["metric"] = "auc"

# Define search ranges for other hyperparameters
hyperparameter_ranges_lgb = {
    "learning_rate": ContinuousParameter(1e-4, 1, scaling_type="Logarithmic"),
    "num_boost_round": IntegerParameter(2, 30),
    "num_leaves": IntegerParameter(10, 50),
    "feature_fraction": ContinuousParameter(0, 1),
    "bagging_fraction": ContinuousParameter(0, 1),
    "bagging_freq": IntegerParameter(1, 10),
    "max_depth": IntegerParameter(5, 30),
    "min_data_in_leaf": IntegerParameter(5, 50),
}

最後に、 SageMaker エスティメーター、それを ハイパーパラメータチューナーで、ハイパーパラメータ調整ジョブを開始します tuner.fit():

from sagemaker.estimator import Estimator
from sagemaker.tuner import HyperParameterTuner

# Create SageMaker Estimator instance
tabular_estimator = Estimator(
    role=aws_role,
    image_uri=train_image_uri,
    source_dir=train_source_uri,
    model_uri=train_model_uri,
    entry_point="transfer_learning.py",
    instance_count=1,
    instance_type=training_instance_type,
    max_run=360000,
    hyperparameters=hyperparameters,
)

tuner = HyperparameterTuner(
            tabular_estimator,
            "auc",
            hyperparameter_ranges_lgb,
            [{"Name": "auc", "Regex": "auc: ([0-9.]+)"}],
            max_jobs=10,
            max_parallel_jobs=5,
            objective_type="Maximize",
            base_tuning_job_name="some_name",
        )

tuner.fit({"training": training_dataset_s3_path}, logs=True)

  max_jobs パラメーターは、自動モデル チューニング ジョブで実行される合計ジョブ数を定義します。 max_parallel_jobs 同時に開始するトレーニング ジョブの数を定義します。 また、目標を次のように定義します。 “Maximize” モデルの AUC (曲線下の面積)。 によって公開される利用可能なパラメーターをさらに深く掘り下げるには HyperParameterTuner、 参照する ハイパーパラメータチューナー.

チェックアウトします サンプルノート テスト セットでこのモデルを展開して評価する方法を確認します。

キャットブースト

CatBoost アルゴリズムでのハイパーパラメータ調整のプロセスは以前と同じですが、ID でモデル アーティファクトを取得する必要があります。 catboost-classification-model ハイパーパラメータの範囲選択を変更します。

from sagemaker import hyperparameters

# Retrieve the default hyper-parameters for fine-tuning the model
hyperparameters = hyperparameters.retrieve_default(
    model_id=train_model_id, model_version=train_model_version
)
# [Optional] Override default hyperparameters with custom values
hyperparameters["iterations"] = "500"
hyperparameters["eval_metric"] = "AUC"

# Define search ranges for other hyperparameters
hyperparameter_ranges_cat = {
    "learning_rate": ContinuousParameter(0.00001, 0.1, scaling_type="Logarithmic"),
    "iterations": IntegerParameter(50, 1000),
    "depth": IntegerParameter(1, 10),
    "l2_leaf_reg": IntegerParameter(1, 10),
    "random_strength": ContinuousParameter(0.01, 10, scaling_type="Logarithmic"),
}

タブトランスフォーマー

TabTransformer モデルでのハイパーパラメーター調整のプロセスは以前と同じですが、ID でモデル アーティファクトを取得する必要があります。 pytorch-tabtransformerclassification-model ハイパーパラメータの範囲選択を変更します。

トレーニングも変えます instance_type 〜へ ml.p3.2xlarge. TabTransformer は、Amazon の研究から最近派生したモデルで、Transformer モデルを使用して表形式のデータにディープ ラーニングの力をもたらします。 このモデルを効率的にトレーニングするには、GPU を利用したインスタンスが必要です。 詳細については、次を参照してください。 テーブル内のデータに深層学習の力をもたらす.

from sagemaker import hyperparameters
from sagemaker.tuner import CategoricalParameter

# Retrieve the default hyper-parameters for fine-tuning the model
hyperparameters = hyperparameters.retrieve_default(
    model_id=train_model_id, model_version=train_model_version
)
# [Optional] Override default hyperparameters with custom values
hyperparameters["n_epochs"] = 40  # The same hyperparameter is named as "iterations" for CatBoost
hyperparameters["patience"] = 10

# Define search ranges for other hyperparameters
hyperparameter_ranges_tab = {
    "learning_rate": ContinuousParameter(0.001, 0.01, scaling_type="Auto"),
    "batch_size": CategoricalParameter([64, 128, 256, 512]),
    "attn_dropout": ContinuousParameter(0.0, 0.8, scaling_type="Auto"),
    "mlp_dropout": ContinuousParameter(0.0, 0.8, scaling_type="Auto"),
    "input_dim": CategoricalParameter(["16", "32", "64", "128", "256"]),
    "frac_shared_embed": ContinuousParameter(0.0, 0.5, scaling_type="Auto"),
}

AutoGluon-表形式

AutoGluon の場合、ハイパーパラメータ チューニングは実行しません。 これは仕様によるものです。AutoGluon は、適切なハイパーパラメーターの選択を使用して複数のモデルをアンサンブルし、それらを複数のレイヤーにスタックすることに重点を置いているためです。 これは、ハイパーパラメータを完璧に選択して XNUMX つのモデルをトレーニングするよりもパフォーマンスが高く、計算コストも低くなります。 詳しくはこちら AutoGluon-Tabular: 構造化データのための堅牢で正確な AutoML.

したがって、 model_id 〜へ autogluon-classification-ensemble、評価メトリクス ハイパーパラメータのみを目的の AUC スコアに修正します。

from sagemaker import hyperparameters

# Retrieve the default hyper-parameters for fine-tuning the model
hyperparameters = hyperparameters.retrieve_default(
    model_id=train_model_id, model_version=train_model_version
)

hyperparameters["eval_metric"] = "roc_auc"

呼び出す代わりに tuner.fit()、私たちは estimator.fit() 単一のトレーニング ジョブを開始します。

トレーニング済みモデルのベンチマーク

1 つのモデルすべてをデプロイした後、予測のために各エンドポイントに完全なテスト セットを送信し、それぞれの精度、FXNUMX、および AUC メトリックを計算します ( サンプルノート)。 次の表に結果を示しますが、重要な免責事項があります。これらのモデル間の結果と相対的なパフォーマンスは、トレーニングに使用するデータセットによって異なります。 これらの結果は代表的なものであり、特定のアルゴリズムのパフォーマンスが向上する傾向は関連する要因に基づいていますが (たとえば、AutoGluon は LightGBM と CatBoost モデルの両方の予測を舞台裏でインテリジェントにアンサンブルします)、パフォーマンスのバランスは異なる場合に変わる可能性があります。データ配布。

. 自動モデル調整による LightGBM 自動モデル調整による CatBoost 自動モデル調整を備えた TabTransformer AutoGluon-表形式
正確さ 0.8977 0.9622 0.9511 0.98
F1 0.8986 0.9624 0.9517 0.98
AUC 0.9629 0.9907 0.989 0.9979

まとめ

この投稿では、XNUMX つの異なる SageMaker 組み込みアルゴリズムをトレーニングして、少ないコーディング労力で顧客離れ予測の問題を解決しました。 SageMaker の自動モデル調整を使用して、これらのアルゴリズムをトレーニングするのに最適なハイパーパラメータを見つけ、選択したチャーン予測データセットでパフォーマンスを比較しました。 関連するものを使用できます サンプルノート テンプレートとして、データセットを独自のものに置き換えて、目的の表形式のデータベースの問題を解決します。

これらのアルゴリズムを SageMaker で試してください。また、SageMaker で利用可能な他の組み込みアルゴリズムの使用方法に関するサンプル ノートブックを確認してください。 GitHubの.


著者について

Amazon SageMaker 組み込みの表形式アルゴリズム LightGBM、CatBoost、TabTransformer、および AutoGluon-Tabular PlatoBlockchain Data Intelligence を使用したチャーン予測。 垂直検索。 あい。XinHuang博士 は、AmazonSageMakerJumpStartおよびAmazonSageMakerの組み込みアルゴリズムの応用科学者です。 彼はスケーラブルな機械学習アルゴリズムの開発に焦点を当てています。 彼の研究対象は、自然言語処理、表形式データに関する説明可能な深層学習、および非パラメトリック時空間クラスタリングの堅牢な分析の分野です。 彼は、ACL、ICDM、KDD会議、およびRoyal Statistics Society:SeriesAジャーナルに多くの論文を発表しています。

Amazon SageMaker 組み込みの表形式アルゴリズム LightGBM、CatBoost、TabTransformer、および AutoGluon-Tabular PlatoBlockchain Data Intelligence を使用したチャーン予測。 垂直検索。 あい。ジョアンモウラ アマゾンウェブサービスのAI/MLスペシャリストソリューションアーキテクトです。 彼は主にNLPのユースケースに焦点を当てており、顧客がディープラーニングモデルのトレーニングと展開を最適化するのを支援しています。 彼はまた、ローコードMLソリューションとML専用ハードウェアの積極的な支持者でもあります。

タイムスタンプ:

より多くの AWS機械学習