LightGBM - Amazon SageMaker

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

LightGBM

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

SageMaker LightGBM の使用方法

LightGBM は Amazon SageMaker 組み込みアルゴリズムとして使用できます。次のセクションでは、 SageMaker Python SDK で LightGBM を使用する方法について説明します。Amazon SageMaker Studio Classic UI から LightGBM を使用する方法については、「」を参照してくださいSageMaker JumpStart

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

    次のコード例に示すように、LightGBM 組み込みアルゴリズムを使用して、LightGBM トレーニングコンテナを構築します。LightGBM 組み込みアルゴリズムイメージ URI は、 SageMaker image_uris.retrieve API (または Amazon SageMaker Python SDK バージョン 2 を使用している場合は get_image_uri API) を使用して自動的に検出できます。

    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}/train" validation_dataset_s3_path = f"s3://{training_data_bucket}/{training_data_prefix}/validation" 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 hyperparameters 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, # for distributed training, specify an instance_count greater than 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( { "train": training_dataset_s3_path, "validation": validation_dataset_s3_path, }, logs=True, job_name=training_job_name )

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

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

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

LightGBM の SageMaker 実装では、トレーニングと推論に CSV がサポートされています。

  • トレーニング ContentType の場合、有効な入力はテキスト/csv である必要があります。

  • 推論 ContentTypeの場合、有効な入力はテキスト/csv である必要があります。

注記

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

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

トレーニングデータ、検証データ、およびカテゴリ別特徴量の入力形式

LightGBM モデルに入力するトレーニングデータをフォーマットする方法に注意してください。トレーニングおよび検証データを含む Amazon S3 バケットへのパスを指定する必要があります。カテゴリ別特徴のリストを含めることもできます。trainvalidation チャネルの両方を使用して入力データを提供します。または、train チャネルだけを使用することもできます。

注記

traintraining のどちらも、LightGBM トレーニングに有効なチャネル名です。

trainvalidation チャネルの両方を使用する

入力データは、2 つの S3 パス (1 つは train チャネル用、もう 1 つは validation チャネル用) によって指定できます。各 S3 パスは、1 つ以上の CSV ファイルを指す S3 プレフィックスか、1 つの特定の CSV ファイルを指すフル S3 パスのいずれかです。ターゲット変数は CSV ファイルの最初の列にある必要があります。予測変数 (特徴量) は残りの列に存在する必要があります。train または validation チャネルに複数の CSV ファイルが提供されている場合、LightGBM アルゴリズムはファイルを連結します。検証データは、各ブースティング反復の最後に検証スコアを計算するために使用されます。検証スコアが改善しなくなると、早期停止が適用されます。

予測子にカテゴリ別特徴が含まれている場合は、トレーニングデータファイルまたはファイルと同じ場所に categorical_index.json という名前の JSON ファイルを提供できます。カテゴリ別特徴の JSON ファイルを提供する場合、train チャネルは特定の CSV ファイルではなく S3 プレフィックスを指している必要があります。このファイルには Python ディクショナリが含まれている必要があり、キーは "cat_index_list" という文字列で、値が一意の整数のリストです。値リストの各整数は、トレーニングデータの CSV ファイル内の対応するカテゴリ別特徴の列インデックスを示す必要があります。各値は、正の整数 (0 は目標値を表すため 0 より大きい) で、Int32.MaxValue (2147483647) より小さく、列の総数よりも小さい必要があります。カテゴリ別インデックス JSON ファイルは 1 つだけである必要があります。

train チャネルのみを使用する

別の方法として、train チャネル用の単一の S3 パスを介して入力データを指定することもできます。この S3 パスは、1 つ以上の CSV ファイルを含む train/ という名前のサブディレクトリを持つディレクトリを指す必要があります。オプションで、同じ場所に 1 つ以上の CSV ファイルを含む validation/ という別のサブディレクトリを含めることができます。検証データが提供されない場合は、トレーニングデータの 20% がランダムにサンプリングされ、検証データとして使用されます。予測変数にカテゴリ別特徴が含まれている場合は、データサブディレクトリと同じ場所に categorical_index.json という名前の JSON ファイルを提供できます。

注記

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 トレーニングをサポートしています。マルチインスタンスの CPU トレーニング (分散トレーニング) の場合、推定器を定義するときに 1 より大きい instance_count を指定します。LightGBM を使用した分散トレーニングの詳細については、「Dask を使用した Amazon SageMaker LightGBM 分散トレーニング」を参照してください。

LightGBM は (CPU バウンドではなく) メモリバウンドアルゴリズムです。そのため、コンピューティング最適化インスタンス (C5 など) よりも汎用コンピューティングインスタンス (M5 など) を選択することをお勧めします。さらに、トレーニングデータを保持するために、選択したインスタンスに十分なメモリを用意することを推奨します。

LightGBM サンプルノートブック

次の表は、Amazon SageMaker LightGBM アルゴリズムのさまざまなユースケースに対応するさまざまなサンプルノートブックの概要を示しています。

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

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

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

Amazon SageMaker LightGBM と CatBoost アルゴリズムによる表形式回帰

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

Dask を使用した Amazon SageMaker LightGBM 分散トレーニング

このノートブックでは、Dask フレームワークを使用した Amazon SageMaker LightGBM アルゴリズムによる分散トレーニングについて説明しています。

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