LightGBM - Amazon SageMaker

LightGBM

LightGBMは、勾配増強デシジョンツリー (GBDT) アルゴリズムの一般的で効率的なオープンソース実装です。GBDT は、より単純で弱いモデルのセットから得られた推定のアンサンブルを組み合わせることで、ターゲット変数の正確な予測を試みる、教師あり学習アルゴリズムです。LightGBMは、従来のGBDTの効率とスケーラビリティを大幅に向上させるために、追加の技術を使用しています。

を使用する方法 SageMaker LightGBM

LightGBM をアマゾンとして使える SageMaker 組み込みアルゴリズム。以下のセクションでは、LightGBM でを使用する方法について説明します。 SageMaker SDK Python アマゾンのLightGBMの使用方法の詳細については SageMaker スタジオ UI、を参照してくださいSageMaker JumpStart

  • 組み込みのアルゴリズムとして LightGBM を使用するする

    次のサンプルコードに示すように、LightGBM 組み込みアルゴリズムを使用して、LightGBM トレーニングコンテナを作成します。LightGBM 組み込みアルゴリズムの画像 URI は、 SageMaker image_uris.retrieveAPI (またはget_image_uriAPI を使用する場合の APIアマゾン SageMaker SDK Pythonバージョン 2).

    LightGBM イメージ URI を指定したら、LightGBM コンテナを使用して、 SageMaker API を推定、トレーニングジョブを開始します。LightGBM の組み込みアルゴリズムはスクリプトモードで実行されますが、トレーニングスクリプトは用意されているので、置き換える必要はありません。スクリプトモードを使用して作成した経験が豊富な場合 SageMaker トレーニングジョブなら、独自のLightGBMトレーニングスクリプトを組み込むことができます。

    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.xlarge" # 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 ) train_model_uri = model_uris.retrieve( model_id=train_model_id, model_version=train_model_version, model_scope=train_scope ) # Sample training data is available in this bucket training_data_bucket = f"jumpstart-cache-prod-{aws_region}" training_data_prefix = "training-datasets/tabular_multiclass/" training_dataset_s3_path = f"s3://{training_data_bucket}/{training_data_prefix}" output_bucket = sess.default_bucket() output_prefix = "jumpstart-example-tabular-training" s3_output_location = f"s3://{output_bucket}/{output_prefix}/output" from sagemaker import hyperparameters # Retrieve the default hyper-parameters for training 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" print(hyperparameters) from sagemaker.estimator import Estimator from sagemaker.utils import name_from_base training_job_name = name_from_base(f"built-in-algo-{train_model_id}-training") # 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, output_path=s3_output_location ) # Launch a SageMaker Training job by passing the S3 path of the training data tabular_estimator.fit( {"training": training_dataset_s3_path}, logs=True, job_name=training_job_name )

    組み込みのアルゴリズムとして LightGBM を設定する方法の詳細については、以下のノートブックのサンプルを参照してください。

LightGBM アルゴリズムの入出力インターフェイス

勾配ブースティングは表形式のデータで動作し、行が観測値、1 つの列がターゲット変数またはラベル、残りの列が特徴を表します。

- SageMaker LightGBM の実装では、トレーニングと推論に CSV が対応しています。

  • にとってトレーニング ContentType、有効な入力はテキスト/csv

  • にとって推論 ContentType、有効な入力はテキスト/csv

注記

CSV トレーニングの場合、アルゴリズムはターゲット変数が最初の列にあり、CSV にはヘッダーレコードがないと見なします。

CSV 推論の場合、アルゴリズムは CSV 入力にラベル列がないと見なします。

LightGBM モデルへの入力用にトレーニングデータをフォーマットする方法に注意してください。トレーニングとオプションの検証データ用のサブディレクトリを含む Amazon S3 バケットへのパスを指定する必要があります。カテゴリ別機能のリストを含めることもできます。

  • トレーニングデータの入力形式: トレーニングデータは、という名前のサブディレクトリにあるはずです。train/にはが含まれていますdata.csvファイル。ターゲット変数は次の最初の列にある必要がありますdata.csv。予測変数 (特徴) は残りの列にあるはずです。

  • 検証データ入力形式: オプションで、という名前の別のディレクトリを含めることができます。validation/それにもあるdata.csvファイル。検証データは、各ブースティング反復の終了時に検証スコアを計算するために使用されます。早期停止は、検証スコアの向上が止まったときに適用されます。検証データが提供されない場合は、トレーニングデータの 20% が検証データとしてランダムにサンプリングされます。

  • カテゴリ別特徴入力形式: 予測変数にカテゴリ特徴が含まれる場合は、という名前の JSON ファイルを指定できます。categorical_index.jsonデータディレクトリと同じ場所にあります。このファイルには、キーが文字列である Python 辞書が含まれている必要があります。"cat_index_list"そして値はユニークな整数のリストです。値リストの各整数は、トレーニングデータCSVファイル内の対応するカテゴリ特徴の列インデックスを示す必要があります。各値は正の整数 (ゼロは目標値を表すためゼロより大きい) で、Int32.MaxValue(2147483647)、列の総数より少ないです。カテゴリ別インデックス JSON ファイルは 1 つだけにする必要があります。

CSV トレーニング入力モードの場合、アルゴリズムで使用可能なメモリの合計 (インスタンス数) にInstanceType) はトレーニングデータセットを保持できなければなりません。

SageMaker LightGBM は Python Joblib モジュールを使用してモデルをシリアル化または逆シリアル化し、モデルの保存や読み込みに使用できます。

でトレーニングしたモデルを使用するには SageMaker LightGBM と JobLib モジュール

  • 次の Python コードを使用します。

    import joblib import tarfile t = tarfile.open('model.tar.gz', 'r:gz') t.extractall() model = joblib.load(model_file_path) # prediction with test data # dtest should be a pandas DataFrame with column names feature_0, feature_1, ..., feature_d pred = model.predict(dtest)

LightGBM アルゴリズムの Amazon EC2 インスタンスに関する推奨事項

SageMaker 現在、LightGBM では CPU を使用したトレーニングのみを行っています。LightGBM は (コンピューティングに制約があるのとは対照的に) メモリに制約のあるアルゴリズムです。そのため、汎用コンピューティングインスタンス (たとえば M5) は、コンピューティング最適化インスタンス (C5 など) よりも適しています。さらに、トレーニングデータを保持するために、選択したインスタンスに十分なメモリを用意することを推奨します。

LightGBM サンプルノートブック

次の表に、Amazon のさまざまなユースケースに対応する各種サンプルノートブックの概要があります。 SageMaker LightGBM アルゴリズム。

ノートブックのタイトル 説明

アマゾンによる表形式分類 SageMaker LightGBM と CatBoost アルゴリズム

このノートブックは、Amazonの使用を示しています SageMaker 表形式の分類モデルをトレーニングしてホストするためのLightGBMアルゴリズム。

Amazonでの表形式回帰 SageMaker LightGBM と CatBoost アルゴリズム

このノートブックは、Amazonの使用を示しています SageMaker 表形式の回帰モデルをトレーニングしてホストするためのLightGBMアルゴリズム。

でサンプルを実行するために使用できる Jupyter ノートブックインスタンスを作成してアクセスする方法の詳細については SageMaker、を参照してください。Amazon SageMaker ノートブックインスタンスを使用する。ノートブックインスタンスを作成して開いた後、SageMaker例タブをクリックして、すべてのリストを表示します SageMaker サンプル。ノートブックを開くには、その [Use (使用)] タブを選択し、[Create copy (コピーを作成)] を選択します。