Search

データエンジニアリング

身につけておくべき知識・スキル

データエンジニアリングの項目で、注目されるものは、収集・整理・変形・特徴量エンジニアリングや多変量解析・機械学習のコーディングで、最近では書籍も非常に多いことや、Colabなどの計算環境が用意されている事なども影響して、これらのスキルについてはある程度身につけやすいものと考えています。表にすると、

項目 スキル
収集 SQL
可視化 ggplot2
matplotlib
整理・変形・特徴量エンジニアリング SQL
tidyverse
pandas
多変量解析・機械学習 Rの基本関数や各種パッケージ
scikit-learn

などが例として考えられます。  これら全般を扱ったもの1、 収集・整理・変形などの前処理2、可視化3、特徴量エンジニアリング4、多変量解析、機械学習5など、これらについてもすでによくまとまっているものがあります。それらをよく読み込んで、実際に動かしてみる事が非常に重要です。一度もコーディングしていないのと、コーディングしているのとでは、どんなデータ形式が入力として与えればいいのか、出力の意味は何かということだけでなく、コーディングにかかる時間やオプションの調査などを含めて、時間感覚を掴んでおく事もできるからです。

さて、データエンジニアリングに必要な知識・スキルにあげた内容だけで十分でしょうか?

次節で、本書で重点を置きたい、基本的なエンジニアスキルについてまとめたいと思います。

基本的なエンジニアスキル

さて、データエンジニアリングに必要な知識・スキルにあげた内容だけで十分でしょうか? 先ほど、データ分析のフェーズとデータサイエンティストの3要素に対する知識・スキルの表をまとめました。 そこから、データエンジニアリングの部分だけ抽出し、さらにどのような技術にそれらが支えられているかをまとめてみましょう

ビジネス理解 データ理解・準備 モデリング 評価 展開
データエンジニアリング
(コーディング力)
収集
可視化
整理・変形などの前処理
特徴量エンジニアリング
多変量解析
機械学習
可視化 システムへの組み込み
データエンジニアリング
(基礎力)
Linuxの基本知識
環境構築
再現性の担保
Linuxの基本知識
環境構築
再現性の担保
Linuxの基本知識
環境構築
再現性の担保
Linuxの基本知識
環境構築
再現性の担保

(markdownの表でセルの結合がうまくできないため冗長になっています...)

上にあげたような、注目されている、エンジニアリングスキルというのは、主に、以下の3つの下支えが必要であるという認識です。

  • Linuxの基本知識
  • 環境構築
  • 再現性の担保

Linuxの基本知識・環境構築

エンジニアからデータ分析を扱うようになった方はLinuxの基本知識や環境構築についてはおそらく問題がないかと思います。最近はエンジニア出身者ではなく、モデリングを学んでからデータ分析を扱うようになった方が多いと思います。書籍などでもとりあえずAnaconda入れてjupyter notebookと打って、http://localhost:8888 とブラウザから分析して下さいとかGoogle Colaboratoryを使いましょうとなっています。それでも、データ理解・準備、モデリング、評価まではできるのである程度は問題ないですが、企業でデータ分析をする際には以下のような前提がありえます。

  • ビジネスで利用しているシステムに組み込む前提がある場合
  • データ量がローカルのPCでは取り扱えない場合

システムに組み込む事が前提であると、オンプレかクラウドなりのサーバーを使うことになります。データ量がGBどころかTB以上のデータを扱う場合も同様です。基本的にサーバーでは、ローカルのPCとは異なり、画面がありません。コマンドのみで作業することになります。また、分析環境も自分で作る必要があります。分析環境を作る際は、基本的に、デフォルトのシステムに影響しないように作り、間違えたらやり直しができるように作るようにします。また、AというPJとBというPJで条件が違う場合に、それぞれに合った環境をディレクトリを分けて作れるようにするのが良い方法です。何も考えずに、作ると元の環境に戻せなくなることもあり、それは避けたいです。なので、このような理由から、身につけておくべき知識・スキルには、前処理・モデリングだけでなく、Linuxの基本知識や環境構築の知識・スキルが必要であると言っている理由の一つになります。 最近では、それらの知識なしに分析環境が手に入れられるのがSagemakerであったり、AI Notebooksだったりするわけです。ですが、本書ではあくまでも基本をおさえる事を目的とします。基本をおさえた上で、自分でもできる、便利なツールも使える、どちらを選ぶかを状況に合わせて考えられるようになって欲しいと思います。

再現性の担保

再現性とは何でしょうか?

本書においては、同じ入力に対して、ある処理を繰り返し行った際に、同じ出力が出る事を指します。これは、ある処理ができる前提で、どのPCでもサーバーでもできる事を指します。こんな場面に出会った事があるのではないでしょうか?

  • 同じ処理が動いているはずだけど、結果が微妙に異なる
  • 自分のPCだとできるんだけど、他人のPCだとエラーを吐いて動かない

一つ目に関しては、乱数が関わっているケースが多く、こちらについては、seedを固定する事で大抵解決します。 二つ目に関して、このような状態になる原因の多くは、バージョン管理ができていない事が考えられます。入力である、データは同じ、処理してるコードも同じにする事を意識するこは比較的簡単ですが、計算環境を同一にすることに意識が向いていない事が多いです。 再現性の担保するためには、分析環境のバージョン管理は基本になります。

まとめ

  • データ分析は、フェーズごとにビジネス力・データサイエンス・データエンジニアの様々な知識・スキルが必要とされる。
  • データ分析におけるエンジニアリングスキルは、前処理・多変量解析・機械学習などのコーディング力だけでなく、下支えとなる知識・スキルが重要である。
  • CLIしかないサーバー上で基本的な作業が行えるように、Linuxの基本的な知識は身につけておくべきである。
  • 分析環境はプロジェクトごとに分けて作る事・失敗しても壊して、もう一度作り直せるような作り方をする。
  • 再現性の担保として、コード上にseedを設定する事、バージョン管理を徹底するべきである。

以上のことから、次章から以下についてまとめていきます。

  • データ分析において身につけておくべき、Linuxの基本知識
  • 分析環境構築(Python(Jupyter), R)
  • 再現性の担保するためのツール

  1. 塚本邦尊 山田典一他 「東京大学のデータサイエンティスト育成講座 ~Pythonで手を動かして学ぶデ―タ分析~」 2019
    松村 優哉, 湯谷 啓明他 RユーザのためのRStudio[実践]入門−tidyverseによるモダンな分析フローの世界− 技術評論社 2018
    Jake VanderPlas 、 菊池 彰 Pythonデータサイエンスハンドブック ―Jupyter、NumPy、pandas、Matplotlib、scikit-learnを使ったデータ分析、機械学習 オライリー・ジャパン 2018

  2. 本橋 智光 前処理大全[データ分析のためのSQL/R/Python実践テクニック] 技術評論社 2018
    中山清喬 飯田理恵子他 「スッキリわかるSQL入門 第2版 ドリル222問付き! (スッキリシリーズ)」 インプレス 2018
    Hadley Wickham , Garrett Grolemund他 Rではじめるデータサイエンス オライリー・ジャパン 2017
    Wes McKinney, 瀬戸山 雅人 他 Pythonによるデータ分析入門 第2版 ―NumPy、pandasを使ったデータ処理 オライリー・ジャパン 2018

  3. Winston Chang, 石井 弓美子他 Rグラフィックスクックブック ―ggplot2によるグラフ作成のレシピ集 オライリー・ジャパン 2013
    From Data to Viz : https://www.data-to-viz.com/

  4. Alice Zheng, Amanda Casari他 「機械学習のための特徴量エンジニアリング ―その原理とPythonによる実践」 オライリー・ジャパン 2019

  5. Rサポーターズ, 安部 晃生他 「パーフェクトR」 技術評論社 2017
    Sebastian Raschka , Vahid Mirjalili他
    [第2版]Python 機械学習プログラミング 達人データサイエンティストによる理論と実践 (impress top gear) インプレス 2018
    門脇 大輔 , 阪田 隆司他 「Kaggleで勝つデータ分析の技術」 技術評論社 2019