はじめに
「データサイエンティスト」という、世間に定着しているのかよくわからない職業を名乗るのも恥ずかしいところではあるのですが、
自分のキャリアプランや後任の育成などを考えると、この職に必要なスキルについてまとめたいという思いがあり、掲題のような記事を書いてみることにしました。
個人の経験基づく考えのため、誤った部分も多いかと思いますが、誰かしら興味がある方のお役に立てば幸いです。
私について
参考程度に書いておきます。
データサイエンティストになる前
- 大学で工学(機械、電気、情報辺り)を専攻
- テキスト系ビッグデータを利用した、機械学習についての研究
- プログラミング歴10年くらい
- webアプリの開発経験
自分で言うのもどうかと思いますが、この業界に入るには相当有利なバックグラウンドだったと思います。
データサイエンティストになってから
サービスデータの分析提案とかデータソリューションのロジック開発とかしてます。
ごりごりのシステム開発や基盤整備、運用は経験したことないです。
データサイエンティストの定義
定義は色々あるかと思いますが、この記事の中では、
「ビジネス上の課題に対して、データ分析が活用できる人材」
としたいと思います。
必要なスキル
本題です。
この記事を見ている人は、何かしら「データサイエンティスト」に興味があるかと思うので、データサイエンティスト協会が定義したスキルセットもご存知かもしれません。
ここではデータサイエンティストとして求められるスキルとして以下の3つが定義されています。
1.ビジネス 力(business problem solving):課題背景を理解した上で、ビジネス課題を整理し、解決する力
2.データサイエンス 力(data science):情報処理、人工知能、統計学などの情報科学系の知恵を理解し、使う力
3.データエンジニアリング 力(data engineering):データサイエンスを意味のある形に使えるようにし、実装、運用できるようにする力
概ねこの定義に相違ないので便乗しつつ、私はもう少し荒い粒度で書いていきます。
3つのスキルの関係性
短期間で解決するようなビジネス上のデータ分析による課題解決は、大体以下のような手順で進みます。
- 問題定義 : ビジネス上の課題に対して、データ分析で解決したい目的の設定
- 分析設計 : 分析目的の沿った分析内容の定義
- データ加工 : 分析内容を行うのに最適なデータへ処理する
- 分析実施 : 分析手法に沿って、分析を実施
- 分析解釈 : 分析結果から知見を得る
- 課題解決 : 得られた知見から、ビジネス上のアクションを決定する
1.と6.の上流の部分は「ビジネス」に関するスキル、
下流の実作業(3.と4.)に関しては、「データエンジニアリング」のスキル、
上流と下流の架け橋となる部分(2.と5.)に必要なスキルが「データサイエンス」といったイメージ。
ビジネススキル
ビジネス上でデータ分析を活かしていくためのスキルです。
- 問題を正しく把握、解決するためのビジネス知識
- ビジネス課題を整理して、必要なデータ分析目的の立案
- 分析方法や結果を適切に伝えるコミュニケーション、ドキュメンテーション/プレゼンテーションスキル
- プロジェクトを推進するためのマネジメント能力
コンサルティング的なところもあるので、マーケティングフレームワーク周りの知識やヒューマンスキルが必要だったりします。
また、データ分析に必要な手順や工数感は、依頼元からはあまり理解されてない場合もあり、健全に業務を進めるためには調整能力も結構重要です。
データサイエンススキル
最適な分析方法を選択し、得られた結果を正しく読み取る力です。
- 統計学を中心とした数学の知識
- 基本的な分類、回帰アルゴリズムの熟知
- 分析目的に対して、最適な分析設計ができる
- モデルを最適にチューニング、評価する能力
- 非構造データの加工、分析方法の知識
- データを最適な形式で集計、可視化し、正しく読み取る力をもつ
- 数値計算、データベース、分散処理などのビッグデータ処理に関わる知識
特に、分析手法に関しては、仕事で使うとは限らないけど、使わないとは言い切れないような知識が、非常に幅広く奥深いところです。
そういった事情があり、一般的に「データサイエンティスト」を名乗る場合、このスキルの広さ深さが重視されると思います。
データエンジニアリングスキル
実際にデータ分析を実現するためのスキルです。
- SQL、Python、Rなどの主要プログラミング言語の経験
- ETLアルゴリズムの設計、実装
- 分析データマートの設計
- 時間・空間計算量パフォーマンスや可読性などを最適化するコーディング
- 機械学習などの高度なアルゴリズムの実現
- 分散処理・クラウド基盤などを構築する能力、また扱うための基礎知識
扱うデータは、Excelは勿論、BIツールでも扱えないようなデータ量になることもあるので、プログラミングスキルがないと基本的に仕事にならないと思います。
ここでは除外していますが、システム企画、開発、運用などのSEチックなスキルも必要となる場合もあります。
データサイエンティストとして働くための最低スキル水準
ここまでで必要なスキルを色々と書き連ねましたが、これらを高い水準で兼ね備えるというのは、
- コンサルタントに匹敵するビジネススキル
- 情報科学専攻の研究者に匹敵するデータサイエンススキル
- 機械学習エンジニアに匹敵するデータエンジニアリングスキル
ということで、まー敷居高いよねって話。
ただ現状自分が見えている範囲では、その水準に達していなくても、何とかなっている場合も多いです。というか現状自分が何とかなっている。
個人的な独断と偏見で、「最低限このくらいできればやっていけるんじゃない?」という赤点ギリギリラインをまとめました。
ただし、その仕事自体は、一部同じような業務をしているだけで、データサイエンティストに求められる仕事の質ではないのかもしれません。。。
また、データサイエンティストへのキャリアチェンジをしたい場合は、この職に興味を持つ人が多いことと市場の要求水準が高いことから、赤点ラインを突破しているだけではなく、3つのいずれかのスキルで平均点を大幅に上げないと、少し厳しいと思います。
ビジネス
データ分析のインプットとアウトプットが整理できればいいので、ここの要求仕様はそこまで高くないと思います。
- ビジネス課題から分析目的に至った経緯を理解できる
- 分析内容と結果を、正しくレポーティングできる
データサイエンス
基本的な点を抑えておけば現状は何とかなると思います。
- 平均、中央値、標準偏差などの要約統計量の意味と求め方を理解している
- t検定、カイ二乗検定を行うことができる
- 決定木、K-means、ロジスティック回帰の特徴を他者に説明できる
- 仮設に対して、適切なクロス集計を実施し、結果から正しい解釈ができる
- 変数に対して、適切なグラフを作成、結果を正しく解釈できる
データエンジニアリング
データを扱えないと仕事にならないので、そこそこできないといけない部分です。
しかし、現在この辺の情報は多いので、この水準の習得に時間はかかるものの、そこまで難しくないと思います。
- SQLでおおよそのDML、DDLが書ける
- 分析設計に従ったETLアルゴリズムの実装ができる
- Python/Rなどの言語で、機械学習の実装をしたことがある
- Python/Rなどの言語で、データの集計や可視化ができる
スキルの優先順位
ここまで3つのスキルに関して並べて書いてきましたが、今後は次のような流れで、最低水準が上がっていくと思います。
- まずは、ビッグデータ分析を実践するためのデータエンジニアリングスキル
- 今後は、より高度なデータサイエンススキル
- 最終的には、コンサルティングを中心としたビジネススキルが求められる
といったところです。
現状はビッグデータをハンドリングできること自体に価値があります。「とりあえず、データは溜まってるけど利用できない」というケースが多いのです。
しかし、ビッグデータアプリケーションも高度化されてきており、今後データハンドリングの敷居が下がっていくと、より高度な分析を実施するためのスキルが重要となるでしょう。
最終的にはデータ関連のアプリケーションが成熟し、モデル作成等が自動化されるようになっていくと、データサイエンティストの目的がビジネス課題解決にある以上、コンサルタントとの垣根がほとんどなくなります。
まとめ
データサイエンティスト協会が定義したスキル要件に沿って、個人的に思う必要なスキルの水準をまとめてみました。
全てのスキルが高い水準でなくとも、現状ではなんとかなるはず。
ただアプリケーションがどんどん成長していくので、必要なスキルはどんどん増えていきますし、新しい知識・技術を学び取っていく姿勢がないと厳しい職種だとは思います。