Stimulator

機械学習とか好きな技術話とかエンジニア的な話とかを書く

「機械学習のための特徴量エンジニアリング」が良かったので訳者に媚を売る

- はじめに -

本ブログでは恒例になりつつある、献本されたので媚を売るシリーズです。

機械学習のための特徴量エンジニアリング」は2/23に発売される、機械学習エンジニアのための書籍です。

本記事は、筆者に媚びを売りつつ、どういった内容の書籍か、どういう人が読むと良さそうか、私がどう感じたかをつらつら書いていくもでのす。

 

機械学習のための特徴量エンジニアリング ―その原理とPythonによる実践

機械学習のための特徴量エンジニアリング ―その原理とPythonによる実践

 

- 書籍の概要 -

機械学習のための特徴量エンジニアリング」は、謎のデータサイエンス集団「株式会社ホクソエム」によって翻訳された、オライリー出版の「Feature Engineering for Machine Learning」日本語版にあたります。元の書籍を書いたAlice ZhengはMSRやAmazon機械学習の研究開発に従事している方で、共著者のAmanda Casariは現在Googleで働いているようです。業界のトップといっても過言ではないですね…。

Feature Engineering for Machine Learning: Principles and Techniques for Data Scientists

Feature Engineering for Machine Learning: Principles and Techniques for Data Scientists

私はこちらの英語版については会社で目を通した事があり、ふんわりとした理解で「幅広くて良い本っぽいなー」くらいに思っていましたが、日本語翻訳が出るとの事で、Twitterで情報を見た瞬間に1冊予約しました。後日ホクソエムの中の人から献本されたので、一冊は妻にでもあげようと思っています。

 
 
翻訳の株式会社ホクソエムについて「謎の集団」とは言いましたが、データサイエンスの業界においてはR言語界隈での活動やブログが非常に有名で、中の人達も寄りすぐりのエンジニアが揃った良い会社であると噂されています。

blog.hoxo-m.com


ホクソエムさんのより有名な実績として、昨年度に出版された「前処理大全」があります。

 
こちらもまた「ITエンジニア本大賞 2019」の技術書部門TOP10入も果たした良書です。
www.shoeisha.co.jp

 
 
そして「機械学習のための特徴量エンジニアリング」の実際の書籍ですが、機械学習コンペティションの最高位となるKaggle Grand Masterである@smlyさんの推薦帯もついており、書店で目立つ事間違いなし。書店に入ってから迷わず書籍に向かい購入に至る事ができると思います。

f:id:vaaaaaanquish:20190219201019j:plain:w400
Kaggle Grand Master推薦帯

 
上記の通り、最強に最強を重ねた布陣でオライリーから出版された書籍ということになります。


 

- どんな層に向けた書籍か -

前項で媚を売りきったので、どんな層が読むと良さそうか個人的な感想をまとめます。
端的にまとめると以下のようになると思います。

  • 大学学部レベルの知識を持ち、今後機械学習エンジニアとしてやっていきたい人
  • 機械学習のモデル構築を幅広く学びたい人
  • Kaggle Expert前後くらいの人


まず、前提知識はそれなりに必要な書籍ではあると思います。「1章・機械学習パイプライン」「2章・数値データの取り扱い(前半)」では、導入のため数行でベクトル空間や分布といったワードが解説されますが、数行です。その後の2章中盤からは「線形回帰モデルによってオープンデータを学習させクロスバリデーションを行いR^2スコアの信頼区間を見ると…」「pairwiseな特徴を使ってモデリングしてみると…」という話に一気に飛躍し、コードが紹介されていきます。最低限の知識としてサンプル程度の機械学習モデルを構築した事があり、その前提となるモデルや評価に関する情報は得る、もしくは調べながら状態で読むのが良さそうです。
(翻訳者は"まえがき"において他オススメの書籍を紹介しているため、参考にすると良いと思います)

 
機械学習モデル構築を幅広く学びたい人にもオススメできる書籍です。例えば、「新卒で業務で今から本格的にモデリングするんだけど…」とか「Python機械学習のサンプルスクリプトはQiitaや本見ながら動かしたけど次何すれば良いのか…」という人は読んでおくと良いと思います。理由として、この書籍は以下のような構成になっているからです。

  • 1章・機械学習パイプライン
  • 2章・数値データの取り扱い
  • 3章・テキストデータの取り扱い
  • 4章・特徴量スケーリングによる効果
  • 5章・カテゴリ変数の取り扱い
  • 6章・次元削減
  • 7章・非線形特徴量の生成
  • 8章・特徴量生成の自動化(画像特徴と深層学習)
  • 9章・論文レコメンドシステム構築を模したトレーニン

数値、テキスト、画像の特徴に関する情報が万遍なく入っており、モデリングにおいていつ何時も重要な特徴量の取り扱いや生成について深く触れられています。「テキストの処理どうするんだっけ」と困ったらこの書籍と前処理大全を開けば、ひとまず正しいモデリングができるようになっていると感じました。たとえテキスト分析やったことなくても、ベースラインになるちゃんとしたモデル作れるようなコードになってるなと思います。
前述したように、事前知識が必要となる箇所が少しずつ見受けられるため、「ん?この表現よくわからないな」と思ったら調べる根気もあると良いでしょう。
 
 
Kaggle Expertくらいだと「機械学習を初めて成果が出たけど、Kernelの手法ばかり試していて、古典的な特徴量エンジニアリングのベース知識が欲しい…!」という人も多くいるでしょう。この書籍に書いてある事くらいはスラスラ出てくるくらいにしておくと良いと思います。まえがきもですが、途中でもKaggleの話出てきますよ(leakageやstackingなど)。


 

- 感想とか -

前述の通り、前提知識は普通に必要です。その分参考文献を多く記載しており、そちらまで読みに行ったり、自分で調べたりする根気は少なからず必要だと思います。これは悪い点というわけではなく、少し大変なので大学で最低限統計と機械学習やったりしてるくらいじゃないと初学者にポンとは渡せない的な意。あまり理論的な深みに行き過ぎると、書籍として重くなるのは間違いないので、あくまで「普段から機械学習モデリングに触れる機会がある」という中級者を一段引き上げる書籍という立ち位置だと思います。(オライリーの本って大体そんな感じだけど)
 
k-meansで特徴量作ったりだとか特徴量ハッシングだとか、昔からある手法ではあるけど皆意外と知らないから突然はてブで話題になるというタイプのやつ最近増えてきてるし、知識の補強という意味でも、機械学習エンジニアの皆さんは読むと良いと思います。

機械学習でよく出てくる分布やplotの説明もあり、概念的な理解も進むと思います。

f:id:vaaaaaanquish:20190219221400j:plain:w450
図とその見方の説明


個人的には、ソースコードついてるのもGoodで、全てJupyter notebookで可視化までやってくれているので、是非触って遊ぶのも良いでしょう。
github.com
 
 
強いて気になる所をあげるとするならば、訳書という事もあり、少し情報としては古いものが多めかなという気持ちにはなりました。

例えば、「深層学習ではZCAを前処理ステップとして使用する」という文言がありますが、これは2009年のLearning Multiple Layers of Features from Tiny Imagesが元になっており、今ではDeep LearningでZCAを前処理として利用するモデルはほぼ聞かないという認識です。画像で出てくるCNNもReLUなAlexNetですし、そっくりそのまま現代で最高精度かと言われたら微妙なところです。私が院生くらいの頃実際にZCAで白色化して〜というの流行ってましたし、時系列知ってれば大丈夫なので、一緒に色々調べてモダンな物についても見てみると良いと思います。他にもEmbeddingやSamplingなどで新しい手法が続々出てきている昨今では、情報を追い続けるというのも機械学習エンジニアとしての1つの力だなと改めて思いました。

(このあと前処理大全を買えというメッセージなのかも知れません…!)


 

- おわりに -


私個人としては、目新しい発見こそなかったものの、特徴量エンジニアリングの基礎がつまっており、「うんうん、そうだね」と頷きながら読める良書でした。今まで日本の書籍で機械学習の基礎を抑えた書籍こそあったものの、特徴量や前処理を主題にした書籍が出てくるというのは珍しく、非常に良い事だと思います。昔は本当特徴量生成の手法とか全然外に出してくれないような情報だったので、知の高速道路が整備されて良いですね。


本文では「Kaggle Expertくらいの人は買えば」と言った私がまだExpertである事を恥じながら、より勉強に励まねばという表明をして締めにしたいと思います。

知識として色々知っていても出来なきゃ意味ないですからね。がんばってやっていきましょう。
 

機械学習のための特徴量エンジニアリング ―その原理とPythonによる実践

機械学習のための特徴量エンジニアリング ―その原理とPythonによる実践

2019/2/23発売 ただいま予約受付中みたいです