LoginSignup
14
10

More than 3 years have passed since last update.

Kaggleの特徴量管理をPostgreSQLでやったら思ったより捗ったので,Dockerで誰でも使えるディレクトリを作ってみた

Last updated at Posted at 2019-12-19

この記事は Kaggle Advent Calendar 2019 の 19 日目の記事です。

どうもこんにちは、kiccho1101と申します!
人生で初めて記事を書きます!よろしくお願いします!

はじめに

今回は、Kaggleの特徴量管理をPostgreSQLでやってみたら思ったよりも捗ったので、紹介したいと思います。

作ったディレクトリはこちら: https://github.com/kiccho1101/datascience-template
↑READMEにはTitanicコンペのデータを使った使用例が書いてあります。

特徴量管理とは?

Kaggleコンペでは、(以前の)僕のように何も考えずにコードを書きまくってると、以下のような問題が発生します。

  • 特徴量が何を表してるのかわからない
  • notebookがカオス状態に(exp1.ipynb, exp1_tmp.ipynb, exp1_tmp_tmp.ipynbなどが大量に発生)
  • 半年後見返したときに、書いた自分でも???となるコードが生成される

これらの問題を解決するために、何らかの方法で特徴量を管理する必要があります。

特徴量管理については、Takanobu Nozawaさんのスライドがとてもわかり易いので、こちらを是非参考にしてもらえれば幸いです。

概要

このディレクトリの特徴をまとめると以下のとおりです。

  • データをDockerコンテナ上のPostgreSQLで管理
  • SQLとPythonの両方でデータの操作ができる
  • Makefileを使って一連の流れ(特徴量生成, 交差検証, 予測)をコマンドラインツール化
  • 実験内容をconfigファイルで管理

データをDockerコンテナ上のPostgreSQLで管理

データベースを用いることにより、

などのデータベースビューアーでデータを見れます。これがすごくいい。
pandasでやるよりも、EDAが格段にしやすいです。

Makefileによるコマンドラインツール化

特徴量生成

feature.gif

交差検証 (Cross Validation)

cv.gif

予測

predict.gif

こんな感じで、よくやる操作はmakeコマンドで実行できるようにしました。
コードを書く量がただ減っただけなのですがかなり快適にコーディングできます。

まとめ

今回は、コードがメインになるので、記事のなかではサラッと説明するだけにとどめました。
「面白そう」と思った方は、是非是非Cloneして使ってみてください!!

最後に
プルリク&フォーク歓迎です!!!どなたでも気軽にお願いします!!!

14
10
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
14
10