Lean Baseball

No Engineering, No Baseball.

データエンジニアの私が機械学習・データサイエンスでオススメしたいスキルマップと本まとめ - 2020年版

要約すると, データサイエンス・機械学習周りでよく聞かれること&回答を言語化しました.

「データサイエンティストやりたい」「機械学習エンジニアになりたい」というキャリア志望を持つ方は多いと思います.

私の周りでも, 公私ともにそんな志望者の相談を聞いたり, (主にインターンの学生さんですが)一緒に仕事をしたりする機会もメッチャ多いです.

「ビジネスサイド強いマン」「サーバーサイドエンジニア」という視点からデータエンジニア兼データサイエンティストな自分が, そんな彼ら彼女らにオススメしている,

  • データサイエンティストを目指すためのスキルマップ
  • 各領域のスキルアップを実現するためにオススメしたい書籍

を紹介したいと思います.

なお, 昨年も同様のエントリーを書いておりそのUpgrade版となります.

shinyorke.hatenablog.com

このエントリーの対象読者

  • データサイエンスに携わるお仕事を志望する学生さん. データサイエンティスト, コンサルタント, アナリストなど.*1
  • 現役エンジニアもしくはエンジニア以外からデータサイエンティストを目指す皆様.*2
  • 就職・転職先が一般企業(規模の大小・歴史問わず)かつ, 製品・事業のデータサイエンスに関わることを想定している方. 研究より実務系(応用研究ぐらいまでなら範囲内).

なお, 企業の研究部門・研究教育機関(大学とか)で基礎研究などをされている・希望している方は対象から外れると思います.*3

サクッとまとめ&オススメ本3冊

全部読むのが辛い方はせめてここだけでもお読みください.

  • 「アルゴリズム」「数学」「Python」完全に理解した!...では機械学習エンジニアになれない, 「ビジネススキル」「インフラスキル」も合わせて磨こう
  • 初心者〜中級者の方は「アルゴリズム」「数学」「Python」を磨きつつ, ビジネスの進め方も理解しよう.
  • ビジネス系はコンサルタント関係の書籍を読むとイメージが大分湧くのでかなりオススメです.

オススメ3冊は以下となります.

オススメの理由はのちほど.

おしながき

このエントリーを書いてる人(shinyorke)について

現役のデータエンジニア/データサイエンティストです.

  • Shinichi Nakagawa(@shinyorke
  • 株式会社JX通信社のシニアエンジニアで主にデータエンジニアリング・データサイエンスの部分をメインでお仕事をしています*4, 個人としてはデータ基盤・SRE周りの技術顧問もちょっとしています.
  • 分析業務は学生インターン達と一緒にやることが多く, メンターとして技術・ビジネス面のリード, 指導をよくしています.

個人としては, データサイエンティストに必要な「エンジニアリング」「ビジネス領域」「アルゴリズム」等々, だいたい仕事と趣味でやり抜いてます.

ちなみに仕事で手掛けたやつで表に出てるのはこんな感じです.

ainow.ai

機械学習エンジニアのスキルマップ

本題の書籍オススメに入る前に, 私がベースにしている考え方を一枚絵にしました.

f:id:shinyorke:20200929204131j:plain
【図】スキルマップとその考え方

機械学習エンジニアとして実務でやっていくためには,

  1. アルゴリズム・数学を理解し, モデル・数式から実装に落とし込む「アプリ開発スキル」
  2. 大量のデータを現実的なサービスレベルでさばくための「インフラスキル」
  3. 「AIでいい感じにしてよ」というゆるい話から機械学習・データサイエンスプロジェクトを成功に導く「ビジネス・スキル」

野球選手に例えるなら「走る・打つ・投げる」のフィジカル的な能力が「アプリ開発スキル」, 「そつなく守備ができる・頑丈な体」という基礎体力が「インフラスキル」, 「作戦・戦術を理解して状況に応じたバッティングや守備位置を取る」インテリジェンスが「ビジネス・スキル」といったところでしょうか.*5

何がいいたいかと言うと,

この3つがある程度バランス良く(かつどれか一つでも得意と言える領域が)ある状態で初めて名乗れるポジションだと思っています.

アプリ開発スキル

これは多くの方が意識してるのでわかりやすいかなと.

大雑把に言うと,

アルゴリズム・分析モデルを理解した上で, 動くもの(アプリなりデモなり)作って動かせるスキル

かなと思います.

機械学習・データサイエンスの教科書的なモノを片手にアルゴリズムとか考え方を理解しPythonで実装していい感じになったらFlask(Python製のWebアプリケーションフレームワーク)でいい感じのAPIなりサイトにする, 的な奴で本を買ったり読んだりKaggle等をやった人が実務へのゴールに持ってくときに目標になるやつです.

この基本的な技能は大事でひたすら練習すべきで, このエントリーを読まれている方ですでに取り掛かっている方はそのまま続けるといいかなと思います.*6

ただし, この技能だけでは実務ができる機械学習エンジニアになるのは難しいです.

インフラスキル

ホントに小さい. 1人2人程度のプロジェクトや個人開発レベルの機械学習はアプリケーション作れればそれで終わるのですが, 現実の機械学習エンジニアリングのプロジェクトは,

  • 出来上がったモデル・分析タスクを製品や本番のサービスに取り込む
  • 製品化・本番サービスにリリースということはある程度システムレイヤーの事を知って動かせるようにしないといけない
  • より具体的にはサーバーやデータベース, ストレージの事を知った上でデプロイしたり, コードやデータ(特に後者)をいい感じに運用するレベルまで設計・リファクタリングする必要がある

一部はアプリケーションの開発スキルと被りますが, この辺はコンピューティングリソース*7やミドルウェア*8に精通したインフラエンジニア的なスキルセットが主役となります.

DevOps(MLOps)という言葉が聞こえてくるのもこの領域の話だったりしますし, AWS/GCP等のクラウドサービス, CI/CDといったあわせ技でいい感じにするのも彼らの役割だったりします.

ビジネス・スキル

個人的には一番声を大にして「大事やで!」と言いたい&重要視したいスキルセットです.

機械学習プロジェクトのはじまり方あるあるですが,

今○○で困ってるからAIとかディープラーニングでいい感じにしてくれ

とか,

創業からずっと溜まってる大量のデータがあるのでこれでいい感じのものを作ってくれ

など, 大抵の場合「AIでいい感じにしてくれ」「機械学習とPythonとかあればできるんでしょ, 俺でも知ってる」という形で話はやってきます(≒そこがコミットするチャンスだったりします).

これに対して「ディープラーニングでできますよ!」「最近tensorflow使えるようになったのでいい感じにします!」と答えるのは100点満点中3.34点の答えで, 実際のプロジェクトとしては,

  • ホントにやりたいことは何か? 収益改善, 新規事業, etc...
  • 「ホントにやりたいこと」の手段としてデータサイエンス・機械学習がホントに必要か見極める. ちょっと頑張ってクロス集計したらわかることをわざわざ機械学習でやる必要ないよね, など.
  • 機械学習が必要だとわかった場合, プロジェクトを回すためのヒト・モノ・カネをいい感じに揃えつつプランニングする

というのを「ビジネスオーナーをリードしながら」言語化してやっていく必要があります.

これの必要性・重要性については「仕事ではじめる機械学習」の第一章を読むといい感じに理解できるかなと.

仕事ではじめる機械学習

仕事ではじめる機械学習

なお, ビジネススキルに最低限必要な力としては,

  • 専門家ではない人たちを相手に「要件を言語化」しつつ「相手の方をリード」してプロジェクトを進める力
  • アルゴリズム・システムアーキテクチャの理解とその最適な選択・推薦ができる. 上記の「アプリ」「インフラ」スキルのサマリーが理解できてる・実践できてる
  • 相手の方に「機械学習しなくてもできますよ」という提案ができるロジカルシンキングと度胸

かなと思っています.

なんてことはない, コンサル的な能力ですね.

上記のアクセンチュアさん事例の書籍に色々と乗ってるのでこちらがすごくおすすめです.

領域別オススメ書籍

というわけで, 機械学習・データサイエンスの文脈における「アプリ」「インフラ」「ビジネス」に活きてきそうな書籍を紹介します.

この辺の書籍は自分のデータ分析チームや相談に来た方にもオススメしていて好評を頂いてるモノを中心にチョイスしています.

アプリ系

基本的には,

  • アルゴリズムを理解しモデルを作れる
  • 数学なりPythonなりの基礎〜応用を学べる
  • 単なる写経・トレーニングから一歩踏み出す

というノリになるかなと思います.

網羅的に理解&訓練

これは今年になって読んでちょっと感動したのですが東大のデータサイエンティスト育成講座が素晴らしい出来でした.

Pythonの基礎からスタートし, 確率・統計基礎を済ませてからNumpy/Scipyの科学計算, Pandasデータ加工からの機械学習といった順番が筋道通ってるかつ全般的に理解しやすい・わかりやすい構成で良かったです.

これはすでに学んだことある人(自分を含む)でも読み応えあると思います.

また, 実践的にKaggleでひたすらやりこむ・トレーニングする人は,

こちらもすごくやりやすい・良いポイント抑えていますしさらに100本ノック感ほしい方は,

名前の通り100本ノック訓練として丁度良くてすごく良きです.

実務を想定した実践的な例を学ぶ

実務を意識した実践的な例・プログラミングのアプローチだと,

Pythonによる医療データ分析入門, すごくおすすめです.

shinyorke.hatenablog.com

上記の紹介記事にも書きましたが,

「探索的データサイエンス」を実践的に学習できる, データサイエンスを仕事にする人にとって教科書になる一冊

という趣きでこれをいい感じにできると実務の分析・アナリスト業務にも応用できるので強くおすすめします.*9

インフラ系

いい感じに分析したりデータサイエンスを実務に活かせるようになる頃に必要になりそうな書籍です.

  • データモデルを意識したアプリケーション設計
  • SRE的な考え方からエンジニアリングをする
  • 上記のあわせ技でデータ基盤を作れるようになる

を目標にするといいと思っています.

データエンジニアリングとSREに入門する

まずこの書籍は外せないかなと.

データの扱い方や分散処理, ストレージの考え方などなど, 「インフラも知る一歩進んだ機械学習エンジニア」になるためのノウハウがガッツリ掲載されています.*10

また, 運用という視点ではSRE本も学ぶと良いでしょう.

Opsをはじめるなど, 運用のPhaseで考え方・ノウハウが活きてきます.*11

データ基盤をはじめよう

また, この頃になるとデータ基盤を仕事で扱う(保守なり開発なり)もあると思います.

データ基盤が機械学習そして会社のビジネスにどう影響するか?を理解する意味でも,

この辺を抑えると良いと思います, 技術選定をする際の指針もあって個人的にはかなり助かりました.

また手前味噌ですが, たくさんあるETLバッチFWの選択とかは,

tech.jxpress.net

SRE的なノウハウを得た上でこんな選択をしたりしてます, 参考にしてもらえると幸いです.*12

ビジネス系

個人的には一番声を大にして「大事やで!」と言いたい&重要視したいスキルセット(大切なので二度言う)

なのですが, 中々教科書・いい言語化が無いなあ〜, と思った矢先に最近いい本が出ました.

コンサルタントのやり方・考え方を学ぶ

たまたま本屋で見つけて手にとって立ち読みした結果がすごく良かったので即買いしました.

内容的には, 「東大のデータサイエンティスト育成講座の社会人かつより実務向けバージョン」という趣きなのですが,

  • 課題・仮説の定義からやろう!という「言語化の大事なプロセス」から入ってる
  • 探索的データサイエンスから古典的手法, 機械学習とプロジェクトの進捗を意識した記載・オススメをしている
  • 全体的に筋道が通っていて読みやすい・理解しやすい

といった感じでした.

コンサルタント志望の方はマストハブですし, そうじゃない方も目を通すといいかなと思いました.

「課題・仮説・言語化」に触れたついでに, こちらも読んでおくとより良い感あります.

コンサル一年目が学ぶこと

コンサル一年目が学ぶこと

  • 作者:大石哲之
  • 発売日: 2014/07/31
  • メディア: Kindle版

「数字・ファクトで語る」「論理優先, 端的に話せ」という思考・アプローチはデータサイエンスの現場に最適です.*13

仕事もしくは個人開発でやってみる

実際の業務イメージに当てはめる&畳水練より実践だろ!って意味では,

仕事ではじめる機械学習

仕事ではじめる機械学習

やっぱ名著だと思います, 会社に一冊あったほうがいいです.

また, 個人開発のデータ分析・機械学習の事例は色々と探すとあるので見るといいかもです.

これもまた手前味噌ですが,

shinyorke.hatenablog.com

こちらのネタは「ビジネス」「アプリ」「インフラ」を意識してやったものになります.

結び - お前は何がしたいのか?

というわけで, 機械学習・データサイエンティストにまつわるスキルマップとオススメ書籍を紹介しました.

ここまで書いといてアレですが, もっとも重要なのは.

わたし(あなた)は「何をする」機械学習エンジニアになるの?

という目標と言語化が大事だと思っています.

データ基盤中心でやる人はアプリ的な技能は後でもいいかもしれませんし, 「俺はひたらすら分析回せば満足」って人はアプリ領域を鍛えればいいかなという考え方もあります.

全部できれば最高ですが流石にそんな人はそうそういない(私も全部はできないです)ので, 自分がなりたいデータサイエンティスト・エンジニア像に合わせてアレンジして活かしてもらえるとありがたいです.

最後までお読み頂きありがとうございました.

*1:なお学部や文系理系は問いません.

*2:経験レベルは問いませんがこの先の文章を理解できるレベルであれば幸いです.

*3:視点ややることが異なってくるので参考になる部分が少ないかと思います.

*4:ちょっと前までデータ基盤の構築・運用を担当していましたが今はプロダクトチームのデータサイエンス・エンジニアリングまわりをメインでやってます

*5:(仕事としても)野球を見てきて・やってきた私なので野球で例えていますがサッカーとか他競技でも一緒かなと. フィジカル・安定性・戦術理解度はどのチーム球技にもあるので.

*6:取り掛かってない人は業務後なり週末なり時間作って取り組みましょう話はそこから.

*7:CPUとかGPUとかMemoryあたり, あとストレージ(Volume)とかファイルシステムとか.

*8:データベースとかDWHとか基幹となるソフトウェアと思ってもらえれば.

*9:細かい感想はブログのエントリーに譲りますが医療というテーマに関係なく良い教科書なのでオススメです!

*10:中身が濃いので必要なところだけ読むという使い方で全然いいと思う.

*11:個人的には一章だけでもいいので読んでおくといいかなと.

*12:いいフィードバック・反響いただいていて自分でも驚いています&そろそろ続編書かないと(小声)

*13:よくある機械学習エンジニアのステレオタイプとして, 「分析・実験の手法を延々と話す」というのがあるのですが, 本質はそっちじゃなくて「過程と結果, 次のアクション」を端的に語る, 関係者とディスカッションすることが重要なんですよねと. それを補完する意味でも読むといいかなと.