「面白い」ことが絶対条件。GrandmasterとMasterが指南するKaggleの“勝ち方”と“楽しみ方”
AIエンジニアやデータサイエンティストであれば、一度は耳にしたことがあるであろう「Kaggle(カグル)」。世界中から15万人以上が集まる機械学習およびデータ分析のコンペティションで、主催企業がデータおよび分析テーマを提供し、参加者は腕を奮って予測モデルの精度を競い合います。
その最高峰となるのが、GrandmasterやMasterと呼ばれる称号。Masterはゴールドメダル1枚とシルバーメダル2枚が、Grandmasterはゴールドメダル5枚とソロゴールドメダル(個人参加でのゴールドメダル)1枚が、それぞれ取得の条件となります。
今回は、そんなGrandmasterの称号を得て活動をするNVIDIA・小野寺 和樹氏と、Masterとして活動をする日立製作所・棚橋 直哉氏に、Kaggleを楽しみながら活用するためのポイントについて、お話を伺いました。
目次
プロフィール
研究開発グループ 先端AIイノベーションセンタ
Senior Deep Learning Data Scientist
それぞれのKaggleとの出会い
――おふたりともKagglerということで、まずはKaggleとの出会いについて教えてください。
棚橋:はじめてKaggleに触れたのは大学院生の頃です。研究室の同期がやっていて、機械学習が流行っていたタイミングだったこともあり、「Titanic」という有名な問題をネットの解析記事などを参考に触り始めました。その頃はまだモデリングはまだしも、Pythonすら書いたことがなかったのですが、プログラミングが楽しいというのと、データから何かを予測するということにすごく感動を覚えた記憶があります。
そこからしばらく触っていなかったのですが、日立に入社して機械学習関連の研究者になったことをきっかけに再度チャレンジしたいと思い2019年12月頃から参加するようになりました。
――そのときは、どのテーマに参加をされたのですか?
棚橋:「2019 Data Science Bowl」という、ゲームアプリにおけるユーザーの操作ログから、対象のゲームを何回で成功できるかを予測するコンペです。
仕事柄テーブルデータをよく触っているので、慣れているデータタイプだったことが参加の決め手でした。
――次に小野寺さんがKaggleと出会ったきっかけは何だったのでしょうか?
小野寺 : 最初のコンペは金融コンサルの会社にいたときに参加しました。その会社では、新しく入った人はモデリングの練習としてコンペに参加することになっていて、コンピューター分野の国際学会「ACM(Association for Computing Machinery)」による「KDD Cup 2015」に新人チームで参加しました。そこで準優勝したのがKaggleライフの始まりですね。
Kaggleについて知ったのもこの頃で、興味のあるものに少しずつ参加するようになりました。それからは、ほぼ毎日Kaggleをやっていたと思います。
――ほぼ毎日はすごいですね。業務との兼ね合いはどうされていたのですか?
小野寺 : コンペへの参加は基本的には、会社の経営陣のモチベーションに左右されるかなと思います。今お伝えした金融コンサルの会社では、コンペ参加はあくまで新人研修の一貫だったので、それ以降は業務外でコンペに参加していました。今在籍しているNVIDIAでは、コンペに参加することで得られる知見などを会社提供のライブラリへとフィードバックすることがミッションなので、それこそ業務として毎日Kaggleをやっています。
――業務として毎日Kaggle!すごいですね。2015年にKaggleを触り始めて、そこからどのような流れでGrandmasterになられたのでしょう?
小野寺 : 2017年に「Instacart Market Basket Analysis」で準優勝してソロゴールドメダルを獲得したのと、2019年にはスペインのサンタンデール銀行が開催した「SCTP(Santander Customer Transaction Prediction)」で準優勝したことで5つ目の金メダルを手に入れて、Grandmasterに昇格しました。
日立には「Kaggleで得たスキル」を活かす機会が多くある
――おふたりとも、Kaggleのどのようなところに魅力を感じているのでしょうか?
小野寺 : 「攻略」ですね。小さい頃からよくゲームをやっていて、ずっと何かを攻略するのが好きな人間でした。ゲームといっても画面越しのものだけではなくて、例えば幼稚園で流行っていた「◯×ゲーム」というシンプルなゲームでも、最低でも引き分けにもっていける方法を探り当てたりしていました。
――Kaggleもゲームの一環だと。
小野寺 : そうですね。定量的に表すことができる時点でゲームだと思っています。そして、そういうところが自分に合っているなと。「攻略って楽しいな」から始まっている気がします。
――棚橋さんはいかがでしょうか?
棚橋:僕の場合は「楽しみながら勉強」できるところですね。普段見ていないデータに触れるのは、とても楽しいと感じます。例えば「BirdCLEF」というコンペでは環境音に含まれている鳥の種類を分類する鳥の声認識AIを作るものでした。鳥の声データに触れることなんてなかなかないので、純粋に面白いと感じました。
――そもそも、日立社内ではコンペ参加はどのような位置づけなのですか?
棚橋:社内には有志でKagglerが集まるチャンネルがあって、そこで面白そうなコンペや解法の情報交換をしたりしています。
あとは大前提ですが、日立には様々な事業フィールドがあって、それに付随した多様なデータがあるので、データサイエンティストとしては「スキルを活かせる先」がたくさんあることはいいことだなと感じています。
――日立さんは実に様々な事業があるので、データの振り幅もすごそうだなと感じます。ちなみにおふたりは、参加するコンペをどのように決めているのでしょう?
棚橋:触れてみたいデータか、学んだことのない領域か、そしてコンペそのものに勝てそうか。この3軸で判断するようにしています。「勝てそうか」については、過去参加したコンペでの知見を活かせそうかなどを考えたりしますね。
小野寺 : 僕の場合は「面白そうなコンペかどうか」というところですね。面白いと思えないと、手が動かないわけで。興味があることしか選んでいませんね。
大切なのは自分と違う発想の人と組むこと、課題の本質を見極めること
――これまで参加されたコンペの中で特に「面白い」と感じたものやエピソードを教えてください。
小野寺 : さきほど挙げたSCTPは面白かったですよ。コンペが終了するちょうど2週間前くらいにはじめたのですが、参加者が9000人近くもいる大きなコンペで、その中で最初は3000位くらいでした。
当時DeNAという会社にいたのですが、このままじゃまずいということで社内でそのコンペに参加しているメンバーを探すと、3000位台の下のほうにいる人たちを2人発見。「分からない者同士、一緒にやるか」ということで3人でチームを組みました。結果的に3人それぞれが勝つために必要な情報を1つずつ持っていたこともあり、チーム結成から数日で20〜30位まで急上昇。最終的には準優勝することができました。
――すごい追い上げですね!チームを組んでKaggleを進めるときに、何かコツなどはあるのでしょうか?
小野寺 : コツですか…。あまり同じことをやっても意味がないので、全然違う発想の人と組んだ方が、良いスコアが出る傾向はあると思います。SCTPでは、得意領域の違う3人がもつ知識と情報を持ち寄って、検証を繰り返しながらモデルの精度を高めていきました。
――なるほど。棚橋さんはいかがですか?
棚橋:印象的だったコンペは「Rainforest Connection Species Audio Detection」ですね。環境音に含まれる鳥やカエルの声からその種類を分類するモデルの精度を競うコンペです。このコンペに参加したことで、出されている課題の本質を見極めることが大切だと改めて気づくことができました。
――どういうことですか?
棚橋:コンペで与えられていた訓練データが、きれいにラベル付け(アノテーション)されていませんでした。具体的には、明らかに鳴き声が含まれているにも関わらず、ラベル付けされてないデータがあるという課題です。どうしたものか、と悩みながら進めていましたが解決できず結果は銅メダルでした。コンペ終了後、上位チームの解法を読むと、しっかりとその課題に向き合い対応したため、結果的に勝っているということがわかりました。
それまでは思いついたアイデアや勉強したことを単純に試していくことが多かったのですが、課題の本質に気づいて解決していくことが重要だなと、改めて気づけたコンペでした。
――課題の本質に気づく。なるほど。他に、Kaggleで勝つために必要な観点やアクションはありますか?
棚橋:僕も知りたいくらいですが、やはり実験回数は大事ですね。人が10回実験している間に「15回」実験すれば、その分知見が得られてスコアを上げられる可能性が高まります。
あとは、定量的な評価をすることも大事ですね。「これが効くだろう」というアイデアを複数入れて実験すると、精度が向上したとしてもどのアイデアが寄与したかが分からなくなってしまいます。ベースラインを決めて、効く/効かないを判断していくことも重要だと思います。
小野寺 : 今棚橋さんがおっしゃったとおり、回数をやるだけ得だから、言ってしまえば「寝ない」ということが勝つポイントになると思います。
あとは、「これをやっても効かないだろう」と思ってやらなかった手法が、蓋を開けてみたら優勝する手法だった、ということは界隈の人なら1度は経験していると思います。人はどうしても、モチベーションが下がると何もできなくなってしまうので、いかに「自分を騙すか」ですね。
――自分を騙す。今おっしゃったモチベーションの維持・向上は、具体的にどのようにされているのですか?
小野寺 : 自分がやっていない手法に関しては、絶対に効くと思い込むことにしていますね。もちろん優先順位はありますが、この順に効いていくだろうなというものは頭の中にある程度あるので、それを上から順番に試していくという作業です。
あと、どうしても面白くないコンペだと手が動かないので、シンプルに自分が「面白い」と感じるコンペに参加することも大切だと思います。
大事なのは「データの特性を理解するための知識」
――様々な領域のコンペに出場して結果を出していくために、知識面についてはどのようにキャッチアップされているのですか?
小野寺 : 知識というと、大きくはドメイン知識とデータに対する知識があると思っています。前者についてはコンペでは特に必要ないと感じています。例えば医療関係のテーマのコンペの場合、医療知識が必要かというと、そんなことはありません。
一方で後者については、まさに全てのコンペで要求されます。データの特性を理解するための知識というものは、経験を重ねることで徐々に醸成されていくものなのかなと思います。
――データに対する知識とは、具体的にどのようなものなのでしょうか?
小野寺 : データを見て得られる知識ということです。「データの平均はこれくらいで、この辺に重心がある」といった、データを実際に見ないと分からない部分ですね。例えば銀行の審査モデルって、実は地域によって異なるんです。例えば沖縄と北海道を例に取っても、それぞれの地域ごとに産業や職業は全然違っていると思います。だからこそ、一般化できないところがあり、そのデータの特徴を見る必要があるということです。
――なるほど。データと課題に対する「想像力」ということでしょうか?
小野寺 : そうですね。何かデータを見て特徴を作るとなったとき、例えば「こういう行動をしている人がこういう商品を買いやすいんじゃないか」みたいな想像をしないと分析は始まらない。この想像をするという部分について一概には言えないのですが、例えばこれまでにやってきたコンペの解法や他の人のやり方を思い出しながら、少しずつ具体的にイメージできてくるものなのかなと思っています。
――この「想像力」について、棚橋さんはいかがでしょうか?
棚橋:要するに、データを見て仮説を立てる力だと思います。小野寺さんがおっしゃるように昔の解法などを見てイメージを膨らませることもあります。でも、データを細かく見ていくと、想像していたものかどうかは別として、何かしらの傾向は出てくると思うんですよね。
それが「なぜか?」を考えることは、程度の差こそあれ誰でもできることなので、きちんとデータを見るということはそういうことじゃないかなと思います。あとはチームを組むことも他の人の考え方を学ぶきっかけになるため、分析力を深めるには良いかなと思います。
――先知識やスキル、例えばプログラミングに関するものなどは、Kaggleで上位を目指すにはどの程度必要になるのでしょうか?
小野寺 : 高度なプログラミング技術はそれほど必要ないでしょうし、数学の知識もあるに越したことはないのですが、そこまで高度なことは要求されていないと思います。要するにライブラリをうまく使いこなすということなので、自分で改良を加えるという部分で、大学を卒業するくらいの数学の知識があればいいとは思いますよ。
棚橋:そうですね。全く同じ意見で、数学力もドメイン知識も、あってもなくてもいいと思います。ただ、前知識として実際に何が基本的なベースラインとして考えられているのかは、見るようにしていますね。例えば重力波を検知するAIの精度を競うコンペのときは、重力波の論文などを読んで「こういう前処理方法があるんだ」とか「こうやってモデルを作っているんだ」という部分を軽くキャッチアップしていました。それがちゃんと活きたかというと微妙なところではありますが、少なくとも取り組むモチベーションにはなっています。
あとプログラミング技術については、自分が考えたアイデアを実装できるくらいあればいいのかなと思います。考えても実装できなければ意味がないので。もちろん、これもKaggleをやっていく中で身につくところかなとは思います。私も初めは公開されているコードを理解することに必死でしたが、何回もコンペに参加するにつれ慣れていき、自分のアイデアを実装できるようになりました。
Kaggleと違い、現場は問題を作って解決をしていく立場
――今後のおふたりの目標について教えてください。
棚橋:今Kaggle MasterなのでGrandmasterを目指す!と言ったら格好いいのですが、実はそこはあまり狙っていません。単純に参加したいコンペで上位入賞したいと思っています。また、チームでKaggleに取り組むと非常に学びが多いので、多くの方と組んで、知見をどんどん溜めていきたいですね。
業務面で考えても、Kaggleでの成果は日立にも確実にプラスになると思っています。
例えば、今は製造業に関わっていますが、特定のジャンルのデータだけだと視点が凝り固まってしまうと思うので、様々なデータを分析して幅広い知見を持って取り組んでいけるかなと考えています。
小野寺 : 特にこれというものを定めているわけではありませんが、最低でも1年に金メダル3つくらいは獲得したい。コンペの内容にもよると思いますが、それが自分の大前提です。Kaggleでコンスタントにメダルを取るためには、常に最新の技術をキャッチアップする必要があり、すごく難しいことなので。
――ありがとうございます。それでは最後に一言、Qiita Zine読者にお願いします。
小野寺 : コンペに夢中で取り組んでいれば、コンペが終わった後も「もっとよい解法があったんじゃないか」「次はこうやってみよう」と常にコンペを欲している状態になる。だからこそ、知識がどんどん吸収されていくのです。まずは楽しむこと。そしてKaggleに夢中になることが大切だと思います。
棚橋:最初は失敗することが多いと思いますが、失敗を恐れずに学ぶ意欲をもって、Kaggleの魅力に気づいてほしいなと思います。
また日立のデータサイエンティストとしては、Kaggleと違って社会課題やビジネスの課題を解決するために「何が必要か」を掘り下げ、解くべき問題を作る立場。もちろん、そこからその問題を解いていくことになるので、Kaggleで得た幅広い知識と技術で、どんどん貢献をしていきたいと思います。また、そんな働き方を実践したい方とは、ぜひ一緒に働きたいと思っています。
編集後記
今回の取材で何度、「面白い」という言葉を聞いたことか。Kaggleを公私共に楽しんでいるおふたりに質問を投げかけると、高い頻度でこの「面白い」という判断軸が登場してきました。何事にも言えることですが、面白いと感じることに対して人はエネルギーが湧き出て、さらには周りから人も集まってくることになります。Kaggleで上位に食い込むためには、まずは心の底から面白がる。このことを改めて感じる時間となりました。
取材/文:長岡 武司
「Qiita×HITACHI」AI/データ×社会課題解決 コラボレーションサイト公開中!
「Qiita×HITACHI」AI/データ×社会課題解決 コラボレーションサイト公開中!
日立製作所の最新技術情報や取り組み事例などを紹介しています
コラボレーションサイトへ
日立製作所の人とキャリアに関するコンテンツを発信中!
デジタルで社会の課題を解決する日立製作所の人とキャリアを知ることができます
Hitachi’s Digital Careersはこちら