Oisix ra daichi Creator's Blog(オイシックス・ラ・大地クリエイターズブログ)

オイシックス・ラ・大地株式会社のエンジニア・デザイナーが執筆している公式ブログです。

オイシックス・ラ・大地のデータチームで最低限必要なスキルとその獲得方法をまとめてみた

こんにちは、オイシックス・ラ・大地のデータプラットフォーム室でマネージャをしている普川です。
我々のチームでは主にレコメンドエンジン開発プロダクトに実装するモデルの開発や、需要予測のような業務で使うデータエンジニアリングを主に実施しています。
今回我がチームに未経験のメンバーが入ることになりました。チームに加わって貰う前に、最低限身につけてもらいたいスキルや知識は何か、それをどうやって獲得してもらうかをチームメンバーと一緒にまとめました。せっかくなのでブログで公開してみたいと思います。

目次

今回やりたいこと

  • 想定としている対象者の事前のスキルセット:高校レベルの数学(数3、数C)はあり、データ分析やエンジニアリングの業務経験はなし
  • 現場に入った時に立ち上がりからスムーズにタスクをこなしてもらう。本人にとっても周りにとっても負担にならないように基礎的なことを理解してもらいたい。
  • そのためチームに加わって貰う前に基礎知識として必要なものを洗い出して、事前に習得してもらうと良さそう
  • データサイエンスの知識は、前提となる知識が広く深くネットでちょっと調べて理解するなどはほぼ不可能。またそういうところは現場に入った時に、「じゃあこれ見て覚えておいて」など言うことはできない、一から説明するのも大変。
  • そのため必要な知識を網羅的に出した上それを再現に厳選して体系だてて順番に学んで貰うことを考えました。



学習の時期をチーム加入前と後と分けると今回の記事は加入前にフォーカスを当てています

タイミング 方法と内容
チーム加入前 主に本や研修受講
必要な概念、基礎知識を事前に得ておく
チーム加入後 OJT主体
・過去のプロジェクトの資料、ソースコードからの学び
・簡単な案件の実行

到達したいレベル

  • いくつかある継続案件を引き継いでもらう、すでにある既存の分析モデルが理解でき修正を加えられる。
  • 過去の分析のJupyterを読んで学べる状態。
  • 簡単なタスクを振った場合にサポートありつつも自立して動ける。

事前学習で気をつけたいこと

取り上げる教材について

できるだけ初学者にわかりやすいものを中心に選んでいます。 いわゆる「パターン認識と機械学習」(PRML)や統計モデリングの良書「データ解析のための統計モデリング入門」通称、緑本、「はじめてのパターン認識」、東大出版会の統計の赤本、青本など、データサイエンス界隈では登竜門と呼ばれる名著がたくさんありますが、今回は未経験者のレベルを引き上げるという観点で選んでいるので、数式などもできるだけ飛ばさずわかりやすいもの、通り一遍の「教科書的な説明」なものよりが概念的、本質的な理解を助けてくれるという観点で選んでみました。

取り上げる内容について

実際の業務で必要なものと考えるとあれもこれも膨大な量になってしまいました。そこからかなり絞りました。絞るにあたっての方針「業務で必要になってから学べば間に合うもの」はなるべく削りました。逆にこれを知っておかないと業務に差し障りがある、かといって、一朝一夕では身につけられるわけではない、というものを中心に厳選しました。がこのどれを学ぶべきはまだ手探りのところがあるので、引き続きブラッシュアップは必要かも思っています。

カリキュラム

数学

昨今、scikit-learnやDeepLearning系などデータ分析のライブラリの充実ぶりは目を見張るものがあります。そのためとりあえず、実装したり「分析をまわす」ということはサンプルコードなどを見ながら簡単にできてしまいます。一方で動かすまではできるが、なぜその手法を選択するのか、精度があがらない場合にどうチューニングするか、どう学習のスピードをあげるかなど、一つ一つを突き詰める場合や新しいアルゴリズムを理解する場合など前提の基礎知識として数学の知識をつけておく必要があると思っています。

線形代数

主に機械学習で行っている計算を理解するのに必要。特に行列演算、固有値、特異値あたりを重点的に抑えてもらう必要があると思っています。

線形代数ののおすすめ本

線形代数はこの本がおすすめです。そもそも意味がわかるシリーズは全体的に良いと思っています。おすすめポイントとしては、この本を読むための前提知識が少なくて良いこと、概念の説明が丁寧にされているので、独学でも理解しやすいことがあります。

まずはこの一冊から 意味がわかる線形代数 (BERET SCIENCE)

まずはこの一冊から 意味がわかる線形代数 (BERET SCIENCE)

微分

機械学習の計算ではこちらも頻出。最小2乗法などあらゆるところで使います。積分については登場頻度が低いので優先度は低め、今回の対象からはずしました。

微分のおすすめ本

こちらも概念の理解についての説明が詳しく丁寧に入っているのと、微分積分以外の周辺の内容、例えば、数列、指数関数、三角関数なども抑えてくれているので、数学から結構離れていたとなっている人にとってはまとめて、思い出せるのでその点でもよし

ふたたびの微分・積分

ふたたびの微分・積分

統計・確率

分析で得られた数値の意味合いを理解するために必要です。概ね統計検定2級レベルの知識を理解できると良いと思います。具体的には以下の内容を身に着けてもらいたいと考えました

  • 平均、分散、標準偏差
  • 確率変数、確率分布
  • 最尤推定、ベイズ推定
  • 事象(余事象、空事象、排反事象、ベン図、和事象、積事象)
統計・確率でおすすめの本

まずはこの一冊から 意味がわかる統計学 (BERET SCIENCE)

まずはこの一冊から 意味がわかる統計学 (BERET SCIENCE)

エンジニアリング

Jupyterでの分析やモデルをプロダクトに組み込みなどを行うためそのベースの知識をつけてもらいます。またWorkFlowツール(弊社ではDigDag)を多少見るので、Linuxの知識もベース部分は身に付けてもらいます。

プログラミング

ここは本当に最低限が身につけばよいかなと思っています。

  • 変数、関数、クラスの概念
  • 条件文、ループ文(if,for,while)
    以下はまだ必要ないと判断しました。
  • オブジェクト指向
Python

今のチームは、分析は全部pythonでやっているので、Pythonで一通りの分析タスクが進められる状態になっているのをゴールとしています。具体的には以下です。

  • 環境構築できる(pip,conda)
  • JupyterでSQLを投げてDBからデータを抽出して来れる
  • numpy,pandasで加工できる
  • scikit-learnのライブラリを使える
  • matplotlibで可視化できる
プログラミングのおすすめ本・研修

Pythonを実行するのに必要な最低限の環境構築やモジュールのインポートや、 分析用のコードに関しても入力と出力の両方が紙面に記載があり、 プログラミング初学者でもとっつきやすく本になっています。 分析の前処理なども一通り網羅しています。

Pythonによるデータ分析入門 第2版 ―NumPy、pandasを使ったデータ処理

Pythonによるデータ分析入門 第2版 ―NumPy、pandasを使ったデータ処理

  • 作者: Wes McKinney,瀬戸山雅人,小林儀匡,滝口開資
  • 出版社/メーカー: オライリージャパン
  • 発売日: 2018/07/26
  • メディア: 単行本(ソフトカバー)
  • この商品を含むブログを見る

HelloWorld的なプログラミングの基礎はネットのサービスで身につけるのがちょうどよいかと思っています。 prog-8.com

おすすめ研修

また有料ではありますが、完全に手前みそでありますが弊社のエンジニアが副業で教えている講座がカリキュラム的にちょうどよいのでおすすめです。数学とPythonの基礎と必要な知識が一辺に身につきます。
Python+機械学習で必要な数学講座 | AIジョブカレ

データベースとSQL

SQLについては最低限の知識として以下を定義しました。 * 任意のデータ抽出ができる(with句くらいまで使える) * 過去の分析で行っているクエリが読める * indexや結合の仕方などあるていどパフォーマンスを意識したクエリがかける。

以下はまだ必要ないと判断しました。 * presto、 HIVEなど * NOSQL

SQLでやってもらうこと

こちらも基礎はProgateを想定。 prog-8.com

LINUX

LINUXまわりは色々絞って以下をを見に付けてもらうことにしました * sshでアクセスできる * ディレクトリ構造の概念を理解する * 基本的なLINUXコマンドが使える(cd,ls,less,ssh,mkdir,pwd,rm,scp,chmod,cat,grep) * vimでファイル編集できる * 設定ファイルの概念と使い方 * シェルスクリプトを実行できる

LINUX理解でおすすめの本

Linux(UNIX)システムを体系的に学習するための入門書です

新Linux/UNIX入門 第3版 (林晴比古実用マスターシリーズ)

新Linux/UNIX入門 第3版 (林晴比古実用マスターシリーズ)

みんとちゃんと一緒に楽しく実際的なコマンドが覚えられるのでオススメです。

まんがでわかるLinux シス管系女子(日経BP Next ICT選書)

まんがでわかるLinux シス管系女子(日経BP Next ICT選書)

機械学習

回帰、クラスタリング、次元削減など、大まかにどういう種類ののアルゴリズムがあるのかをタイプ別にあげ、その中で具体的なアルゴリズムについて、その概念と中身を理解してもらうのが良いと判断しました。 具体的にはここを抑えてもらうことにしました。

  • 単回帰、重回帰
  • 決定木
  • クラスタリング
  • 主成分分析(PCA)
  • 協調フィルタリング

こちらは候補にあげましたが、外しました。必要に応じて後から入れてもらう想定です。

  • バギングやブースティングなど
  • ニューラルネット、パーセプトロン
  • 線形最適化
  • サポートベクトルマシン(SVM)

機械学習でおすすめ本

教師あり学習、教師なし学習の主要な手法をコードを動かしながら学べます。 scikit-learnを用いて学習を行い、結果を視覚化して評価することを各手法に対して行います。 数式を用いた理論の解説は多くないですが、実行結果を比較することにより、各手法の特徴が学べるようになっています。 大まかな概念を理解しつつ、コードも書けるようになるという点で、scikit-learnで機械学習を始めるには良い本だと考えています。

Pythonではじめる機械学習 ―scikit-learnで学ぶ特徴量エンジニアリングと機械学習の基礎

Pythonではじめる機械学習 ―scikit-learnで学ぶ特徴量エンジニアリングと機械学習の基礎

ビジネス

我々のチーム方針としては分析して終わり、モデルを作って終わりではなく、ビジネスの課題をどうデータサイエンスの問題に変換するか。分析したものをどうビジネスに反映させ業績に貢献するかというところを重要視しているので、ビジネス的な考え方はかなり重要と思っています。その中ではこちらの2冊を学んでおくとよいと考えました。

ビジネスでおすすめの本

Yahooの安宅さんの名著。データ分析においてもデータありきで漫然と分析するより仮説ありきでデータを検証するほうが圧倒的にスピード早く進みます。またついつい色々なことを白黒つけたくなって、分析タスクとして手をだしてしましますが、この本で繰り返し言っている、イシューの質をあげるということもビジネスによらず、データサイエンスでも重要な概念です。

イシューからはじめよ―知的生産の「シンプルな本質」

イシューからはじめよ―知的生産の「シンプルな本質」

データ分析は分析すれば終了ではなく、それを依頼者や経営層に論理的にかつ分かりやすく「伝える」必要があります。伝わらない説明だと意思決定ができず、せっかく時間をかけた分析も無駄になってしまうので、「伝える」技術もデータサイエンティストには必要です。

終わりに

業務に必要なことをあげていくと、あれもこれもと膨大になったので、かなり厳選しました。それで実際にこれをやってもらって、狙い通りスキルを付けてもらえたか、過不足あったかがあれば、この記事に反映したいと思います。また、初学者にとって、何か良い本あればぜひ教えてください。実際どうやって身につけたかあまり覚えていないものもあって結構苦しいところもありましたので。

Oisix ra daichi Creator's Blogはオイシックス・ラ・大地株式会社のエンジニア・デザイナーが執筆している公式ブログです。

オイシックス・ラ・大地株式会社では一緒に働く仲間を募集しています