【エンジニアリング編】未経験からデータサイエンティストになる方法

以前、未経験からデータサイエンティストになる方法の記事を作成しました。

gotto50105010.hatenablog.com

そちらの記事には、データを使って仕事を始めてみましょう!と言う
本当にデータサイエンティストの駆け出しレベルを紹介させていただきました。

今回は、駆け出しから少しレベルアップした内容になります。

データサイエンティストには、具体的にどのようなスキルが求められ、
それらを習得するための方法をご紹介します。

データサイエンティストに求められるスキル

前回の記事でもご紹介しましたが、
データサイエンティストには3つのスキルが求められます。

f:id:gotto50105010:20190112115408p:plain

こちらの図で示している通り、

この3つが求められます。

大きく3つのスキルが求められるとは言え、
抽象的な内容になりますので、各スキルに関して具体的にご紹介します。

エンジニアリング編

エンジニアリングと言っても、非常に様々なスキルがあります。
本当にエンジニアとしてお仕事をされている人ほどの知識は必要無いと思いますが、
私が過去に経験して最低限必要となるスキルをご紹介します。

この3つ以外にもエンジニアのスキルは沢山あります。
しかしながら、私の過去の経験から、この3つがあれば
まず案件を進めることは可能だと思います。

プログラミング

データサイエンティストであれば、大量のデータの処理機械学習を利用します。
その際に、必須となるのがプログラミング言語です。

必要となる代表的なプログラミング言語は、

この3つではないでしょうか。

SQL

SQLデータベースからデータを取得する際に利用します。
PythonやRほど複雑な処理を行わない分、習得する壁は比較的低いと思います。

ただ、SQLが使えないと大量のデータを扱えないため、
上記のプログラミング言語の中でも必須のスキルと言えます。

SQLについて分かりやすく解説された参考書は沢山ありますが、
私は、こちらの本をおすすめしております。

スッキリわかるSQL入門 第2版 ドリル222問付き! (スッキリシリーズ)

スッキリわかるSQL入門 第2版 ドリル222問付き! (スッキリシリーズ)

こちらの本の特徴は、ドリル形式で学習した内容を確認できます。
また、学習用の無料サイトが用意されているので、
SQLを使える環境を用意しなくても、すでに用意された環境で練習できるのです。

Python, R

PythonとRは、機械学習統計学の手法を利用する際、
または、データの前処理を行う際に、利用します。

先程ご紹介したSQLよりも柔軟性は高いがゆえに、SQLよりは習得が難しいです。

そして、PythonとRどちらを使うべきなのか?
という問題がございます。

正直、どちらでも構いません
自分が使いたいと思う方を使いましょう。

ただ、私が敷いてオススメするのはPythonです。

理由としては、

  • APIや外部サービスと連携がしやすい
  • Python利用者が増えて、周りに相談しやすい

データ分析プロジェクトでは、GoogleAPIといった
外部のサービスから情報を取得するケースがあります。

その際に、公式のリファレンスを見ると、
Pythonでの接続方法は掲載されておりますが、
Rので接続方法は掲載されていないケースが多くあります。
(※Rで接続できないわけではありません)

公式で書かれている情報を参照できる方が、情報の正確性や最新性は確かです。
非公式の情報を参照する際には、その情報が正しいのか?古い場合は自分で修正する必要があります。

そういったケースを想定すると、Pythonの方が作業を進めやすいと思います。

また、最近データサイエンティスト界隈では、
R使いよりもPython使いの方が増えている印象があります。

どういった処理をするのか、便利なライブラリは存在するのかなど、
相談する方は多いほうが何かと助かりますよね。

それに加え、Python入門書として、非常にオススメの書籍があります。

みんなのPython 第4版

みんなのPython 第4版

このように入門者にとって分かりやすい書籍だけでなく、
中級者に向けた書籍もPythonは充実していると思います。

実践 Python 3

実践 Python 3

以上の点から、私はRよりもPythonをおすすめしたいと思います。

データベース

データベースと言っても、データサイエンティストがゼロから構築したり、
設計するケースは少ないでしょう。

すでにデータが格納されたデータベースを操作して、
データを取得、分析用にテーブルを作成する事が主な作業になります。

そのため、データサイエンティストが必要となる知識レベルとしては、

  • MySQLPostgreSQLなど、どういった種類のデータベースが存在するのか
  • 文字列やタイムスタンプ型のデータなど、データの型を理解する

最低限のレベルとしては、この程度かと考えております。

知識として詳しいことの方が、優秀なデータサイエンティストとして評価されます。
一方で、データサイエンティストには様々なスキルが求められるので、
データベースだけ詳しくても、優秀とは言えません。

そういう意味でも、データベースのみならず様々な知識を身に着けておきましょう。

AWSGCPといったクラウドサービス

  • 分析用にサーバーを利用する
  • データをクラウドストレージ上に保管する

こういったケースは、非常に沢山あります。
その際に利用するのは、AWSGCPといったクラウドサービスです。

アマゾンが提供しているAWSGoogleが提供しているGCPなど、
提供している会社によって料金やサービス内容に若干の差異はありますが、
サービスのラインナップは、概ね同じです。

各社サービスの差異を理解するよりも重要なことは、
このようなクラウドサービスを使いこなすことです。

分析プロジェクトを進めていると、「作成したアルゴリズムを日次で処理したい。」といった要望が発生します。 そういった際に、人間が手動で処理を開始するのではなくて、 バッチ処理用のサーバーを構築する必要があります。

他の例では、非常に大規模なデータを分析するには、
自分が利用しているPCではスペックが不足してしまいます。

その際には、クラウド上に大規模処理に向いているサーバーを構築し、
そちらで大量のデータを処理させるようにします。
処理が完了した大量のデータをクラウドストレージ上に保存します。

クラウドサービスの練習

AWSGCPは、個人でも利用する方がいるくらい非常に安価です。
まだ使ったことが無い方は、練習として自分でサーバーを構築することをオススメします。

クリックだけで簡単に構築することもできますし、
各サービスに関して解説された書籍もあるので、
一度勉強として利用される方が良いと思います。

Amazon Web Services実践入門 (WEB+DB PRESS plus)

Amazon Web Services実践入門 (WEB+DB PRESS plus)

最後に

今回は、未経験からデータサイエンティストになる方法として、
エンジニアリング編を記載させていただきました。

本当の意味で、エンジニアの知識は今回記載した内容以外にも沢山ありますが、
それらすべてを網羅して理解している必要はありません。

ただ、プロジェクトを進める中でエンジニアの方に依頼するケースもあります。
そういった際には、エンジニアリングに関して詳しい方が依頼がしやすくなります。

こちらに記載の内容は、データサイエンティストとして最低限抑えていただきたい内容になります。