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

PolarDB:LightGBMアルゴリズム

最終更新日:Dec 23, 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」から得られる。

LightGBMモデルを作成します。

/*polar4ai*/CREATE MODEL airline_gbm WITH
(model_class = 'lightgbm',
x_cols = 'Airline,Flight,AirportFrom,AirportTo,DayOfWeek,Time,Length',
y_cols='Delay',model_parameter=(boosting_type='gbdt'))
AS (SELECT * FROM db4ai.airlines);

モデルを評価します。

/*polar4ai*/SELECT Airline FROM EVALUATE(MODEL airline_gbm, 
SELECT * FROM db4ai.airlines LIMIT 20) WITH 
(x_cols = 'Airline,Flight,AirportFrom,AirportTo,DayOfWeek,Time,Length',y_cols='Delay',metrics='acc');

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

/*polar4ai*/SELECT Airline FROM PREDICT(MODEL airline_gbm,
SELECT * FROM db4ai.airlines limit 20) WITH
(x_cols = 'Airline,Flight,AirportFrom,AirportTo,DayOfWeek,Time,Length');