LightGBMとは
LightGBMは分類や回帰に用いられる機械学習アルゴリズムで、その性能の高さや使い勝手の良さ(特徴量重要度などが出せる)から、特に回帰においてはXGBoostと並ぶメジャーなアルゴリズムです。
LightGBMの特徴
LightGBMは以下の特徴を持っています:
- 予測精度が高い: 一般的にディープラーニングを除いた機械学習の中ではXGBoostと並んで最高の予測精度。
- モデルの訓練に掛かる時間が比較的短い: 同等の予測精度を誇るXGBoostよりも計算コストが少ない(LightGBMが「Light(軽い)」と言われる所以)。
- 過学習しやすい: 複雑な決定木構造になるため、パラメータを適切に調整しないと過学習となる可能性が高い。
パラメータチューニング
LightGBMは多くのハイパーパラメータを持つため、その性能を十分に発揮するためにはパラメータチューニングが重要となります. 本記事では、Optuna公式サンプルコードのチューニング対象パラメータを使用します.
実装
下図のフロー(と同じ)に基づき、LightGBM回帰におけるチューニングを実装します. コードはのGitHub(lgbm_tuning_tutorials.py)にもアップロードしております。
import lightgbm as lgb
from sklearn.model_selection import train_test_split
# パラメータの設定
parms = {
'task': 'train', #トレーニング用
'boosting': 'gbdt', #勾配ブースティング決定木
'objective': 'multiclass', #目的:多値分類
'num_class': 4, #分類するクラス数
'metric': 'multi_error', #評価指標:正答率
'num_iterations': 1000, #1000回学習
'verbose': -1 #学習情報を非表示
}
# モデルの学習
model = lgb.train(parms, train_set=lgb_train, valid_sets=lgb_eval, early_stopping_rounds=100)
結果の確認
結果の予測と評価は以下のように行います:
# 結果の予測
y_pred = model.predict(X_test)
# 予測確率を整数へ
y_pred = np.argmax(y_pred, axis=1)
from sklearn import metrics
print(metrics.classification_report(y_test, y_pred))
以上がPythonとLightGBMを用いたパラメータチューニングの最新手法についての記事です。この情報が皆さんの機械学習の学習や実践に役立つことを願っています。.