cucumber flesh

Rを中心としたデータ分析・統計解析らへんの話題をしていくだけ

RStudioを使ってKaggleコンペティションをやっていくためのプロジェクトテンプレートを作っています

はじめに注意書きですが、この記事で書かれているプロジェクトテンプレート機能は、今日現在、開発版のRStudioを利用したものです。厳密には、実行のためにはv1.1.28以上である必要があります。おそらく次の安定版には盛り込まれる機能であると思うので、しばしお待ちください。

というわけで、タイトルにある通り、Kaggleコンペ向けのRStudioのプロジェクトテンプレートを作りました。プロジェクトテンプレートって何? どういうのを作ったの? という話をします。

プロジェクトテンプレート

RStudioでは、プロジェクト機能により複数の作業環境を構築することが可能です。プロジェクトテンプレートとは、ユーザが定義したプロジェクトをテンプレートして利用可能にしたものです。今までもRパッケージのためにプロジェクトを作成する場合には、パッケージ開発に必要な構造をもったプロジェクトを生成するテンプレートが利用されていました。新しい機能ではそれ以外にもRcppを使ったパッケージ開発や、ユーザの作ったプロジェクトテンプレートが利用できるようになっています。

kagglepro

kaggleproというのが、作ったパッケージの名前です。GitHubで公開しています。

github.com

Kaggleのようなコンペティションでは、提供されるデータを保存するディレクトリ、モデルを書くディレクトリ、可視化のための作図を行うディレクトリ、提出するファイルをモデルごとに出力したディレクトリなど、コンペティションの種類を問わず、いくつか共通の構造を持ったディレクトリを構成することがしばしばあります。

テンプレートとして、空のフォルダを用意しておいてそれをコピペしても良いのですが、せっかくなので、コンペでよく使うフォルダ構成をプロジェクト立ち上げ時に生成してしまおう、というのがkaggleproの開発の動機となっています。

またKaggleでは、Kaggle Kernelsと呼ばれる (以前はScriptsという名前だった)、スクリプト実行環境および公開の場が設けられています。そこではDockerを使った環境が用意されており、Kaggleが用意するKernelで利用するDockerイメージを元に手前でDockerfileを作っておけば、ローカルでもKernelと同じ環境を再現することが可能です。そのためkaggleproでも、KaggleのRユーザ向けのDockerイメージをベースとしたDockerfileの生成を行えるようにしました。既存のDockerfileがある場合、それをインポートすることも可能です。

blog.kaggle.com

blog.kaggle.com

kaggleproの使い方です。GitHubからパッケージをインストールしてください(冒頭にも述べたように、kaggleproを利用するには開発版のRStudio(v1.1.28以上)が必要です。)。

# GitHubリポジトリからのパッケージインストールを実行する
# devtoolsパッケージがインストールされていない場合
# install.packages("devtools")

devtools::install_github("uribo/kagglepro")

R操作の中でkaggleproを利用することはありません。RStudioのプロジェクトを新規作成する時にのみこのパッケージを使います。次の画像にも示すように、RStudioのメニューバーから「File」、「New Project…」を選択し、「New Directory」から「Kaggle Competition」というのを見つけて押します。次に表示される画面は、プロジェクトを生成するディレクトリとDockerfileに関する情報を入力するものです。ここの入力は適当に行ってください。

f:id:u_ribo:20170725054719g:plain

「Create Project」ボタンを押すと、プロジェクトが作成されます。kaggleproでは現在、次のようなディレクトリ構成のプロジェクトを作ります。

dockerfile
*.Rproj
data/
input/
source/
submission/

ちなみにですがkaggleproという名前にはKaggle向けのProjectテンプレート、という意味とPro Kaggle User (Kaggle Grandmaster)という2つの意味が込められています(本当か?)Kaggleの経験が浅く、どのようなディレクトリがあれば十分かという点にまだ不安が残りますが、よければこのオレオレテンプレートを使ってKaggleコンペに挑んでみてください。こういう風にした方が良いなどの改善や要望がありましたらプルリクエストを送っていただけると嬉しいです。

Enjoy!