データサイエンスのコンペサイトKaggleが面白そうだったので、簡単な使い方を調べてみました。
Kaggleでは企業が賞金を懸けたコンペが提示されており、提示したデータを使った機械学習を行います。
作成した予測データを提出することで、スコア上位者は賞金を得ることができる仕組みです。
賞金の受け取りにはコードの提示や仕様書の提出など、色々と条件があるようです。
ともあれ、機械学習を実践するにはとても良い環境だと思いました。
というわけで以下をやってみました。
①Kaggleアカウント登録
②データセット(コンペのデータ)取得
③予測データ(サブミット用)作成
④予測データ提出
⑤スコア・ランキング確認
予測データを作成するためには機械学習の実行環境が必要です。私はAnacondaをインストールしたlinux環境(Docker)を使いました。
ちなみに私の技能はPython、Dockerがちょこちょこ使える程度で、機械学習は入門書を2、3冊読んだぐらいのレベルです。
以下の書籍を参考にプログラムを作成していますが、データの取り扱いなど非常に為になる内容だったので一読するとよいかもしれません。
①Kaggleアカウント登録
(1)Kaggleサイトにアクセスし、アカウントを作成する
(2)ユーザ名、表示ユーザ名、メールアドレス、パスワードを入力する
(3)登録したアドレスに届いたKaggleからのメールを開き、承認を行う
②データセット(コンペのデータ)取得
(1)Kaggleにログインする
(2)参加したいコンペのページを開く(Competitionsからコンペを選択する)
※チュートリアルのコンペ(Bag of Words Meets Bags of Popcornコンペ)を使用した
(3)Dataタブを選択し、データセットをダウンロードする
※Bag of Words Meets Bags of Popcornコンペの場合は以下4種類
・labeledTrainData(トレーニングセット(ラベル付き))
・unlabeledTrainData(トレーニングセット(ラベルなし))
・testData(提出用のデータセット)
・sampleSubmission(提出ファイルのサンプル)
③予測データ(サブミット用)作成
(1)トレーニングデータを使い、モデルを作成
※labeledTrainDataを使って、ナイーブベイズによる学習を行った(上記の書籍内にあるプログラムほぼそのまま)
(2)作成したモデルを使い、提出用のデータセットで予測データを作成
※testDataを使った予測データ作成
(3)予測データを提出形式に加工し、ファイル出力
※書籍では提出形式でのファイル出力は載っていないので、おおまかに以下の手順で出力した
→予測データを1と0値に変換
予測データ変数 = (予測データ変数[:, 1] > 0.5).astype(int)
→DataFrame作成
DataFrame変数 = DataFrame(np.c_[テストデータ変数, 予測データ変数][:, ::2], columns=["id", "sentiment"])
→ファイル(CSV)出力
DataFrame変数.to_csv("出力ファイル名.csv", sep=",")
→出力されたCSVの余計な先頭列(ナンバリングされている行)をExcel等で削除
④予測データ提出
(1)KaggleのBag of Words Meets Bags of Popcornコンペのページにアクセスする
(2)Late Submissionのタブを選択する
(3)Upload Submission Fileの領域に作成した予測データファイルをドラッグ&ドロップする
(4)Describe submissionに適当な説明を入力する
(5)Make Submissionボタンを押下
⑤スコア・ランキング確認
(1)KaggleのBag of Words Meets Bags of Popcornコンペのページにアクセスする
(2)Leaderboardのタブを選択する
※Public/Privateの項目があるが、Publicはテストデータに従ったスコアランキング
Privateは秘匿されたテストデータを使ったスコアランキング(コンペ終了まで表示されない)
公開されたテストデータにのみ適合した過学習モデルの場合、Publicが高スコア、Privateが低スコアになるので、
両方のスコアを意識しながらコンペを進めると推測
とりあえず基本的な使い方は以上です。
2018/1時点で18種類のコンペが開催されているようです。
例えば以下のようなコンペがあります。
例1.Zillow Prize: Zillow’s Home Value Prediction(Zestimate)(不動産関係、家の価値の予測)
→Zillow(アメリカのオンライン不動産データベース運営会社)が出資しており、一番高い賞金は100万ドルになる
例2.Mercari Price Suggestion Challenge(オンライン販売者に製品価格を自動で提案)
→Mercari(フリマアプリを提供する日本の企業)が出資しており、1位は6万ドルの賞金が提示されています
今後は学習アルゴリズムとデータ前処理の手法をもっと数多く理解しながら、Kaggle上で実践してみたいと考えています。