週末記録

自分メモのため散らかりまくり

Kaggle Tabular Playground - Aug 2022 実施記録

はじめに

Titanic チュートリアルに続き、Tabular Playground を選択(理由は必要リソースが少なそうだったから)して実施した結果です。

手法

LightGBM を使用、まずは実装が楽そうな LGBMClassifier を用いて学習(fit)、予測(predict)から結果を提出しました。結果は以下のとおり。

続いて、TrainAPIを用いて結果提出しました。結果は、

リーダーボードの上位は0.59444あたりなのでまだ随分差はありそうです。

ポイント

  • 初回提出時のスコアが低かったのは学習方法を間違えていたため
    • train.csv をさらに train と test に分けて学習+検証すべきところを間違えてtrain.csv 全体で学習し、その結果をもって test.csv の予測をしてしまっていた(検証されていないモデルをそのまま使用しだだけ)
  • LightBGMのパラメタ周りをきちんと理解する必要ありそう
    • Scikit-learn API の Classifier は Trainig API のラッパー的なものらしい(未確認)のでそれであれば Trainig API で細かくパラメタ設定できたほうがよいだろうと思い使用してみました。
    •  objective や metric、lambda_l1, lambda_l2、num_leaves, feature_fraction, bagging_fraction, bagging_freq, min_child_samples などのパラメタがあり(他にもあり)、それぞれについてきちんと理解しない限り適切は設定はできなさそうです。今回用いたパラメータは以下の通りですが、現時点ではざっくりとした理解のみです。
    • lgbm_params = {
          "boosting_type":"gbdt",
          "objective":"binary",
          "metric":'binary_logloss',
          "num_leaves":64,
          "min_data_in_leaf"20,
          "max_depth":7,
          "verbose":0,
      }
  • optuna によるパラメタチューニングもある程度有用そう
    • num_boost_round=3000にして lightgbm で train した結果、スコアは0.52684 でした。条件変更せずに optuna を使用したところ、0.57918 となりましたので、チューニングをしていない状態からであれば効果は見込めそうです(今回は手動でチューニングしていないので、最終的に手動とどちらが優秀かは現時点ではわからない)
    • before optuna=0.52684→after optune=0.57918
    • 参考リンクtech.preferred.jp
  • その他(細かな点)
    • optuna 使用時(学習時)にノートPCがメモリ不足に陥り何度かページ表示が消えて、リロードで復活を繰り返した。おそらくもう少しメモリたりなければブラウザがおちるかPCが固まったと想像します(PCのメモリは 8GB)。Google Colab を使用したとて、結局ローカルマシンスペックがある程度必要ということかもしれない。この状態ではチューニングをきちんと実施したり、あるいは次のコンペに進むことはおそらく困難と思われる(メモリ増強はある程度必要)。
    • (追記:2022/8/15)verbose_eval=False をオプション追加することでログの出力を制限したところ、メモリ不足は解消されました。メモリ不足解消されるのか試すためにもnum_boost_roundを3000→10000に増やして試行。メモリ不足とは別件ですが、スコアは3000のほうがよかった。

    • (追記:2022/8/15)num_boost_round=10000が設定3000時よりもスコアが悪かったため、そもそもこの設定はoptuna使用時は不要なのかもしれません(仮説)。試しに本オプション無しで実行したところスコアは改善され、0.57860となりました(10000時は0.54程度)。なぜか0.579においつけない。
    • (追記:2022/8/15)確認のため lightgbm + optuna ( num_boost_round=3000)を実施してみたところスコアは0.5618。昨日の値に届いていないため、微妙に設定が異なっていた可能性あり。少なくともoptuna まかせで回したほうが今日は良い成績がえられています。

    • (追記:2022/8/15)試しに objective, metric 以外のパラメータを無しでoptuna を実行したところ、0.56532でした。どうやっても昨日の値に到達できそうにありません。

以上