渋谷駅前で働くデータサイエンティストのブログ

元祖「六本木で働くデータサイエンティスト」です / 道玄坂→銀座→東京→六本木→渋谷駅前

データサイエンティスト(及び他のデータ関連職)のスキル要件(2022年版)

f:id:TJO:20220131144907p:plain
(Image by mohamed_hassan from Pixabay)

この記事は毎年恒例のスキル要件記事の2022年版です。昨年版は以下のリンクからご覧ください。

最初に正直に書いておくと、スキル要件自体は昨年版までとほぼ一緒で、大きなアップデートはありません。今回はまず最初に3職種の定義とスキル要件を並べた上で、それに解説を付すという形にしようと思います。

データサイエンティスト


第一次ブームからそろそろ10年になりますが、この「データサイエンティスト」という語だけは変わらず生き残っているところを見るに、依然として期待も幻想も含めて注目され続けている職種といっても過言ではないでしょう。ただし、10年かけて多種多様な業界に浸透していったことで、その定義やスキル要件の多様性もまた増しているという印象があります。

定義

  • データサイエンティストは「アナリスト」の延長
    • 統計分析で「意思決定を支援する(場合によっては自ら意思決定する)」のがメイン
    • 必要に応じて機械学習で「自動化の推進」も進める
    • オールラウンダー的な立ち位置のため、必要に応じてデータ基盤・データ活用体制の構築も担う

データサイエンティストと言ったら「アナリスト」の延長上にある、という僕の認識は今も昔も変わっていません。とはいえ、実態としては他2つのデータ関連職種も兼任する(させられる)ケースが多いことを踏まえて、結果として3職種を平均した感じの定義になっています。

スキル要件

ジュニアレベル

  1. 一般的なアナリストとしてのスキル
    • 分析的思考が出来る
    • BIツールなどを用いたインサイトレポートが出来る
    • 基本的なA/Bテストによる効果検証実験とそのデザインが出来る…etc.*1
  2. 『Rで学ぶ確率統計学』シリーズに該当する統計学の知識
  3. はじパタに該当する一般的な機械学習の知識
  4. ジュニアレベルの汎用的なスキル
    • SQL文法を含むデータベース操作の技術
    • クラウドの知識
    • AutoML技術の知識
    • データ前処理・特徴量エンジニアリングの技術
    • 何かしらのビジネス領域における若干年数の実務経験


シニアレベル

  1. ジュニアレベルのスキル全て
  2. ベイジアン統計モデリングの知識と確率的プログラミングのスキル
  3. ジュニアレベルの機械学習エンジニアの機械学習に関するスキル
  4. 統計的因果推論及びそれに基づく実験計画法を含む効果検証の枠組みの知識と技術*2
  5. 統計分析をアナリスト業務に用いる上で生じる解釈の問題や意思決定プロセスへの関与の仕方について詳しいこと
  6. シニアレベルの汎用的なスキル
    • 一般的なシニアアナリストorシニアエンジニアとしてのスキル
    • AutoML含むデータ分析自動化技術やML Opsなどの最先端の開発動向について十分にキャッチアップしていること
    • 専門とするビジネス領域においてデータ分析体制の構築や戦略を担ってきた経験

昨年同様にデータサイエンティストのスキル要件はそれほど手を加えていません。平たく言えばジュニアレベルは「アナリストに統計学機械学習の毛がちょっと生えたくらい」で、シニアレベルは「データサイエンティストとしてデータ分析体制全般の構築と指揮を取れる」「技術的な詳細を把握した上で具体的な戦略立案ができる」というレベル感を想定しています。


その意味で言うと、「統計分析・機械学習・データ基盤・システム開発の各領域により踏み込んだことができるアナリスト」であるべきだというのが個人的な意見です。即ち、アナリストとして事業の戦略・戦術をスケーラブルに最適化することがデータサイエンティストのメインの職務であるべきで、それ故に統計学でいえば因果推論、AutoML技術やML Opsなど多岐に渡る領域の知識と経験を備えているのが理想だと思う次第です。データサイエンティストは「アナリスト寄りのオールラウンダー」だということですね。


機械学習エンジニア


僕自身が機械学習エンジニア的な仕事から長く遠ざかっている一方で昨今のML Opsを含む機械学習システム開発の潮流をカバーできていないので、正直なところこの項は削除しようかと思ったのですが、一応参照できるように残してあります。ただし、内容自体は昨年版とほぼ完全に同じです。

定義

  • 機械学習エンジニアは「ソフトウェアエンジニア」の延長
    • 基本的には機械学習を各種システムに組み入れて開発するのが仕事で、機械学習とソフトウェア開発双方のスキルが必要
    • 日進月歩を超えるスピードで進歩する領域であるため、必要に応じて研究活動も行うことが多い

これまた昨年版を完全に踏襲しています。やはり機械学習エンジニアといったら何かしら「ソフトウェア」を開発する上で必要な機械学習を扱う仕事だということで、「ソフトウェアエンジニアの延長」という定義にしています。

スキル要件

ジュニアレベル

  1. 一般的なエンジニアとしてのスキル
    • システム設計が出来る
    • テストや運用が出来る
    • システム開発手法に秀でている…etc.
  2. 一般的な機械学習の知識
  3. 『Kaggleで勝つ』本レベルの一般的な機械学習の知識
  4. 『深層学習』第2版レベルの一般的なNN / Deep Learningの知識
  5. MLデザインの考え方を身につけていること
  6. ジュニアレベルの汎用的なスキル
    • SQL文法を含むデータベース操作の技術
    • クラウドの知識
    • データ前処理・特徴量エンジニアリングの技術
    • ML Opsの知識


シニアレベル

  1. ジュニアレベルのスキル全て
  2. 自身が扱うドメイン(画像・音声・自然言語……etc.)に特化したデータ前処理・事前分析の技術
  3. 自身が扱うドメインに特化したNN / Deep Learning技術の知識及びその実装スキル
  4. ML Opsのスキル及びその十分な実務経験
  5. 各種トップカンファレンスやarXivの論文含めてNN / Deep Learning含む機械学習分野の最先端の研究開発動向に詳しいこと
    • 実際に自身で研究開発を遂行する能力(optional)

同様にスキル要件そのものもそれほど大きくは変えていません。ジュニアレベルは「エンジニアが機械学習も出来る」ぐらいの雰囲気に留めた一方で、シニアレベルは「ML Opsを踏まえて機械学習システム開発プロジェクト全体を指揮できる」ぐらいのレベル感としています。


データアーキテクト


昨年から例示するようになった3番目の職種ですが、何度か書いているように実は僕が現在所属するチーム&現在自分がリードするサブチームには以前から存在する職種なので、個人的にはあまり新鮮味を感じないのです(笑)。

定義

  • データアーキテクトは「DBエンジニア」の延長
    • データ利活用業務のために、データ基盤・データ活用体制を構築&整備する
    • データ基盤のオーナーシップを持つことが多く、付随する業務として分析向けデータ抽出やダッシュボード構築なども請け負う

これまた昨年版からの変更点は特にありません。

スキル要件

依然としてデータアーキテクトに関してはジュニア・シニアのレベル差がまだ個人的にはピンと来ていないので、一旦全レベル共通のスキル要件的なものをリストアップしておきます。

全レベル共通

  1. SQL含めて一般的なDB操作に通じている
  2. DWH / データマートの構築・整備スキルを有している
  3. データ分析(統計分析・機械学習問わず)の目的に応じてDBを操作&データ抽出ができる
  4. ダッシュボード構築などデータ基盤に付随する分析業務も担える
  5. 計算負荷を考慮したSQLクエリが書ける&テーブル設計ができる(optional)
  6. ビジネスにおけるデータ活用の全体像を踏まえて業務展開ができる(optional)

端的に言えば、データアーキテクトとは「多数のDBからなるデータ基盤を束ねて管理し活用するためのスキル」であり、ここを起点としてデータサイエンティストや機械学習エンジニアの仕事が回っていくということを想定したものです。その意味ではデータアーキテクトこそが「組織のデータ活用における最後の番人」であるとも言えるでしょう。


ただ、データアーキテクトという仕事は単純なデータ集計・監視業務もカバーすることが多い印象があり、それ故に意思決定層であるエグゼクティブからの依頼に応えるような仕事を手がけることもままあるように見受けられます。その点では、データサイエンティストや機械学習エンジニアよりもさらに「ビジネス職種」としての適性が求められるのではないかと考えています。


なお、多くのデータ基盤の現場で問題になるのが計算負荷などシステム側のリソースを考慮した管理体制のあり方だったりするので、その点も今回のバージョンでは盛り込んであります。


コメントなど


スキル要件を考えるに当たって、重要だと思ったことの大半は昨年の記事に書きました。

完全に繰り返しになりますが、データサイエンティスト(もしくは機械学習エンジニア)というプロの専門家としてある程度しっかりやっていきたいのであれば、相応に統計学機械学習の理論やアルゴリズムについてきちんと体系立てて学ぶべきだと個人的には思うのです。何故なら、コードを書いて実装するという領域の外側にうまくいかない理由があることが統計分析や機械学習では多いからです。言い換えると「コーディングや実装だけではコントロールできない統計分析や機械学習の『振る舞い』を理解する」べきだ、ということですね。


そして、それらの体系は日進月歩を通り越して秒進分歩という勢いで進化し続けています。なればこそ、その進化に追い付いて時代に取り残されないためにも「学び続ける姿勢」が大事だと考える次第です。裏を返せば、時代に取り残されたデータ分析職は活躍の場を失っていくかもしれない、ということです。


上記の3職種のスキル要件は、基本的にはそれらの「体系的な知識・技術の習得」「学び続ける姿勢」のあり方を具現化させたものとして列挙したものです。よって時代の推移とともにリストの中身は移り変わっていくものと思いますが、「体系的な知識・技術の習得」「学び続ける姿勢」という軸さえしっかりしているデータサイエンティストたちの活躍の場は今後も確実に存在し続けると確信しています。


最後に


これまで、定期的にというかほぼ毎年のように「データサイエンティスト向け推薦書籍リスト」記事と「データサイエンティスト+α職種のスキル要件」記事を書いてきましたが、データ関連職が社会に浸透するようになった一方で、職種の多様化もあって段々とこれらの記事のような「画一的な基準」的なものの必要性も段々と薄れてきているように見受けられます。


2015年に最初のスキル要件記事を書いた時は1300を超えるブクマがついたものですが、それも今は昔。ここ数年は業界の人からすらも顧みられることが減ったように思います。言い換えると「歴史的使命が終わった」ということですね。


ということで、これら2つの記事は今年2022年をもって毎年の更新は終了します。今後は2022年版リストに大幅な変更を加える必要があると僕が認めた時のみ、リスト類を更新した記事を書くことにするつもりです。悪しからずご了承下さい。

*1:『効果検証入門』の実験に関するパートは大体把握しているというレベル

*2:『効果検証入門』及び関連書籍の内容に該当するレベル