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をみる。モデルの検証方法については長くなるので、別記事書く!