KaggleカーネルでBigQuery MLを使う

KaggleのカーネルでBigQueryが公式にサポート

先日(2019/6)、KaggleのカーネルでBigQueryが公式にサポートされました。

cloud.google.com

早速、使ってみようと思ったのですが、デフォルトでは開催中のコンペに対して

client = bigquery.Client()
dataset_ref = client.dataset("titanic", project="kaggle-official")

のような感じでデータセットとして指定できる訳ではなく、あくまで自分のGCPプロジェクトにデータセットを用意する必要があるようです。(せっかくなら直接アクセスできるようにして欲しい。。。)

 

ということで、実際のコンペ(Titanic)のデータからBigQueryデータセットおよびテーブルを作成するカーネルを公開しました。テーブルを作成したあとは、BigQuery MLを使ってロジスティック回帰でモデルの作成および予測を行い、submitファイルの作成をしています。簡単のためCVは行なっていませんが、PublicLBで0.722くらいが出ます。

 

ぜひ、BIgQuery MLを触ったことがない方は、これを使ってカーネル上で遊んでみてください。必要なものはGCPプロジェクトとの紐づけのみで、GCPコンソール上でのデータセットの操作は一切不要です。 

www.kaggle.com

 

BigQueryデータセットおよびテーブルを作成、と言っても単にカーネル上からgoogle.cloud.bigqueryクライアントを実行しているだけです。(データが大きければ結局GCSが必要になるはずなので、あまり汎用性ない)

 

下記のカーネルの画面で「BigQuery」をクリックして、

 

f:id:toshikishimizu:20190713233750p:plain

 

下記の画面で「Link an account」するだけです。

f:id:toshikishimizu:20190713231739p:plain

 

当たり前なのかもしれませんが、外部のサービスと連携させているため、

  • 冪等性
  • 非同期処理

辺りを意識して実装する必要があります。(普段カーネルを作る際は、カーネル内にスコープが閉じているので、冪等性を意識しなくてもよかった)

 

公開したカーネルでは、BigQuery MLの学習ジョブをポーリングしていますが、もっといいやり方があったら、コメントで教えていただけると嬉しいです。

 

 今後もGCPとKaggleが連携しやすくなっていくと、コンペが捗りそうですね!