Kaggle限定の先行販売*1で紙版を入手した『Kaggleで勝つデータ分析の技術』(技術評論社)を読みました。電子版をご恵贈いただく予定です。Amazon*2のベストセラー1位になるなど、注目を集めています。さんは、執筆者視点で見どころを紹介しています*3。視点で書評を記します。取り組んでおり、一定程度の知識を有している視点からの書評になります*4。本書の魅力をあえて3つ挙げるとすると、次の通りです。データ分析コンペのテーブルデータコンペに注力して書かれた「教科書」である私の知る限り、これまでデータ分析コンペ(以降、簡単のため「Kaggle」と置き換えます)に注力して執筆された日本語の書籍はありませんでした。多くの方は、次のような英語や日本語で書かれた情報を断片的に集めながら、Kaggleに関する知見を蓄えてきたように感じています。限らない観点で言えば、広く機械学習全般を扱っている書籍や、特徴量エンジニアリングなど一部の話題に関する書籍は存在しました。特有のワークフローと必ずしも一致しません。ワークフローの中で非常に重要では有りつつも一部分に過ぎません*8。本書は、Kaggleのテーブルデータコンペに焦点を当てた、体系的かつ網羅的な教科書になっています。異様なほど細かい粒度で書かれた目次を見ると、その網羅性が理解できるかと思います。章立ては次の通りです。アンサンブルいずれも、機械学習の教師あり学習モデルを扱う上で大切な話題がまとまっています。本書が特徴的なのは、これらの話題の全てが「Kaggleで勝つ」、すなわち「未知のデータセットに対する汎化性能を上げる」という目的のもとで執筆されている点です。第2章の「タスクと評価指標」は一般的な書籍ならば一通りの数式や特徴を解説したところで終わりがちですが、本書ではより具体的に次のような話題を取り上げています。定石の一つとなりつつも、書籍の形で掲載されている例はほとんどないように思います。観点で効果的な技法に紙幅を割き、時に図を交えながら丁寧に解説しているのは本書の大きな魅力です。第4章では、テーブルデータコンペでのニューラルネットの活用方法にも触れています。画像・テキストコンペだけでなくテーブルデータコンペでもニューラルネットが解法の一つとして用いられています*9。用いた多層パーセプトロンのチューニング」の解説・ソースコードも掲載されていました。想像以上に新しい傾向を踏まえた内容で、正直なところ驚きました。知見の体系化を試みている点も評価したいです。第3章の「特徴量の作成」では、作成方法や性質に応じて次のように特徴量エンジニアリングを分類して解説しています。関する体系的な文献は多くなく、今回の執筆に当たっては著者らの多くの議論や試行錯誤があったように感じます。経験が豊富な方々です。間でさえ議論が残る話題についても著者の見解が掲載されています。「理論的な根拠が不明瞭だが特定の場合には効果を発揮するとされる技法」や「機械学習の分野で著名ではあるが、あまり使われない技法」などが存在します。「ハイパーパラメータのチューニング方法」など、明確な正解が存在しない話題への言及もあります。特有の「暗黙知」の明文化に取り組んでいる点で、非常に貴重な書籍と言えるでしょう。Meetupの発表資料まで、広く文献が引用されています。特徴量エンジニアリングやアンサンブルなどの話題ごとに、上位入賞者の知見が盛り込まれています。単純に読み物としても面白いですし、コンペで行き詰まった際にアイディアを求めるような使い方も考えられそうです。サンプルコードが随所に掲載されています。リポジトリにて公開される予定の模様です。「Kernel」と呼ばれる、ユーザが自身のソースコードを公開できるプラットフォームが存在します*10。世界中のデータサイエンティストが公開しているソースコードは非常に有益なのですが、一方で玉石混淆な面があるのも事実です。本書に付属のソースコードには、次のような特徴があり、大いに有効活用できそうです。実績を挙げている著者らが実際に使っているソースコードである本文だけでなくソースコードもレビューの過程を経ており、信頼性が高いコメントが日本語で付与されているソースコード絡みで言及すると、個人的には第4章の終わりに掲載されたthreecourseさんの「分析コンペ用のクラスやフォルダの構成」が興味深かったです。クラスを作成しており、自分なりの機械学習プロジェクト設計を進める上で非常に参考になりました。どんな人に本書はお勧めか本書は、大きく次の2パターンの方々にお勧めできると思います。前者は、まさに私も対象読者です。役立つ話題が豊富に掲載されています。上位を目指すに当たって、非常に有用な書籍になっています。取り組んできた経験がある方だと既に知っている話も少なくないかとは思いますが、本書を通じて自分の理解の「答え合わせ」ができる意味合いも大きいです。「知ってたつもり」の技法でも、いくつか意外な気づきもありました。「out-of-fold」です。広く使われる有名なデータセットの分割方法ですが、閾値の最適化や特徴量生成など、思いのほか様々な場面で適用すべき可能性がある考え方だと認識を改めました。第2章の「MCCのPR-AUCによる近似とモデル選択」や第6章の「ベイズ最適化およびTPEのアルゴリズム」など、これまで知らなかった・避けてきた数学的な議論を含んだ話もありました。活用していきたいと考えています。実際に取り組んで試行錯誤や四苦八苦した経験がある人ほど、実感を持って楽しめる書籍になっていると思います。後者について、本書には一般の機械学習の技術書にはない技法も多く掲載されています。特有の「未知のデータセットに対する汎化性能を上げる」という観点では、特徴量エンジニアリングや機械学習モデルのチューニングなど、必ずしも理論立っていない暗黙知も含めて興味深い知見が得られるのではないかと思います。モデルの評価」も魅力的です。得られた知見のうち最も役立っているのはモデルの評価方法(validation)だと思っています*11。LB」は最後の最後まで公開されません。そのためコンペ開催中は、手元で構築した検証用データセットに対する性能などを参考にモデルの構築を進めていきます。ここで、如何にして信頼に足る検証用データセットを構築するかが、最終的に良い結果を得るために求められます。まともな検証用データセットがないと、モデルを明後日の方向に改善してしまう可能性があるためです。実務でも同様に重要だと思います。最終的に欲しいのはデプロイ後の性能で、手元のデータセットでどれだけ高い性能が出ていても意味はありません。過去コンペも題材にしつつ取り上げています。時系列データの検証手法を厚く解説している点や、構築に当たって気を付ける点を議論している点が素晴らしいと思います。挙げるとすれば「これからKaggleに入門するぞ」という方には、情報量が多すぎて必ずしもお勧めできない気はします。本書では以下の要素が前提となる基本的な知識として示されています。必要に応じて文章や図による補足が登場しており、数式など一部の記述は飛ばしても十分楽しめる内容ではあると思います。一方で本当の初学者の方だと「どこまでの情報は理解できなくても問題ないか」がなかなか独りでは判断しづらいかもしれません。入門したいという意味合いだと、例えば『kaggleのチュートリアル』*12などの同人技術誌も選択肢に入ってくるでしょう。手前味噌ながら、私もQiitaにKaggle入門用の記事を公開しています*13。一連の流れ、参加する意義などが端的にまとまっています。本書に掲載されている内容が理解できるように、目標立てて勉強を重ねていく使い方も考えられるでしょう。本書の「本書で何を扱わないか」にも記載がありますが、機械学習の理論やアルゴリズムを知りたい方には、本書はお勧めしません。扱う具体的な技法は研究の進度がテーブルデータに比べて非常に速く、書籍として取りまとめるのはかなり難易度が高いと感じています。さんは自身のブログで反省点として「xgboostを使って説明している」ことを挙げていましたが、第4章できちんと実装含め「LightGBM」と「Catboost」を紹介しているので、個人的にはそこまで気になりませんでした。これは私が勾配ブースティング系の機械学習アルゴリズムにある程度詳しいからこその捉え方になっているかもしれません。おわりに本記事では、10月7日の発売の書籍『Kaggleで勝つデータ分析の技術』を書評しました。注目度を高めている中で、題目に「Kaggle」を冠した書籍が遂に出たかという思いがあります。題材に商用出版の書籍を執筆するのは、特に次の3点で難しさを感じます。関連の書籍が世に出てこなかった理由になると思っています。勝つ可能性を下げている点にも言及したいと思います。多くの時間を割いて難易度の高い書籍を執筆し、知見を共有してくださった著者の方々に深く感謝するとともに、本記事の結びとします。著◆「SQL」棚にて展開中!分析コンペでは機械学習の解説書には載っていない手法やテクニックが数多く活用。www.kaggle.com*11:これがKaggleで学んだ最も大事なことの一つかも知れん。教科書で学んだときは「まぁ分け方は大事だよな」くらいの理解だったけど、Kaggleだとスコアの形で過学習やリークの類を実体験できる。提出してみて「あれ?スコア低くね」みたいなのは誰しもやるはず。20:30【書評】『Kaggleで勝つデータ分析の技術』(技術評論社)Tweet広告を非表示にする関連記事2019-12-302019年をザッと振り返る2019年をサクッと振り返ります。2019」*1の12日目の記事です。月別アーカイブはてなブログをはじめよう!upuraさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。