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

PolarDB:LightGBMアルゴリズム

最終更新日:Jun 12, 2024

このトピックでは、光勾配ブースティングマシン (LightGBM) アルゴリズムについて説明します。

背景情報

LightGBMは、決定木アルゴリズムに基づく分散型勾配リフティングフレームワークです。 LightGBMは、並列かつ大規模なデータ処理をサポートする、高速、効率的、低メモリ、高精度のツールとして設計されています。 LightGBMは、データによって占有されるメモリの量を削減し、通信コストを削減し、マルチノードelastic parallel query (ePQ) の効率を向上させ、データコンピューティングの線形高速化を実現します。

シナリオ

LightGBMは、GBDTモデル、ランダムフォレスト、ロジスティック回帰モデルを含むアルゴリズムフレームワークです。 LightGBMは、主にバイナリ分類、マルチクラス分類、ソートなどのシナリオで使用されます。

例えば、ほとんどの個人化商品推薦シナリオでは、クリック推定モデルが必要である。 クリック、クリック解除、購入などの履歴ユーザー行動をトレーニングデータとして使用して、ユーザーのクリックまたは購入の確率を予測できます。 次の特徴は、ユーザーの行動とユーザー属性に基づいて抽出されます。

  • カテゴリ機能: 性別 (男性または女性) などの文字列タイプ。

  • 商品カテゴリ: 衣類、おもちゃ、電子機器などのカテゴリ。

  • 数値機能: ユーザーアクティビティや商品価格などの整数または浮動小数点のデータ型。

パラメーター

次の表に示すパラメーターの値は、モデルの作成に使用されるCREATE modelステートメントで指定されたmodel_parameterパラメーターの値と同じです。 ビジネス要件に基づいてパラメーターを設定できます。

パラメーター

説明

boosting_type

弱い学習者のタイプ。 有効な値:

  • gbdt (デフォルト): グラデーションブースト決定木モデルを使用します。

  • gblinear: 線形モデルを使用します。

  • rf: ランダムフォレストモデルを使用します。

  • dart: オーバーフィットを防ぐために、ドロップアウト手法を使用してツリーを削除します。

  • goss: 勾配ベースの片側サンプリングアルゴリズムを使用します。 このタイプは高速ですが、アンダーフィットを引き起こす可能性があります。

説明

このパラメーター値に値を指定する場合は、値を単一引用符 (') で囲みます。 例: boosting_type='gbdt'

n_estimators

反復回数。 値は整数でなければなりません。 デフォルト値:100

損失

学習タスクとタスクの学習目標。 有効な値:

  • binary (デフォルト): バイナリ分類。

  • regression: L2-regularization回帰モデルを使用します。

  • regression_l1: L1-regularization回帰モデルを使用します。

  • multiclass: マルチクラス分類。

num_leaves

葉の数。 値は整数でなければなりません。 デフォルト値: 128

max_depth

ツリーの最大深さ。 値は整数でなければなりません。 デフォルト値 : 7

説明

このパラメーターが-1に設定されている場合、ツリーの深さは指定されません。 このパラメーターは、オーバーフィッティングを防ぐために注意して指定することを推奨します。

learning_rate

学習率。 値は浮動小数点数でなければなりません。 デフォルト値: 0.06

max_leaf_nodes

ツリー内のリーフノードの最大数。 値は整数または空のままにすることができます。 デフォルトでは、このパラメータは空のままです。これは、ツリー内のリーフノードの数が制限されていないことを示します。

min_samples_leaf

ツリー内のサンプルリーフノードの最小数。 値は整数でなければなりません。 デフォルト値は 20 です。

説明

リーフノードの数がサンプルリーフノードの最小数よりも少ない場合、ノードは兄弟ノードと共にプルーニングされる。

サブサンプル

すべてのサンプルに対するトレーニングサンプルの比率。 値は浮動小数点数でなければなりません。 有効な値は 0~1 です。 デフォルト値は 1 です。

説明

このパラメータの値が1未満の場合、この割合の値を有するサンプルのみがトレーニングで使用される。

max_features

すべての機能に対するトレーニング機能の比率。 値は浮動小数点数でなければなりません。 有効な値は 0~1 です。 デフォルト値は 1 です。

max_depth

ツリーの最大深さ。 値は整数でなければなりません。 デフォルト値 : 7

説明

より大きな値は、より高い精度を指定する。 しかしながら、過剰適合が生じることがある。

random_state

乱数シード。 値は整数でなければなりません。 デフォルト値は 1 です。

説明

異なる値が存在する場合、ツリーの構築およびトレーニングデータのセグメンテーションが影響を受ける可能性がある。

model_type

モデルのストレージタイプ。 有効な値:

  • pkl (デフォルト): PKLファイル。

  • pmml: PMMLファイル。 このタイプは、ツリーの構造などのツリー関連情報を表示することができる。

n_jobs

トレーニングに使用されるスレッドの数。 値は整数でなければなりません。 デフォルト値: 4。

説明

トレーニングに使用される多数のスレッドは、トレーニング速度を向上させることができる。

is_unbalance

サンプルの不均衡に対処するために、サンプル数が少ないカテゴリの重みを増やすかどうかを指定します。 有効な値:

  • False (デフォルト): 少数のサンプルでカテゴリの重みを増やしません。

  • True: 少数のサンプルでカテゴリの重みを増やします。

categorical_feature

カテゴリ機能。 値は文字列配列である必要があります。 ほとんどの場合、LightGBMはデータ型を決定し、categorical_featureパラメーターを自動的に設定します。 このパラメーターを設定することもできます。

たとえば、categorical_featureパラメーターが 'AirportTo,DayOfWeek' に設定されている場合、値 'AirportTo,DayOfWeek' は2つのカテゴリ機能を示します。

オートml

自動パラメーター調整機能を有効にするかどうかを指定します。 有効な値:

  • False (デフォルト): 自動パラメーター調整機能は無効です。

  • True: 自動パラメーター調整機能が有効になっています。 デフォルトでは、自動パラメータチューニング機能が有効になった後、学習タスクと損失パラメータで指定されたタスクの学習目的が変更されない場合に、早期停止手法を使用して反復処理を停止します。

automl_train_tag

トレーニングのラベル。

automl_test_tag

テストのラベル。

automl_column

自動パラメーター調整機能で指定されたトレーニングセットまたは開発セットの列の名前。 automl_columnおよびautoml_test_tagパラメーターを設定する必要があります。 automl_train_tagパラメーターのデータ量は、automl_test_tagパラメーターの4〜9倍である必要があります。

説明

automl_columnパラメーターを設定すると、最適なパラメーターの組み合わせの自動検索が有効になります。 この場合、learning_rateおよびsubsampleパラメーターの前にautoml_ プレフィックスを追加できます。 これにより、既存のパラメータを検索して最適なパラメータを見つけることができます。 例:

automl_column='automl_column' 、automl_train_tag='train' 、automl_test_tag='test' 、automl_learning_rate='0.05,0.04,0.03,0.01 '、automl_subsample='0.6,0.5'

最適パラメータは、学習レートセット「0.05、0.04、0.03、0.01」とサンプルサンプリングパラメータ「0.6、0.5」から得られる。

モデルとオフライントレーニングタスクを作成します。

/* polar4ai * /
モデルairline_gbmを作成する
(model_class = 'lightgbm' 、x_cols = '航空会社、フライト、AirportFrom、AirportTo、DayOfWeek、時間、長さ' 、y_cols='Delay',model_parameter=(boosting_type='gbdt'))
AS (SELECT * からdb4ai.airlines); 

モデルを評価します。

/* polar4ai * /
EVALUATEからの航空会社を選択 (モデルairline_gbm、SELECT * からdb4ai.airlines LIMIT 20)
(x_cols = 'Airline,Flight,AirportFrom,AirportTo,DayOfWeek,Time,Length',y_cols='Delay',metrics='acc'); 

予測にモデルを使用します。

/* polar4ai * /
PREDICTからの航空会社を選択 (モデルairline_gbm、SELECT * からdb4ai.airlines制限20)
(x_cols = '航空会社、フライト、AirportFrom、AirportTo、DayOfWeek、時間、長さ');