SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

翔泳社の本(AD)

Kaggle Competitions Expertが振り返る、データ分析コンペ初心者が入賞するために必要なこと

  • X ポスト
  • このエントリーをはてなブックマークに追加

 データ分析コンペティションのプラットフォームであるKaggleで入賞し、メダルを獲得するにはどうすればいいのでしょうか。『目指せメダリスト!Kaggle実験管理術』(翔泳社)の著者の1人で、Kaggle Competitions Expertである篠田裕之さんは、本書で自身が機械学習初学者だった頃の取り組み方を振り返っています。篠田さんが挙げる大きな問題とは、当時自分がどうしていたのかを振り返れないこと。それは実験管理がきちんとできていなかったからです。今回は、篠田さんがどのようにしてKaggleにおける実験管理の重要性に気づいていったのかを本書から紹介します。

  • X ポスト
  • このエントリーをはてなブックマークに追加

 本記事は『目指せメダリスト!Kaggle実験管理術 着実にコンペで成果を出すためのノウハウ』(著者:髙橋正憲/篠田裕之)の「CHAPTER 0 初学者がKaggleを始めてメダルを獲るまでの取り組み方の推移」から抜粋したものです。掲載にあたって編集しています。

機械学習初学者の頃のKaggleの取り組み

 筆者(篠田)は大学院ではコンピュータサイエンスが専門であったものの、ソフトウェア開発が中心で、機械学習は独学で社会人になってから学び始めました。初参加したKaggleの"Mercari Price Suggestion Challenge"で銅メダルを獲得することができたものの、その後はなかなかメダルを獲得できない時期が続きました。

 ただし、メダル獲得や順位などの結果は重要ですが、初学者だった時の自分に対して結果よりも大きな問題だと思うことは、当時自分が何をしていたのかを振り返ることができないことです。

 どのような機械学習モデルを用いてどのような処理を行い、それらの過程でどのように精度が更新されていったのか、最終のもの以外はコードもモデルも結果も今や何も残っていません。

 当時、筆者は同じファイルで1つのコードを更新していました。そのためある時点の状態にコードを戻すということが大変困難でした。

 また上記のようなやり方では結果が悪くなった実験はコードに残っていかないため、コンペの途中から何をやったらうまくいくのか、いかないのか自分の中で不明瞭になっていきました。

 その他、データ分析用の処理と学習、予測のコードが混在していたり、関数名や変数名の規則がなく、時間が経つと自分でも処理を理解しづらかったりといったことがありました。

 それゆえ必要に応じて過去の自分のコードをいちいち探してはみるものの、結局見つからずに最初から実装し直すということが頻発しました。このようなことは恥ずかしい限りですし、非常に極端に聞こえるかもしれません。

 しかし、今でもこれらの問題の対応の仕方は試行錯誤中です。

実験管理方法の推移

 何度かのKaggleへの参加を経て、コードのバージョン管理および実験ごとの様々な結果をテキストファイルで記録・管理し始めました。

 ただ、当時は実験管理ツールなどは使用しておらず、実行ファイルで出力されたlossの推移などのログをすべて手動でメモ帳に記載していました。当然ですが非常に手間がかかりました。それでも、ようやくKaggleの取り組み方について自分なりのスタイルができ始めたことで、各参加コンペにおいて最終順位が上がり始め1年間で4枚の銀メダルを獲得しました。以降の取り組みは、今でも振り返ることが可能です。

 その後、徐々に実験管理ツールをメモ帳からスプレッドシート、さらにNotionに移行しました(図1)。これは好みによるところだと思いますが、個人的には非常に実験管理が楽になりました。

図1 Notionでの実験管理例
図1 Notionでの実験管理例

Kaggleコンペ参加のハードル

 これまで様々な種類のKaggleコンペに参加してきて徐々に機械学習やKaggleに慣れてきたものの、数々の壁に直面していました。

 まずは入口のところでコンペごとの目的やデータ内容など、概要を理解することに苦労していました。これは、英語の言語ハードル、医療系や宇宙系などコンペごとの専門知識によるドメインハードル、評価指標など機械学習ハードルの3つがあると思います。特に各コンペの背景となる専門知識は、いつも調査に時間を要し、コンペ選びに苦労していました。

 次に、ローカル環境とKaggle環境の違いによって発生するバグを含め、様々な種類のエラーに悩まされていました。あるエラーを解決すると次のエラーが出ることがあったり、そもそも明確なエラーメッセージが出ず、出力結果がおかしいということもあったりします。

 それらをWebで類似事例を検索しながら解消していくことはかなりの時間を要しました。

 今では生成AIなどを駆使することでこれらの問題はかなり解消されやすくなっているのではないでしょうか。この詳細は本書『目指せメダリスト!Kaggle実験管理術』のChapter3にて紹介します。

チームでの実験管理

 筆者はこれまで33個のKaggleコンペに参加してきました。その中で24コンペがソロでの参加でした。これは特にこだわりがあったわけではなく、単純にKagglerの知り合いがいなかったこともあり、チームマージのお誘いを躊躇していたためです。

 それでも最近は徐々にチームでの参加も増えてきました。チームを組む相手は各コンペでその時点で近い順位にいる方が多く、日本の方か海外の方かは気にしません。最近は翻訳ツールが便利ですし、Kaggleをやる上でのコミュニケーションで困ることはないからです。

 言うまでもないことですが、チームで参加することには様々なメリットがあります。まずは同じ問題に対する他の人のアプローチをコンペ中に知ることができるのは大きなアドバンテージとなるだけではなく、学習という意味でも大変有益です。

 KaggleにおいてDiscussionを読まない方はいないと思いますが、チームでもう1つDiscussionを手に入れることができる感覚があります。

 また、筆者の場合はチームへの共有(図2)やチームメンバーのアイデアを取り入れることを通して、自分のコードやパイプライン、実験管理の仕方を見直すきっかけになっています。

図2 Slack上でのチームメンバーとのやり取りの例
図2 Slack上でのチームメンバーとのやり取りの例

Kaggleを通して学んだ実験管理の重要性

 ここまで、筆者自身のKaggleの取り組みの推移を紹介しました。

 その上で筆者自身が考える実験管理とは、ある仮説があり、その仮説に基づいた処理があり、その処理を加えることで加える前と比較してどのようなアウトプットの変化が起きたかを考察する、その一連の流れを適切に管理することだと思います。つまり「何を考えて」「どのような処理を」「どのようにコーディングして」「どのような結果になって」「その結果から何を考察したか」を整理することです。

 上記は「TODO・仮説の管理」「コード・モデルの管理」「出力結果の管理」と言えるかもしれません。これは、精度が上がる実験だけではなく下がるものも重要ということです。

 Kaggleコンペの上位解法を見た際に、「こんなアイデアは思いつかなかった」ということもあれば「自分もこのアプローチを試したのに全然うまくいかなかった」ということもあるのではないでしょうか。精度が下がった実験は上がった実験と比較して結果を雑に扱いがちかもしれません。

 しかし本書の執筆を通じて筆者がKaggle Competitions Grandmaster/Masterの方々から学んだことの1つは、なぜ精度が下がったのか、下がることに仮説・原因は考えられるか、それは当初の仮説と矛盾しないか、などを丁寧に考察していく思考とコーディングの粘り強さでした。

 しかしそれらの実験結果は、都度メモを取るには手間がかかります。認知しやすいように整理する必要もありますし、振り返りやすいように検索性を高める必要もあるでしょう。

 そこで本書では実験管理に便利ないくつかのツール・ノウハウを紹介していきます。

Kaggleにおける実験管理の全体像

 このように、自身の経験を通して実験管理の重要性を痛感してきたわけですが、改めてKaggleにおける実験管理を全体像として捉え直すと、その重要性はより明確になります。

 Kaggleでは、コンペに参加してから「コンペ理解 → EDA(Exploratory Data Analysis、探索的データ分析)→ ベースライン作成 → 提出 → 改善」という一連の流れを行います。筆者自身のKaggleにおける取り組みをこの流れに沿って整理すると図3のようになり、各フェーズで何を管理し、どのように調査し、どのようにドキュメントとして整備すべきかという実験管理の全体像が見えてきました。

図3 Kaggleにおける実験管理の全体像
図3 Kaggleにおける実験管理の全体像

 また、Kaggleにおける実験管理は、コンペの開始から終了までで完結するものではないのかもしれません。まず、コンペに参加するたびに調べたことや検証したこと、うまくいったアイデアなど経験が蓄積されドキュメントとして残ります。コンペ終了後には、上位解法からの振り返りやLate Submissionでの検証を行い、次回の類似コンペで活用できるようにコードを整理します。

 この振り返りを繰り返すことで、新しいコンペに参加する際には、ドキュメントツールには過去の知見が蓄積され、コード管理ツールには再利用可能なコードや実験管理のパイプラインが構築されているはずです。

 つまり、Kaggleにおける実験管理の全体像は、単にコンペ期間中の管理に留まりません。コンペ参加時点ですでに過去の蓄積による差が生じていることもあり、その差を埋めるためにはコンペが終わったあとの取り組みも重要になるかもしれません。

本書の構成と活用の仕方

 Chapter1ではまず実験管理の考え方を紹介するとともに、コードの整理やディレクトリ構成の例などについて述べていきます。

 Chapter2では具体的な実験管理ツールとその使用方法を紹介します。

 Chapter3では近年重要になっている生成AIの活用例について紹介します。

 Chapter4では過去のコンペを題材として、Chapter1~3で紹介したことについてより詳細に実践的な流れに基づいて紹介します。

 Chapter5ではチームでの実験管理の方法について紹介します。

 Chapter6ではKaggle Competitions Grandmaster/Masterの方々にそれぞれの実験管理方法についてインタビューしています。

 各Chapterは独立しているため、読者の方の状況やスキル、特に気になるトピックなど、どのChapterから読んでいただいても問題ありません。

 ツールなどについては2025年1月執筆時点の情報に基づいています。

 実践的なノウハウを学んでいただくとともに、ぜひその根底にある考え方を習得いただくとツールが進化したり変わったりしても応用できると思います。

 また、Chapter6の上級者のインタビューパートはご自身のスキルの向上とともに何度も読み返すことをお勧めいたします。

 それでは本書で具体的に実験管理を学んでいきましょう。

目指せメダリスト!Kaggle実験管理術 着実にコンペで成果を出すためのノウハウ
 

Amazon  SEshop  その他

 
目指せメダリスト!Kaggle実験管理術
着実にコンペで成果を出すためのノウハウ
 

著者:髙橋正憲、篠田裕之
発売日:2025年3月10日(月)
定価:3,300円(本体3,000円+税10%)

本書について

Kaggleのコンペでメダル(銀メダル以上)を獲得したい方に向けて、モデルの構築における実験管理方法、生成AIを利用した情報管理方法などを解説します。

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加

【AD】本記事の内容は記事掲載開始時点のものです 企画・制作 株式会社翔泳社

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/21110 2025/03/17 07:00

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング