Kaggle Masterへの道：前編 ～国内コンペ参戦からKaggle初参戦まで～

# はじめに

こんにちは。(株) 日立製作所の [Lumada Data Science Lab.](https://www.hitachi.co.jp/products/it/lumada/about/ai/ldsl/index.html) の諸橋 政幸です。

2021年9月にKaggleコンペ「MLB Player Digital Engagement Forecasting」にて金メダルを獲得し、念願の「Kaggle Master」に昇格しました！
振り返りも兼ねて、これまでの経緯や取り組み内容をご紹介します。

少し長くなりそうなので、前後編に分けて書きたいと思います。
前編では、分析コンペに興味を持ったきっかけからKaggle初メダルまでと、この取り組みがスキルアップに役立ったのか、についてご紹介します。
後編では、金メダル獲得に向けて参加したコンペや取り組みを紹介予定です。

[追記] 後編は下記リンクにありますので是非読んでみてください。
⇒ **[Kaggle Masterへの道：後編 ～金メダルまでの軌跡とMLBコンペのソリューション～](https://qiita.com/m-morohashi/items/47b2e812689f9b6adaf7)**

# まずは自己紹介

私は日立製作所で顧客課題をデータ分析を使って解決する業務を行っています。分析コンサルみたいな感じです。分析プロジェクトの取り纏めとしてお客さんと打合せしたり、Pythonを使ったデータ加工やモデリングもやっています。また、分析ナレッジの蓄積や活用推進も担当しています。

分析コンペ歴としては5年くらい。最初の2年はSIGNATEコンペのみ、Kaggleは3年くらい前から。
金メダルがなかなか取れず苦労しましたが、先日やっとゲット。嬉しくて何度もプロフィール画面を眺めてますｗ

<img width=800 alt="image01.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2323189/04b6a1b2-5fc9-c1f0-43d7-f3052b70d859.png">

# そもそもKaggleとは

Kaggle（カグル）とは、世界最大のデータサイエンスコンペティションプラットフォームです。
企業や政府からコンペ形式で課題が提示され、参加者が課題を解決するためのモデルを構築し、その出来を競います。ランキング形式で発表され、成績に応じて金メダル／銀メダル／銅メダルが授与されます。

メダルの取得条件は以下のとおりで、参加チーム数によって授与数が変動します。(よくある誤解ですが1/2/3位が金/銀/銅ではありません。)

<img width=700 alt="image02.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2323189/81d4331f-34a7-0e5f-14ff-d347b818710b.png">

【出展】[Kaggle: Your Machine Learning and Data Science Community](https://www.kaggle.com/progression)（日本語訳しました）

コンペティションのMasterになるための条件は次のとおりです。

|             | 条件                                         |
| ----------- | -------------------------------------------- |
| Grandmaster | 金メダル５個（うちソロ１個） |
| Master  | 金メダル１個、銀メダル２個   |
| Expert      | 銅メダル２個                           |
| Contributor | プロフィールの完成や1stサブミットの実施など      |
| Novice      | Kaggleに登録                                 |

# コンペに興味を持ったきっかけ

2013年にビッグデータの流行りをきっかけに新部署が設立され、そこに異動することになりました。
大学は理学部の物理学専攻でしたし、就職してからも分析とは関係ない業務をしていたので、全くの素人からのスタートでした。

まずは基礎知識を得るために、統計学、機械学習、データマイニング、ディープラーニングなどの本を読み漁りました。当時はいまほど専門書がなかったこともあり、本屋にあるものを片っ端から買って読んでました。

そんなとき検索していて「分析コンペ」なるものの存在を知りました。
書籍を使った勉強に限界を感じていたこともあり、実力をはかるためにも参加してみました。

ちなみに私の場合、分析コンペは趣味として参加していて業務時間中にはやっていません。

# コンペ初参加！ 魅力にハマる

はじめはSIGNATE（シグネイト）のコンペに参加しました。SIGNATEは日本最大のデータ分析コンペティションサイトです。

- **[[SIGNATE] The 1st Big Data Analysis Contest](https://signate.jp/competitions/13)**
    - コンペ概要: 気象データ等から全国の主要観光地14都市の観光宿泊者数予測を行う。
    - 順位： 33位／122チーム
    - scikit-learnを使って重回帰やランダムフォレストでモデリング。

当時、機械学習に関しては業務でも少ししか使っていなかったので、色々な意味で手探りで参加したコンペでした。
結果はともかく、予測モデルを作るために沢山調べたり、特徴量を色々考えて作成したりと、試行錯誤すること自体が楽しかった記憶があります。また、順位がリアルタイムで出ることがとにかく刺激的でした。

# 楽しくてとにかくコンペに出まくる

コンペ初参戦後も、コンスタントにコンペに参加しました。
特にSIGNATEのコンペには片っ端から参加しました。色んなデータに触ってみたかったというのが動機です。
順位は気にせず、コンペが出たらとにかくサブミットを目標に取り組んでました。これを繰り返したおかげで、ベースライン作成までの時間はかなり早くなったと思います。
そして、今数えたらSIGNATEだけで34個のコンペに出ていて、金銀銅のメダル合計が22個でしたｗ

印象に残っているコンペをいくつかご紹介します。

- **[[SIGNATE] 【(2)料理分類部門】人工知能技術戦略会議主催 第1回AIチャレンジコンテスト](https://signate.jp/competitions/33)**
    - コンペ概要: 料理画像から料理名を予測するコンペ。
    - 順位： 23位／136チーム
    - コンペ参加2個目。ディープラーニングの魅力にハマったコンペ。
    - このコンペのために30万円出してGPU付きのPCを購入。epochごとに賢くなっていく過程が面白くてひたすらGPUを回し続けました。すぐに元を取った気がします。ただ電気代がすごいことに。

- **[[SIGNATE] リンクバル イベントレコメンドエンジン作成](https://signate.jp/competitions/45)**
    - コンペ概要: 街コンサイトの閲覧/クリック等の履歴から、その会員に合ったイベントを予測するタスク。
    - 順位： 34位／605チーム
    - はじめてのレコメンドコンペ。何もわからずに終了。。ある意味衝撃的なコンペでした。
    - 入賞者の報告会で、ランキング学習とかデータ量に対する対処法とかすごい学びになった。

- **[[SIGNATE] ステアラボ メテオサーチチャレンジ](https://signate.jp/competitions/63)**
    - コンペ概要: 3秒の動画内に流星が現れるかどうかの二値分類を行なうタスク。
    - 順位： 6位／555チーム
    - トップ10に入ったことがなかったのですごい嬉しかった。
    - ただ、入賞者の報告会を聞きに行ったらレベルが違い過ぎてビックリ。むしろマグレでも入賞しなくてよかったと思った。
    - 1位の人のプレゼン資料が漫画仕立てなのも面白かった。

- **[[SIGNATE] 飯田産業 土地の販売価格の推定](https://signate.jp/competitions/162)**
    - コンペ概要: 土地の販売価格を予測するタスク。
    - 順位： 38位／1624チーム
    - はじめて100回以上サブミットしたコンペ。タスクがシンプルで特徴量も作りやすい良コンペだった。
    - 結果は振るわなかったが、コンペ序盤から最終日までやりきったのははじめてでした。

# そしてついにKaggle初参戦！

2018年8月、Kaggleにも参戦しました。
英語だし、世界を相手に戦えるほどではないと思ってましたが、勇気を出して参加してみました。
ちょうどそのとき仕事で似たような案件をやっていたこともあり、Home Creditコンペを選びました。

- **[[Kaggle] Home Credit Default Risk](https://www.kaggle.com/c/home-credit-default-risk/overview/timeline)**
    - コンペ概要: 住宅ローンのデフォルトリスクを予測するタスク。
    - 順位： 132位／7,176チーム
    - Kaggleの本格参戦1個目。国内コンペと違って参加者が多く、スコアの密集具合にビックリ。
    - Discussionや公開Notebookなるものの存在を知る。すごい勉強になる。
    - 今まで独学で手探りだったが、このコンペで基礎となるスクリプトの組み方を知る。

夏休みと被っていたこともあり、夏休みの時間をすべてここに投入しました。ある意味充実した夏休みでしたｗ
そして、なんと初参戦で銀メダルをゲット。すごいうれしかったのを今でも覚えてます。

これがKaggle Masterへの第一歩でした。

# その後もKaggleに拘らずいろいろなコンペに出る。入賞も経験。

面白そうなタスクや、あまりやったことないタスクを選んで出てました。その中で入賞して賞金を獲得したこともありました。

- **[[SIGNATE] AI創薬： 薬物動態パラメータ予測](https://signate.jp/competitions/168)**
    - コンペ概要: 化合物の情報とそのスクリーニング試験における実験データから、薬物動態パラメータを予測するタスク。
    - 順位： 1位／729チーム
    - なんとまさかの1位。最終日のリーダーボード更新時にこれだけドキドキしたのははじめて。吐きそうなくらい緊張。
    - このコンペではじめてチームで参加した。チームメンバの紹介は後編で。
    - チーム参加だとソロでは得られない刺激や成長があることを知る。この経験はコンペ活動の転機になった。このコンペ以降、順位や入賞を意識しだす。

- **[[Nishika] 「Brandearオークション！」 レコメンドエンジン開発](https://www.nishika.com/competitions/2/summary)**
    - コンペ概要: 会員の過去1年の行動履歴データから、会員が欲しい商品を予測するタスク。
    - 順位： 2位／78チーム
    - ソロでの初入賞。2連続での入賞で賞金でほくほく。
    - アクセス履歴データだったので、データ量が多く、データ加工もモデリングも大変だった。
    - 大胆なサンプリングや、バリデーション設計・特徴量作成など色々なアイデアが見事あたりスコアアップにつながった。

- **[[atmaCup] #8 atmaCup](https://www.guruguru.science/competitions/13)**
    - コンペ概要: ゲームの情報を使ってゲームの売上を予測するタスク。
    - 順位： 4位／318チーム (敢闘賞3位)
    - atmaCupは短期間(1週間程)の国内コンペサイト。かなり参加者も多くレベルも高い。ディスカッションが盛り上がっていて非常にためになる。
    - 短期間ならではの面白さがある。
    - 敢闘賞だけど物理メダルをもらってすごい嬉しかった。(敢闘賞はチームコスト4以下を対象した賞)

<img width=400 alt="image03.JPG" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2323189/b7f6a92b-46e7-73e1-d766-e51078652499.jpeg">

# コンペを通じてかなりのスキルアップを体感

「分析コンペは業務に役立つのか」「スキルアップになるのか」というのは皆さん興味があるのではないかと思います。
結論から言うと「めちゃくちゃ役に立ちます」。やってなかったら今の自分はないと思います。

たとえば機械学習モデルの導入プロセスを考えると、Kaggleのカバー範囲は「分析設計」「データ前処理」「特徴量生成」「モデリング」部分だけになります。一見狭いように思いますが、ここはまだ解き方が成熟しておらず、人による差が顕著に出ます。また、ここの良し悪しがその後を大きく左右するため非常に重要なタスクです。

<img width=800 alt="image04.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2323189/08a8039a-4830-8b06-03a4-d878664b2936.png">

そして、コンペに参加することで以下のようなスキルを磨くことが出来ます。

- 分析作業が早くなる
- 最新の技術や知識をキャッチアップできる
- 解ける問題と解けない問題が判断できるようになる
- リークに気付けるようになる

ただ、上記のカバー範囲でも示したように、一部であることは否めません。また、実業務では「教師あり機械学習」で解けるものばかりではありません。教師が存在しない場合や、非定型の分析も多数あります。また、分析案件を推進するためには、プロマネ力やコミュニケーション力なども必要なスキルです。

とは言え、これらを備えた上でなら、Kaggleで鍛えたスキルは大きな差別化ポイントとなりえます。
また、Kaggleカバー範囲で得たスキルは、その前後のプロセスにも生かすことができます。
たとえば、解き方が分かるということは、解けない問題もある程度分かりますし、機械学習の限界を知っていれば、現場の問題を見たときに向かうべき方向を正しく示唆することが出来ます。

# コンペって楽しいですよね

最後まで読んでいただき、ありがとうございました。前編はここまでにします。
少しでも分析コンペに興味を持っていただけたでしょうか。
色々書きましたが、とにかく「楽しい」という感想に尽きます。

後編では、金メダルに向けてチャレンジしたコンペについて取り組み内容や、一緒に組んでいるチームメンバについて紹介する予定です。

[追記] 後編は下記リンクにありますので是非読んでみてください。
⇒ **[Kaggle Masterへの道：後編 ～金メダルまでの軌跡とMLBコンペのソリューション～](https://qiita.com/m-morohashi/items/47b2e812689f9b6adaf7)**