連載
» 2021年08月30日 05時00分 公開

Kaggle初心者のためのコンペガイド ― Titanicの先へ僕たちのKaggle挑戦記

Kaggle初心者がKaggleに挑戦した過程や得られた知見などを記事化していく新連載。初回である今回は、準備編として初心者向けにコンペを簡単に紹介します。また、連載目的やKaggleを始めて「これが良かったよ」という筆者の体験を共有します。

[一色政彦,デジタルアドバンテージ]

この記事は会員限定です。会員登録(無料)すると全てご覧いただけます。

「僕たちのKaggle挑戦記」のインデックス

連載目次

 機械学習やディープラーニングを勉強してきて、書籍やWeb上のコンテンツで用意された練習問題から、より実践的な問題で腕を磨きたいと思ったときに、データサイエンス/機械学習の世界的なコンペティション(以下、コンペ)プラットフォームであるKaggleや日本のSIGNATEを使ってみようと考えている人は少なくないと思います。そして書籍やWeb情報を基に、KaggleでTitanicコンペでSubmission(提出)をしてみた後、次はどんなコンペに参戦しようかを迷う人も少なくないのではないでしょうか?

 そんな人に向けて今回は、既に終わっているコンペを厳選してKaggle初心者向けに紹介します。終了したコンペには、コンペ期間中に蓄積された「参考になるノートブック」や「Discussion情報」が豊富にあります。初心者にとっては、これらが実践力を鍛えるのに役立つのではないかと思います。

 本題に入る前に、今回は連載1回目なので、この連載がどういう目的で企画されたのかを簡単に紹介させてください。その後、タスク別に数個ずつコンペをリストアップします。本稿の後半では、筆者がどのようにKaggleを始めて、どんなことをしたら良かったかをまとめます。

本連載の目的

僕たちのKaggle挑戦記

 この連載の名前は『僕たちのKaggle挑戦記』にしました。ちょっとダサい感じになっていますが、連載名の「僕たち」とは、Kaggle初心者として挑戦していくDeep Insiderスタッフなどの執筆者だけでなく、初めてKaggleに挑戦したい/挑戦しようとしている読者の皆さんのことを指しています。

 ……と今、適当な理由付けを考えました。が、そういう読者目線でユーザーフレンドリーでフランクでユルい内容を目指し、できれば皆さんと喜怒哀楽をともにできるような連載にしていきたいと思っています。肩肘を張って「これを見て勉強してね」というコンテンツは目指していませんし、そもそもKaggleグランドマスターでもないのにそういうコンテンツは書けませんので。そういう前提で読んでいただけるとうれしいです。

 執筆者ら自身が、あくまで初心者Kagglerです。世の中にある本やコンテンツとは逆に、執筆者も読者も初心者だからこそ、

  • 「Titanicコンペの次はどうしたらいいの?」「私はこうしてこうなったよ」と同じ初心者レベルで意見交換できたり
  • 「こういうところでつまずいたけど、こう回避できたよ」という初心者ならではの悩みの共有ができたり
  • 「Kaggleコンペ参加に当たっていろいろと調べてみたよ」という便利ツールや手法、Tipsの情報提供ができたり

するのではないかと考えています。コンテンツの基本は「コンペに参加してこういうことがあった」という内容になると思いますが、それに限らず意見交換/悩み共有/情報提供できるものなら何でも発信していく予定です。

 読者の皆さんのことを(勝手にですが)「僕たちのKaggleチームメンバー」「僕たちのKaggleフレンド」だと思って、皆さんに向けて僕たちのKaggle挑戦記を少しずつ書いていきたいと思います。自己紹介として、当面の執筆予定者の2人の予定や意気込みを短くコメントしておきます。


かわさき

 どうも、かわさきです。Deep Insiderでは主にPython(やVisual Studio Code)に関連した記事を執筆しています。知識量としてはPython >>>> 機械学習という状態といってもよいでしょう(PyTorchはちょこちょこと使っていて、連載記事も書いたりしていますけど)。そういう意味では、上にあった「初めてKaggleに挑戦したい」とか「Titanicコンペの次はどうしたらいいの?」というのはまさしく自分のことです。

 先日まではKagglerにとってのHello Worldともいえる(?)Titanicコンペへの参加も躊躇(ちゅうちょ)していたのですが、この連載が始まるからということで挑戦をいよいよもって始めることになってしまいました。プロレス風にいえば「時はきた! それだけだ」(苦笑い)ってやつです。

 というわけで、少しは知っているPyTorchをメインの武器に、何でもかんでも取りあえずはDNNに突っ込んでみて、考えるのはそれからだ、というスタンスで取り組んでいこうと思っています。DNNでは良い結果が得られないことがたくさんあるはずです。そうなったときの悪戦苦闘を楽しみにしていただければと思います。



一色

 今回の記事を執筆している一色(いっしき)です。Kaggleに登録したのは、3年前みたいなのですが、Titanicコンペだけで終わっていました。理由は、Kaggleをやろうと思ったら、それなりに時間が取られるために覚悟が必要だったからです。

 そんなときに『Kaggle入門』連載が始まって勇気づけられたことと、「編集部でもKaggleをやろう」という機運が生まれたことが、ようやく覚悟を決めるきっかけになりました。

 かわさきさんとのすみ分けなどは考えておらず、かぶる内容でもそれぞれに思ったことを記事にしたいと思っています。私の方はTensorFlow/Kerasも追いかけていますので、ディープラーニング方面ではそれを中心に使う予定です。それが唯一のすみ分けになります。


 さて、連載紹介と自己紹介が終わったところで本題に入りましょう。

初心者のためのコンペガイド

 このコンペガイドは、本連載を企画した際(数カ月前)に「Kaggleにはタスク種別ごとにどんなコンペがあり、どんなコンペなら僕たち初心者でも練習問題として使えそうか」を調査してリストとしてまとめたものです。Kaggle初心者が学ぶための情報がそろっていると考えられる「終了済みの過去のコンペ」に絞っています。また、リストがコンパクトになるように、タスク種別ごとに最大5個程度を厳選ピックアップしました。

 ちなみに調査した当時の筆者の感想は、以下の通りでした。あくまでKaggle初心者の視点です。


一色

 表形式データの回帰/分類/レコメンデーションは、コンペが盛り上がっているみたいですね。それらの領域にはディープラーニングは入りづらいので、XGBoostなど勾配ブースティングと呼ばれる手法で取り組むのがメインになるのかなと思います。

 ディープラーニングの出番である非構造化データだと、画像認識や音声認識、テキスト分類といったタスクはそこそこ参加者が多いようです。しかし、それ以外はあまり多くないですね。人気タスクはいずれも挑戦する価値があると思います。


  • 凡例:
    • 【Started】と表記:「Getting Started Prediction Competition」…… 入門コンペ
    • 【Playground】と表記:「Playground Prediction Competition」…… Startedより一段上の「お楽しみ」コンペ
    • 【Featured】と表記:「Featured Code Competition」…… 一般的なコンペ
    • 【Research】と表記:「Research Code Competition」…… Featuredよりも「実験的な問題」を扱うコンペ
    • 【Recruitment】と表記:「Recruitment Prediction Competition」…… 参加者の採用を目的としたコンペ
    • 【InClass】と表記:「InClass Prediction Competition」…… (大学の学内だけなど)クラス内限定のコンペで、外部者はSubmissionできない
    • 【+……】と表記:『Kaggleで勝つデータ分析の技術』で示されていた代表コンペ例
    • 【*……】と表記:『Kaggleコンペティション チャレンジブック』で示されていた代表コンペ例

 執筆時点で「Tabular Playground Series」というPlaygroundコンペが毎月実施中で、それも4つほど含めました。

構造化データ

表形式データ

  • 不正検知(=二値分類。異常検知の直近のコンテストはなかった)

非構造化データ

画像/動画

音声

テキスト/言語

ゲーム/ロボット

 以上、参戦してみたいコンペはあったでしょうか。こういったもので経験を積んでから、本当のコンペに参加して活躍できるようになりたいですね。

 あくまで筆者が調べて選んだ範囲なので、初心者にもっと良いコンペもあるかもしれません。さらにコンペを探したい人は下記のリンク先から探してみてください。

図1 Kaggleコンペのページ 図1 Kaggleコンペのページ

 本題は以上で、以降はおまけコンテンツとして、筆者がKaggleを始めてから約20日間で、これが役に立ったというポイントをまとめていきます。

Kaggleを始めるのに役に立ったこと

1. 「30 Days of ML」プログラム

 私がKaggleを始めるのと同じタイミングで「30 Days of ML」というKaggle公式プログラム(2021年8月2日〜31日)が始まりました。良い機会と思いながらも半信半疑で参加したところ、これがかなり良かったです。

 このプログラムの第2回目が再度開催されるかどうかは分からないですが、プログラムに参加しなくても参考になる部分はあると思うので、私がこのプログラムでどんなことをやったかをご紹介します。

 30 Days of MLは、前半(講座)と後半(コンペ)に分かれました。前半では毎日宿題が出ました。内容は、誰でも参加できるKaggle公式講座(Courses)の、

でした(各回はチュートリアルと演習で構成されています)。宿題リストのリンク先に日程を記載しておいたので、これに沿って毎日やってみるとよいかもしれません。ちなみに筆者は、中級講座で突然やることが増えて2日ほど修了が遅れました……。ちょっと日程バランスが悪いと思います。

図2 Kaggle公式の3講座を修了 図2 Kaggle公式の3講座を修了

 この3講座の内容を4xGM(=Competitions/Datasets/Notebooks/Discussionの全4カテゴリで最上位のGrandmasterを獲得した人)のAbhishek Thakur氏(『Kaggle Grandmasterに学ぶ 機械学習 実践アプローチ』の原著者)が解説する動画も毎日公開されました(下記のリンク先)。自分が行ったSubmissionよりも高い精度のSubmissionが動画の中で毎回出るので落ち込みますね(苦笑)。英語ですがオススメです。特に演習でつまずいている人は助けになると思います。

図3 YouTube上の「Kaggle's 30 Days of ML」再生リスト 図3 YouTube上の「Kaggle's 30 Days of ML」再生リスト

2. 英語は何とかなる

 ここまでで、講座内容が全て英語であることに不安を覚えた人もいるかもしれません。しかし、もはや機械翻訳の時代ですので心配ご無用です。

 文単位ではDeepL翻訳を使ってください。負い目を感じる必要すらないです(参考:「最近ものすごく優秀な修士就活生が増えている→機械翻訳『DeepL』を巧みに使って論文を書いていた『すごい時代が来たな』 - Togetter」)。

 ページ単位ではChromeの[日本語に翻訳]を実施し、翻訳がおかしいと思うところはDeepL翻訳で翻訳し直すのがオススメです。ただし、公式講座のチュートリアルの本文はiframeというフレーム要素内に含まれているので、そのままでは翻訳できません。フレーム内のページを別タブに表示するには、下記をブックマークレットにして使ってみてください(=ブックマークの名前とURLを登録して、それをクリックして使うだけ)。

Copyright© Digital Advantage Corp. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。