第113話|データサイエンティストと機械学習エンジニア(もしくはデータエンジニア)、最近混同されやすい

第113話|データサイエンティストと機械学習エンジニア(もしくはデータエンジニア)、最近混同されやすい

データサイエンティストは何者なのか?

最近、エンジニアである機械学習エンジニア(もしくはデータエンジニア)と、データサイエンティストが混同される不幸が、ちょいちょい見受けられます。

似ているようで似ていない。そもそも、データサイエンティストはエンジニアではない

今回は、「データサイエンティストと機械学習エンジニア(もしくはデータエンジニア)、最近特に混同されやすい」というお話しをします。

データサイエンティスト

色々な定義はあります。

以下は、データ分析系のツールの老舗である、SAS社の定義です。

データ・サイエンティストとは、さまざまな意思決定の局面において、データにもとづいて合理的な判断を行えるように意思決定者をサポートする職務またはそれを行う人のことです

https://www.sas.com/ja_jp/insights/analytics/what-is-a-data-scientist.html

細かい部分はさておき、大まかには異論のある人は少ないことでしょう。

この定義から考えると、データサイエンティストの役割は、「データにもとづいて合理的な判断を行えるように意思決定者をサポートする」ということになります。

ポイントは、「データにもとづいて」という部分が、他の意思決定をサポートする職務と異なります。

私なりの定義

私なりの定義を述べます。SAS社の定義プラスアルファな感じになります。

データサイエンティストの役割は、「意思決定者に対し、データに基づいた気の利いたレコメンドをする人(もしくは、その自動化を実現する人)」となるのではないかと思います。

サポート」を「レコメンド」としています。

「サポート」ではなく「レコメンド」

おそらく、「サポート」の中に「レコメンド」も含まれると思われます。

「レコメンド」以外の「サポート」として、例えば「見える化」や「モニタリングレポートの作成」、「分析結果の提供」などもあることでしょう。

しかし、具体的に何をすべきなのかが見えてこないと、ビジネス成果を掴むことはできません。

では、どうすべきか?

ということで、具体的に何をすべきなのかレコメンドすればいい、となります。

レコメンドといっても、具体的にやるべきことをストレートに伝えることもありますし、やるべきことを考えさせる材料を提供する、というやり方もあることでしょう。

つまり、提供された分析結果などをもとに、何かしら意思決定する人(現場)が、何をすべきかを明確にすることができる、という状態をつくれたら、それはレコメンドとなることでしょう。

「レコメンド」の例

レコメンドには色々なやり方はあります。

具体的に1つだけアクション候補を提示する方法が、もっともシンプルです。

幅を持たせて提示することも、よくあります。

1つではなく、複数の選択肢を提示するやり方も、よくあります。電車の経路検索や、ECサイトの商品のレコメンドなどを思い浮かべて頂けると分かりやすいことでしょう。

分析レポートとして提供する場合、「提言」という形でレコメンドをすることが多いことでしょう。

レポートですので、その提言の数的根拠が提供されています。意思決定する人(現場)は、そのレポートにもとづいて、「あーでもない、こーでもない」と考え、実際にすべきことを検討していくことでしょう。

最近では、BI(ビジネスインテリジェンス)のダッシュボードとして、分析レポートを提供するケースも増えています。

ツール上で、意思決定する人(現場)は直接深堀分析ができるのが特徴です。

ところで、機械学習エンジニア(もしくはデータエンジニア)って何者

O’Reillyの記事に、データサイエンティストと、データエンジニア、機械学習エンジニアの違いを述べた記事がありました。

Data engineers vs. data scientists

The two positions are not interchangeable – and misperceptions of their roles can hurt teams and compromise productivity.

By Jesse Anderson April 11, 2018

https://www.oreilly.com/ideas/data-engineers-vs-data-scientists

データサイエンティストデータエンジニアの間に、機械学習エンジニアが君臨している感じです。

細かい点は異論もあると思いますが、立ち位置は間違っていないかと思います。

記事には、コアスキルの違いについて記載されており、コアスキルで比較すると、違いは明確になるかと思います。

コアスキルによる違い

以下が、 先ほどのO’Reillyの記事に記載されていた、データサイエンティストのコアスキルです。

At their core, data scientists have a math and statistics background (sometimes physics). Out of this math background, they’re creating advanced analytics. On the extreme end of this applied math, they’re creating machine learning models and artificial intelligence.

ざっくり言うと、「数学や統計学(人によっては物理学)のバックグランドを持ち、高度な分析を実施したり、機械学習などのモデルを構築する」となるかと思います。

以下が、 先ほどのO’Reillyの記事に記載されていた、データエンジニアのコアスキルです。

At their core, data engineers have a programming background. This background is generally in Java, Scala, or Python. They have an emphasis or specialization in distributed systems and big data. A data engineer has advanced programming and system creation skills.

ざっくり言うと、「JavaやScala、Pythonなどのプログラミングのバックグランドを持ち、分散システムやビッグデータを専門とした高度なプログラミングやシステム構築のスキルを持つ」となるかと思います。

高度な分析を実施したりモデル構築をするデータサイエンティストと、それをシステム上で実現するデータエンジニア、という感じになるかと思います。

ということは、データサイエンティストに高度なプログラミングやシステム構築を期待するのは、「ちょっと違う」ということになります。

記事の中でも述べていますが、データサイエンティストよりもデータエンジニアがより多く必要になります。

混同されると不幸なことになるかも

データを扱うという意味では同じですが、求められている仕事や、キャリアパス、教育などを考えると、大きく異なってきます

数学的なバックグランドの必要な、高度な分析やモデル構築をデータエンジニアに求めても、酷でしょう。

システム構築や計算速度の高速化をデータサイエンティストに求めても、それも酷でしょう。

実際、RやPythonなどの既存のライブラリーを使えば数学素養は必要ない! というわけにいかないのが、データ分析やモデル構築の世界です。

今回のまとめ

今回は、「データサイエンティストと機械学習エンジニア(もしくはデータエンジニア)、最近特に混同されやすい」というお話しをしました。

最近、データサイエンティスト機械学習エンジニア(もしくはデータエンジニア)は、本当に一緒くたにされることが多く、場合によっては不幸なことになります。

データサイエンティストの役割は、「データにもとづいて合理的な判断を行えるように意思決定者をサポートする」こと、もう少し言うと「意思決定者に対し、データに基づいた気の利いたレコメンドをする人(もしくは、その自動化を実現する人)」。

近くにある職種に機械学習エンジニア(もしくはデータエンジニア)というものがあります。

データサイエンティストが数学や統計学をバックグランドに高度な分析やモデル構築するの致し、データエンジニアはJavaやScala、Pythonなどのプログラミングのバックグランドに高度なプログラミングやシステム構築のスキルを持ちます。

近い場所にいても、役割分担が異なります。似ているようで似ていない。そんな感じです。この違いは、人財採用やキャリアパスの構築、教育の実施などのとき、非常に重要になってきます。