Kaggleってやっぱり楽しいね! Kaggle本の著者がその面白さや取り組み方を語った特別対談|翔泳社の本

Kaggleってやっぱり楽しいね! Kaggle本の著者がその面白さや取り組み方を語った特別対談

2020/11/10 07:00

 データ分析コンペのKaggleが日本でも盛り上がる中、関連書籍も続々と発売されています。CodeZineを運営する翔泳社でも『Pythonで動かして学ぶ!Kaggleデータ分析入門』を発売。今回、著者の篠田裕之さんと人気Kaggle本『PythonではじめるKaggleスタートブック』の著者の1人である村田秀樹さんによる対談の場を設け、書籍のポイントやKaggleの面白さ、取り組み方について語っていただきました。

Kaggleの書籍を執筆した狙い

司会 本日はよろしくお願いいたします。篠田さんと村田さんにはKaggleの書籍を執筆した感想、Kaggleのコンペの楽しさ、そして今後Kaggleで挑戦してみたいことをお話しいただければと思います。

篠田 よろしくお願いします。最初に私から、村田さんと石原さんでご執筆された『PythonではじめるKaggleスタートブック』(2020、講談社)についてお聞きします。お二人はレベル的にも中級者以上向けの本もご執筆できると思うのですが、入門者向けにした理由についてお聞かせください。

篠田裕之さん
篠田裕之さん:『Pythonで動かして学ぶ!Kaggleデータ分析入門』著者。

村田 初学者の方がいきなり「英語で機械学習を学ぶ」ということは、かなり大変ですよね。なので、そこの需要が大きいと考えており、自分が初学者の頃に大変だったその点を解決する情報を発信したいと思っていました。

 そこで、『Kaggleのチュートリアル』という同人誌を出版したり、Kaggle初学者向けの講習を行っていたりしていたところ、縁があり入門者を対象読者とした『PythonではじめるKaggleスタートブック』を執筆することとなりました。

村田秀樹さん
村田秀樹さん:『PythonではじめるKaggleスタートブック』共著者。

篠田 今回、私が執筆した『Pythonで動かして学ぶ!Kaggleデータ分析入門』も、これからデータ分析をはじめたいと思っている初学者向けの内容になっています。「これからはデータ分析が大事だな」と思いつつも、まだ実際に学んでいない方を対象にしています。具体的には学生の中でもデータ分析を専門にされてない方や、弊社でいうとデータ分析部門ではない、例えば営業職の方です。書籍の表紙にも「メダル未満!」と書かれていますが、「Kaggleでメダルを取れるレベルにある人は対象外です」という意図です。

 ですので、すでにKaggleでコンペをはじめている方、Kaggleのコンペで中位以上に入れる方にとっては、物足りない内容かもしれません。初学者向けにした理由はいろいろあります。すでに刊行されている本には、機械学習にある程度精通している方向けの専門書はありますが、私も村田さん同様、初学者向けの本の需要は結構あると思ったもののまだ足りていないのかなと思っていました。石原さん・村田さんの『PythonではじめるKaggleスタートブック』と同じか、さらにその手前ぐらいの方を狙った位置づけの本だと思います。

村田 なるほど。対象の読者としては『PythonではじめるKaggleスタートブック』よりもさらに手前のところを意識して書かれたのですね。

篠田 そうですね。執筆する前に『PythonではじめるKaggleスタートブック』も読ませていただき「記載されていないことで初学者にとって役に立つ内容って他に何があるんだろう」と考えました。

 あと私自身はまだKaggle Expertなんです。なので「Kaggle Masterとしていろんなことを教えます」というよりも、私自身が社内外のKaggle Masterの方々に取材して、「こういうことを書いたほうがいいんじゃないか」ということを教えてもらったり、内容のチェックをしてもらったりしました。実際、書籍の中ではKaggle Masterの方との対談や、村田さんのKaggle Days Tokyo 2019のプレゼンテーションを紹介したパートがあります。

Kaggleに関する情報発信について

司会 Kaggleに関して何か情報発信をしていますか?

篠田 村田さんはKaggle初学者向けやKaggleのハウツー系の情報発信をかなりなさっていますよね。もともとKaggleをはじめる前(2年半前)から情報発信をしていたのですか? それともKaggleをはじめたから情報発信をはじめたのでしょうか?

村田 Kaggleをはじめる前は、情報発信をあまりしていないですね。

篠田 いろんなメディアでお話をされていて、情報発信にとても積極的ですよね。

村田 自分の勉強のためになるということや、自分が発信したことを見てもらった方と知り合えるなど、メリットを多く感じており、情報発信は多くするように心がけています。

篠田 『PythonではじめるKaggleスタートブック』の執筆も、Kaggle本を執筆していく中で学ぶ、という意味合いもあったのでしょうか。

村田 共著者やレビューアーの方とも多くのことを議論しながら書いたので、基本的なことや普段気にかけないようなことの理解も深まるなど、とても良い学びになりました。

篠田 村田さんは財務省出身でしたよね。

村田 もともと税務署で働く職種で入り、その後財務省に数年勤めていました。

篠田 データ分析を行う部署だったのでしょうか。

村田 セキュリティー関連やIT予算の取りまとめなどの仕事をしていました。

篠田 プログラミングはされていたのですか?

村田 ほとんどゼロです。独学で学び、そのあとに独立しました。

篠田 どのように機械学習を勉強されていたのですか?

村田 connpass(コンパス)というエンジニア向けのIT勉強会支援プラットフォームで機械学習の勉強会を週に一度の頻度で開催し、勉強していました。

篠田 ご自身で勉強会を主催されたのですか?

村田 最初は主催じゃなかったのですが、数カ月したらなぜか主催になってて(笑)。

篠田 すごすぎる!

村田 本を輪読しつつ議論とか発表するみたいな感じでした。そのときはKaggleに関する勉強会ではなかったのですが、機械学習を仲間と学べたのは良かったと思いますね。

篠田 なるほど。そのときは具体的な本をテーマに輪読しつつ議論していたのですね。

村田 そうですね。週1の開催だったので、2~3カ月で1冊を読むペースで開催していましたね。

篠田 実際にそのときに読まれていた本は、ご自身で書かれた『PythonではじめるKaggleスタートブック』に比べるとかなり専門的な内容だったのでしょうか?

村田 そういった内容の本もありました。

篠田 なるほど。今回出版する『Pythonで動かして学ぶ!Kaggleデータ分析入門』や村田さんと石原さんで書かれた『PythonではじめるKaggleスタートブック』を読んだあとに、そうした専門書を読むことは良さそうですね。

 あと、1人で勉強することに比べて、コミュニティーで勉強するのはいいですよね。

村田 そう思いますね。1人だと継続が難しかったりするので、一緒に学ぶ仲間がいるというのはとても良いと思います。

Kaggleの面白さについて

司会 Kaggleの面白さって何でしょうか。

篠田 私はKaggleのコンペに参加しているときに、Twitterで自分の参加しているコンペに関してつぶやいてる人をフォローします。例えば少し前までHaliteコンペというシミュレーションコンペに参加していたのですが、そのときはHaliteに関してつぶやいてる人をバーっとフォローして、もうタイムラインをHalite一色にしていました。

「みんなここで詰まっているな」「この人が大きな進捗を出したな」ということを見ていると、「今日はもう寝ようと思ったけど、submitするまで寝れない」という気持ちになります。そういうことがすごい楽しいですね。

村田 Twitterで同じコンペをしている人を見ると励みにもなるし、楽しいですよね。

篠田 もともとKaggle自体にDiscussionやNotebooksのコミュニティー機能がありますが、日本のコミュニティーとしてSlackやTwitterで盛り上がっているのを見るだけでも、かなりテンションが上がりますね。

村田 ホントそう思いますね。

篠田 村田さんはKaggleで取り組むコンペってどのように決めていますか?

村田 テーブルデータのコンペが面白いと思っており、テーブルデータのコンペは全部やろうかなと思っています。あとは画像とか強化学習系も、時間があればやりたいなと思っています。やっぱり金メダルを取りたいので、力を入れるのは自分が上位に入れそうなコンペですが、それ以外にも、やり込み要素あるコンペやひねくれたコンペも好きですね。

『Pythonで動かして学ぶ!Kaggleデータ分析入門』で寄稿した(通称)地震コンペもかなり特殊ですね。また、この前に参加したOSICコンペもかなり特殊だと思っています。そうした「ちょっと一癖あるコンペ」も面白いなと思って参加しますね。

篠田 ご自身が上位にいけそうなコンペの手触り感みたいなものって何かありますか? データの特徴や、コンペの題材でわかったりするものでしょうか? 「あ! このコンペはメダルを取れるんじゃないかな」と感じることはあるのでしょうか?

村田 学習データと検証データの作り方(validation)に工夫しないといけないようなコンペでしょうか。例えば2020年1月に参加した2019 Data Science Bowlコンペです。このコンペのトレーニングデータ、テストデータの作りがかなり特殊で、学習時に検証データをどのように作るかが上位に入るためのキーとなりました。Discussionでも有志の人が、「このコンペは特殊なので気をつけよう」と共有してくれるのですが、みんながそこを頑張れるわけではないので、そういうコンペは、そこで差がつきやすく上位に入りやすいと思います。

篠田 そこはとても知りたいところですね。直近でいうとM5コンペで激死したので(笑)。

村田 私もです(笑)。

篠田 M5コンペもディスカッションで注意したほうが良いといわれていたコンペですよね。具体的にはウォルマートの5月ぐらいまでの販売データを元に6月の販売数を予測するものでしたが、全然傾向が違う感じでしたね。

 Discussionで「オーバーフィットしすぎるとアウト」と書かれていたものの、実はシルバーメダル上位を狙えるsubmitが手元にあったんですけど、それをどうしても選択できなかったということがありました。Privateで上位にいた方はvalidationやオーバーフィットを避けるための工夫を当然していて、自分の力量不足を痛感しました。

 石原さん・村田さんの『PythonではじめるKaggleスタートブック』にも書かれていましたけど、Trust CVって、やはり経験がいりますよね。「いや、でもこれ、ちょっと怖いな」みたいな。しかもM5コンペは最終submitが1つしか選べなかったんですよね。

村田 そうなんですよね。やっぱり1submitしか選べないっていうのは……。

篠田 とてもリスキーだなと思いました。Public Leaderboardで上位のものが本当にPrivateデータでも良いスコアになるのかを判断するには、経験とスキルが必要だと感じます。先ほど村田さんのお話に出てきたvalidationに工夫するという点は、私自身も今後学んでいきたいところですね。

 最近だとコロナコンペですね。実は村田さんも参加していると思ってチラチラと順位見てたんですけど、私は結局ブロンズメダルでした。validationをいろいろ試しましたが、結局ベストな方法はわからずじまいでした。

村田 ああいうコンペは本当に難しいですよね。どうvalidationを作ったらいいか悩ましいですし、データ自体もドメイン的になじみがなく知らないことばかりで難しいですし。

篠田 Discussionで、他の方の視点なり考え方をかなり読んでいました。そのとき、Kaggleはコンペプラットフォームでありつつ学習プラットフォームでもあると改めて感じました。

現在の仕事とKaggleの関係について

司会 今のお仕事の中でKaggleとリンクする部分はありますか?

篠田 村田さんは現在、DMP関連の部署にいるのですか。それともメディアのプランニングの部署になるのでしょうか?

村田 私は現在の会社に今年の6月に入社しました。クリエーティブ領域を扱う、アドバンストクリエーティブセンターという部署にいます。現在は、クリエーティブのCTR予測などを行っています。

篠田 村田さんのほうがかなり直接的にKaggleの経験が活きてくる部分も多いかなと思ってお聞きしました。

 私自身はテレビの視聴ログやDMPのデータを使って、テレビコンテンツの企画や、観光案件の施策立案のための分析を行うことが多いです。Kaggleのようにギリギリの精度が求められるというものではなく、データからインサイトを探るという仕事が多いです。

 ではKaggleと実務の距離が離れているかというとそうでもありません。実務ではEDA(探索的データ解析)は必ず行います。Kaggleでのデータ探索経験が、生かせています。

 また、与えられたデータを分析して一定レベルの予測を行うベースラインをスピーディーに作るスキルはKaggleを通して向上したと思っています。実務の場合は、ハードなスケジュールで行うこともあるので、その経験が役立ちます。営業の方や得意先の方に、とにかく手早くデータの概要をシェアし、そこから詳細を詰めていくことは多いですね。

 弊社にもKaggle Masterの方やデータ分析専門の方がいます。広告会社でも「Kaggle Master」「データ分析者」の方々が多方面で活躍できるような環境になりつつあると思います。村田さんのいる部署でしたら、もっとKaggleが仕事に直結しますよね。Kaggleで活躍されている方が羽ばたけるフィールドのように思います。

村田 私が今やっている仕事はKaggleと似通った点もあると思います。Kaggleで過去に参加したコンペのコードを、使い回すだけである程度の精度を出せたりすることもあります。

Kaggleの登場が与えた影響

司会 Kaggleの登場によりデータ分析の初学者にとって、学びやすい環境になったのでしょうか?

篠田 現在はKaggle関連の情報も格段に増えて、Kaggle関連の本も多くなり、Kaggleが盛り上がってきていると感じます。数年前に比べると、これからKaggleに挑戦しようと思っている方、データ分析の勉強をしようと思っている方にとってはかなり充実した環境かと思います。

村田 本当に手をつけやすい環境になったと思います。

『Pythonで動かして学ぶ!Kaggleデータ分析入門』を読んだあとに取り組むこと

司会 最後に初学者が次のステップに行うことを教えてください。

篠田 村田さんの本や私の本を読んだ方が「その次に何を学んだらいいですか」と聞かれたら何て言いますか。もういきなり「実コンペやってみなよ」って言いますか?

村田 終了まで2、3週間くらいのコンペに思い切って飛び込んでみて、右も左もわからなくてもいいからやってみるのが、経験を積むにはいい気がしますね。

篠田 残り期間が少なく、結構Discussionが出ているコンペでしょうか?

村田 DiscussionとNotebooksが多く出ているコンペがいいと思います。よさそうなNotebookをコピーして、内容を理解し、そこに自分の手法を1つ2つ足すと、それだけで自分のモデルになります。精度を上げるチャレンジを続ければ、順位発表まで楽しめますね。

篠田 コンペに参加すると、メダルが取れないなど納得いく順位じゃなかったとしても、上位の解法を読んだときの「悔しさ」「納得感」って全然違いますよね。コンペに参加せずに斜めな感じで「まあこういうことをやるよね」みたいな気持ちで見るのと全然違うと思います。

村田 やっぱり参加してこそ、コンペ後の学びもまた深まると思います。

篠田 確かに。

村田 コンペ中にすべきことを考えるのは難しいですよね。参加せずにコンペが終わったあとに上位の解法を見ると、「当然、それは試すよね」と思うのですが、実際にコンペ参加中は、そう簡単ではないので。

篠田 他の人のコンペ中の体験、コンペ中の気持ちの揺れみたいなことも、非常に気になりますね。私自身、寝る前にsubmitして朝起きてLeaderboardを見て順位がどうなっているかを確認して、一喜一憂することがあります。そこがKaggleの楽しいところだなと思っています。頭の中で常にKaggleのことを考えているドキドキする感じを初学者の方にも味わってほしいですね。

村田 確かに(笑)。

篠田 私の本にも書きましたが、TitanicコンペやHouse Pricesコンペは、正解データが公開されています。だから、「正解データのあるコンペを固執してやることに意味はない」と思う方もいるかもしれません。しかしこれらのチュートリアルコンペでまずは自分でデータ分析して予測をすることを繰り返す中で、少しずつ順位を上げ、成長実感を得ることはとても楽しいと思います。こういったことは普段の実務ではなかなか難しいのではないでしょうか。

 Kaggleを通して、「自分はまだこういう部分が足りてない」という点がわかり、次の成長のために何を学ばなければいけないかがわかると思います。

村田 そうですね。やる気にもなりますよね。

村田 篠田さんは『Pythonで動かして学ぶ!Kaggleデータ分析入門』を読まれたあとに、Kaggleにどう取り組むのが良いと思いますか。実際のコンペに参加するとか?

篠田 この本の中では、過去のとっつきやすいと思われるコンペを幾つか紹介しています。そういうコンペをlate submitしてみるといいかなと思っています。

 例えば、『PUBG』の順位を予測するコンペでしょうか。『Fortnite』や『PUBG』で遊んだことのある方にとってはとても面白く、楽しみながらできると思います。この本ではそうしたお薦めのコンペを紹介していますので、ぜひ挑戦してみてほしいです。