見出し画像

Pythonで機械学習『LightGBM  実装 』

LightGBMのパラメータを勉強したのでいよいよ実装をする。lightGBMインポートとバリデーションデータ作成については割愛。(別記事に書くつもり)

(バリデーションについて。ここでは、train_test_splitを使い、データ名はtrain_x,train_y,valid_x,valid_yにしたとする。)

LightGBM基本手順

1、LightGBMに、カテゴリー変数を教えてあげる。
(そのためにobject型の変数を、LabelEncoderで変換する)

LabelEncoderの手順
①インポートする。
from sklearn.preprocessing import LabelEncoder
②欠損地があると動かないので、欠損値を埋める。
df['column'] .fillna('missingdata', inplace=True)
③実行する。
le = LabelEncoder()
le = le.fit(df['column'])
df['column'] = le.transform(df['column'])

le.fitとle.transformがセットなのかな。
scikitlearnも重要ドコロはまとめたい。
categories = ['カテゴリーカラム1','カテゴリーカラム2'・・・]

2、データセットとして、lgb_trainとlgb_evalをLightGBMに渡す。

lgb_train = lgb.Dataset(train_x,train_y, categorical_feature = categories)
lgb_eval = lgb.Dataset(valid_x,valid_y,categorical_feature = categories, reference = lgb_train)

categorical_featuresはここで登場。
また、lgb_evalには、reference = lgb_trainが必要。

3、ハイパーパラメータを設定する。

lgbm_prams = {
    'objective' = 'regression'
   'learning_rate' = 0.01,
      'random_seed' = 777,
        
など。
}

この中にパラメーターを記述。パラメータの種類まとめはこちら。

4、モデルを作る。

model_lgb = lgb.train(
    lgbm_params,
    lgb_train,
    valid_sets = lgb_eval,
    num_boost_round = 1000,
    early_stopping_rounds = 100
)

early_stopping_roundsはlgb_paramsではなく、lgb.train内に書いてる人がほとんど。なんで?ここに書かなくちゃいけないのかな。

5、モデル検証

5.1、変数の重要度を調べる。

model_lgb.feature_importance()
#グラフにすると見やすい。

5.2、予測し精度の計算をする。

 y_pred = model_lgb.predict(valid_x, num_iteration=model_lgb.best_iteration)


分類の場合は、誤分類の少なさが知りたい。loglossを見る。比較したい時はAUC。
回帰の場合は、誤差の少なさが知りたい。基本RMSEをみる。モデルの検証方法については長くなるので、別記事書く!


この記事が気に入ったらサポートをしてみませんか?