lightGBMを初めて使ったので備忘メモとしてまとめてみた
Kaggleの初心者ですが、M5コンペに挑戦中です。 KaggleではLightGBMが全盛と聞きましたので、備忘メモとしてまとめてみました。
setuptools、 numpy、scipy、 scikit-learn 0.21.3以降のライブラリのインストールが必要です。
詳細は公式ドキュメント参照。 lightgbm.readthedocs.io
データセットは、Kaggle の HousePrice コンペのものを使っています。 www.kaggle.com
理論や背景は先人のサイトに譲りまして、とりあえずぶん回してみるところまでをやってみます。
コードもこちらを参照しています。 www.codexa.net
なお、前提として、特徴量の抽出※、データの欠損値処理、ホールドアウト法処理(train_test_split)、標準化(StandardScaler)をしていますが、本記事ではlightGBMの記載にとどめ、詳細の記載を割愛しています。
※ 目的変数はSalePrice、説明変数はSalePriceと相関係数の高かった①OverallQual、②YearBuilt、③YearRemodAdd、④TotalBsmtSF、⑤1stFlrSF、⑥GrLivArea、⑦FullBath、⑧TotRmsAbvGrd、⑨GarageCars、⑩GarageAreaとしています。
# ライブラリ読込 import lightgbm as lgb # データセット読込 lgb_train = lgb.Dataset(X_train, y_train) lgb_eval = lgb.Dataset(X_test, y_test) # パラメーター設定 params = {'metric': 'rmse', 'max_depth' : 9} gbm = lgb.train(params, lgb_train, valid_sets=lgb_eval, num_boost_round=10000, early_stopping_rounds=100, verbose_eval=50)
こんな感じで出力されます。
Training until validation scores don't improve for 100 rounds [50] valid_0's rmse: 30194.1 [100] valid_0's rmse: 30750.4 Early stopping, best iteration is: [48] valid_0's rmse: 30177
# 予測の実施 predicted = gbm.predict(X_test) # 予測値の出力 print(predicted)
こんな感じで予測値を作成することができます!
今後の課題
パラメータの意味や、適切なパラメーターにするにはどうすればいいのかなど、使いこなすためにはまだまだ学ぶことが多いので精進いたします!
以上になります、最後までお読みいただきありがとうございました。