見出し画像

Kaggle初心者におすすめしたい『機械学習のための特徴量エンジニアリング』

結婚祝いで『機械学習のための特徴量エンジニアリング』をいただきました。ざざっと読んだのでレビューしたいと思います。

まず、前提として、この本の想定読者層は

・業務やKaggleで機械学習を触っている人
・大学で機械学習を学んだことがあり、今後実践していきたい人

だと思います。機械学習なんもわからん!という人がすんなり読める本ではありません。すんなり読める本ではありませんが、「今からKaggleをやりたい」という人も手元に置くメリットがあると思います。

Kaggleをやるにあたって「特徴量を作る」ことは避けて通れないにも関わらず、特徴量の作り方について体系的に解説した文献は多くありません。ほとんどの人はWeb上の知識を拾い集めているのではないでしょうか。

Kaggle Grandmasterの@smlyさんの推薦文から引用します。

機械学習初学者がKaggleに参加するとしたら、自身が参加したコンペ以外のコンペも含めて、カーネルを読み込むことが上達の早道と言われています。まずは本書を通して、よく使われる手法を理解しておくとカーネルからより多くの情報が得られるでしょう。(太字は筆者による)

というわけで、初心者の方もこの本を手元においてKaggleの世界に飛び込んでいきましょう。怖くないですよ!

どの章から読めばいい?

本書の章立ては以下のとおりです。

1章:機械学習パイプライン
2章:数値データの取り扱い
3章:テキストデータの取り扱い
4章:特徴量スケーリングによる効果(TF-IDF)
5章:カテゴリ変数の取り扱い
6章:次元削減(PCA, ZCA)
7章:非線形特徴量の生成(k-means, スタッキング)
8章:特徴量作成の自動化(画像特徴, 深層学習)
9章:レコメンドエンジン作成を模した解析

まず1章・2章・5章を読みましょう。
1章で機械学習の全体像を把握。2章で数値変数の扱い、5章でカテゴリ変数に関する扱いを学ぶことでKaggleのテーブルデータ(文章や画像を含まない、表形式のデータ)コンペに参加することが可能になります。

3章・4章は自然言語処理コンペに参加する時に読みましょう。
3章・4章ではBag-of-Wordsやn-Gram、ステミングやTF-IDFといった、自然言語処理でごく普通に使われるテクニックが紹介されています。

8章は画像処理コンペに参加する時に読みましょう。
深層学習の基礎、および画像から特徴量を抽出する方法について書かれています。ただし、訳書という関係もあって掲載されているモデルが古いことには注意が必要です。

他の章は余裕が出てきたら読みましょう。
Kaggleのコンペ解法でもよく使われているスタッキングが7章で解説されているので、優先度としては7章が高めです。

ここが良い!

記述が古い箇所があるとはいえ、実践で使われているテクニックを広く揃えている点が優れていると感じました。特に、リークとスタッキングについての記述がある点はポイントが高いです。

リークとは答えの値を直に特徴量に埋め込んでしまうことです。手元の評価では良いモデルができているにも関わらず、未知データに対する精度が低くなってしまいます。本書では5章で触れられています。

スタッキングとは、モデルの予測値を特徴量として使用するテクニックで、Kaggleの上位解法でも普通に使われています。本書では7章で触れられています。

この2つはKaggleのディスカッションでも話題として上がることが多く、背景を整理して把握しておくことが大切です。

また、翻訳を担当したホクソエム社が実装を公開してくれている点もポイントが高いです。Kaggleのカーネルには他の人が書いたコードが上がっていますが、コードの綺麗さという点では玉石混淆です。対して、以下のリポジトリで公開されているコードは綺麗で、コメントも多くついています。スムーズに学習できると思います。

「本の記述と異なりますが、こちらの方が高速に動作するコードとなっています」ってすごいですね……笑

ここには注意が必要!

読んでそのままコンペで使える最先端!というわけではありません。本書の内容を把握した上で、KaggleのカーネルやWeb上の記事などでより新しい技術を学ぶ必要があるという点は忘れてはいけません。

顕著なのは画像処理について書いた8章で、紹介されているのが2012年のAlexNetです。画像処理は特にここ数年で大きく性能が改善した領域であり、この章を読んだだけでは現状のベースラインモデル(性能の比較対象に使う、ベーシックな手法)にもならないでしょう。

3章4章の自然言語処理に関するテクニックは、現在でもベースラインに耐えるものだと思います。しかし、こちらも現行のコンペで戦っていくには深層学習を利用した手法を学ぶ必要があるでしょう。

この本を読んだ後はどうすればいい?

Kaggleのコンペに参加しましょう。ごちゃごちゃ言ってないでまず参加することが重要です。参加したコンペのディスカッションやカーネルを読むことで新しい知見を自分に貯めていきましょう。

その際におすすめしたいのは、自分なりに得た知見をまとめておくことです。僕もGitHubで公開しています。

また、わからないことがあったら日本人Kagglerが集まるSlackグループで質問してみるのも良いです。以下のリンクから登録できます。多くの議論・質問が飛び交っているので気軽に質問出来ると思います。

おわりに

『機械学習のための特徴量エンジニアリング』は機械学習をやっている人が押さえておくべきポイントを広く紹介した良著だと思います。みなさんもぜひ読んでみてください。

他の人の書評も紹介しておきます。

この間note engineer meetupに参加した際、技術系読み物はバズりやすいという話を聞いたのでnoteで書いてみました。ソースコード載せないタイプの技術記事はこっちで書いてもいいかもなぁ。

では!

この記事が参加している募集

推薦図書

いただいたサポートは執筆の題材探しや新生活の準備、妻との美味しいご飯に使わせていただきます。 SNSでnoteをシェアしていただくのも大きな励みになります。よろしくおねがいします。