dely engineering blog

レシピ動画サービス「kurashiru」を運営するdelyのテックブログ

データサイエンティストと機械学習エンジニアをやって思ったこと

はじめに

こんにちは。dely開発部の伊ヶ崎(@_ikki02)です。

本記事はdely Advent Calendar 2019の6日目の記事です。

qiita.com

adventar.org

昨日は当社サーバサイドエンジニアの安尾が
「スピード優先の開発で溜まった技術的負債の返済計画(サーバーサイド編)」
という記事を書きました!
新機能の開発にとどまらず
技術的負債を返済していくのはとっても素敵なことですね!
ぜひこちらも一読いただけると嬉しいです。

さて、本日は前職でデータサイエンティスト、
現職で機械学習エンジニアをしている経験から
私が感じている両職業のお話をしていきたいと思います。
まだまだ新しい職種なので、
実際はこんなことしてるんだ、と少しでもお役に立てれば幸いです。
(あらかじめお断りしておくと、 職業の優劣関係や、
どちらか片方の職業を賞賛する意図に基づくものではございません。
また、個人の体験談という位置付けとして見ていただきたく、
一般的にこうだ、と主張するものでもございませんので、
あらかじめご理解賜りますようお願い申し上げます。)

目次

データサイエンティストのお仕事

私がデータサイエンティストとしてお仕事していた際は、
主に自然言語のデータ解析と抽出を担当していました。
法人向けのビジネスで、金融機関や生命保険のクライアントが多かったです。
金融業界はセキュリティ要件が厳しく、データの社外持ち出しが難しいため、
週の2~3日くらい客先常駐することもありました。

具体的な業務のアウトプットとして3つ挙げるならば、

  1. 「①データアセスメントやPOC*1のレポート」
  2. 「②分析をするためのアドホックなプログラム」
  3. 「③ROI*2

の3つに大別されると思います。

①データアセスメントやPOC(※1)のレポート

f:id:ikki02:20191203181450p:plain
データサイエンティストの一般的な業務は統計的手法や機械学習を用いて、膨大なデータの中から一定の法則やルールを見出し、それを業務効率化/高度化の意思決定を支援することになるかと思います。 そのため、レポーティングを通して、今どのような課題があり、どういう状態だから、こうしたい、そのためにはこういう対策が必要というビジネス施策のロジックを整理して伝えることが重要になります。また、データサイエンティストが使う言葉には、統計や機械学習の専門用語が含まれるため、それを専門としない相手に分かり易く伝える、ある種の翻訳力も求められることが多いと思います。

②分析をするためのアドホックなプログラム

f:id:ikki02:20191203181558p:plain
アドホックなプログラムは、上記レポートを作成する上で必要になるデータの痕跡を探るプログラムです。私は自然言語のデータを扱うことが多かったので、例えば、社外からのQAデータを分析する場合、QAは複数の質問に分けることができるかどうか、それらを個別に扱うか、統合して全体として扱うのがよいか、など、分析対象の絞込みやデータ加工の必要性が生じます。(時に上記の細かいデータの扱い方は業務ドメインに依存するため、クライアントにどのような意図でデータを処理したかレポートすることは依然重要です。)また、機械学習アルゴリズムによるスコアリングや分類結果(ただの数字であることが多い)を用いて、次の機械学習プロセスの入力とする、出力結果を利用しやすい形式に加工する、など出力結果の処理もプログラムで書くことになると思います。ちなみに、使用する言語は個々人や各会社に寄ると思いますが、Pythonで開発することが多いと思います。

③ROI

f:id:ikki02:20191203181605p:plain
多くのデータやクライアントとお仕事する中で感じたこととして、残念ながら、データサイエンティストの価値はまだまだ社会的に認知されているとは思えません。彼らがどのような価値を生むのか、そのイメージがつきにくい方も多いと思います。まだまだ新しい職種なので仕方がないと思う反面、だからこそ、個々人の体験を表現していくことで議論を成熟させていく必要があると思うので、 僭越ながら個人の考えを記載させて頂くと、 職種としてデータサイエンティストが生む価値、それは結局はROIで計られることになるのかなと思います。

特に、大きく2つの軸があると考えます。

  • 従来業務の効率化(従来時間や手間がかかっていたことを省略化できる)
  • 従来業務の高度化(従来難しかったことができるようになる)

従来業務の効率化

f:id:ikki02:20191203181951p:plain
自然言語の文脈で言うと、何かしらの電子文書*3を毎日なり毎週なり読む業務があると思います。この際、まずは読まなければならない文書数に対して時給なりの単価を掛合わせ、総コストを定式化します (例:総コスト = 読まなければならない件数 ÷ 1時間に読める件数 × 時給)。ここで機械学習のソリューションを用いて、読むべき文書の優先順位付けや絞込みを実現し、上式の読まなければならない件数(または時間)を半分にできる場合、それがリターンに相当します。このリターンに対して必要なPOC経費や開発コストが見合う場合、意味のある取り組みとみなせると思います。

従来業務の高度化

f:id:ikki02:20191203182018p:plain
上述の効率化については、従来業務が比較対象として存在するため、コスト計算は実はそんなに難しくありません。(論理的には。。。クライアントの業務を理解しそれを表現する際は、気を使うべきことも多く実際は結構難しいです。笑)もちろん金額に換算することが必ず正しいわけではなく、そのような場合は高度化の取組みが該当すると考えます。実際、従来業務を高度化し代替する場合*4は新しい変数が生じるため、定式化はより不確実なものになります。その結果、高度化に関する取組みは定性的な価値をより吟味することが多いように思います。例えば、アンケートの定性的な処理について、苦情を機械的に検知して迅速に対応したい、という要望が多くある一方で、感謝や賞賛の言葉をひろって担当者にフィードバックする取組事例は、優先順位がどうしても下がりがちなため、意外と少ない感覚があります。昨今の働き方改革も進む中で、このようにコストをかけて明るい職場を作っていきたいという取組みには一定の意味があると思います。

※従来業務の効率化/高度化について下記記事を参考にさせていただいています。
qiita.com

まとめてみると、定量的な効果と定性的な効果を加味して、費用対効果に見合うプロジェクトにしていくことがデータサイエンティストの役割なのかなとも思います。そのため、費用対効果が合わないと熟慮した際は、「やらない」ときっぱり断る姿勢も重要になると思います。お互い損ですからね。(それでもやる、という鶴の一声プロジェクトはなるべく避けたいものです)

僕の志向性(自動化)

f:id:ikki02:20191203182219p:plain
データサイエンティストとしてのお仕事は非常に楽しかったです。

しかし、数年間お仕事していく中で、自動化に携わりたいという気持ちが強くなりました。上部ではアドホックなプログラムについて記述しましたが、ビジネスロジックや機械学習ワークフローをコード化(MLOps)して支援することに、より重きを置くようになっている自分がいました。そこで、よりエンジニアリングに特化した機械学習エンジニアとして現職のdelyにジョインしました。(なぜ自動化に拘ったか、生産性のお話はどこかでまた書きたいです。)

機械学習エンジニアのお仕事

(少しだけ宣伝させてください)
delyはダウンロード数2000万超えのレシピ動画サービス「クラシル」と
同じく月間利用者数2000万超えの働く女性を応援するメディア「TRILL」の
2つのメインサービスを展開する事業会社です。
現在両サービスのデータ基盤の開発/運用と
機械学習を用いたシステムの開発に携わっています。

7月に入社して約半年なので、
この職業についてまだ十分に語れるわけではありませんが、
これまでの取組を通して振り返ってみたいと思います。

ETL処理*5

f:id:ikki02:20191203182848p:plain
入社初期に携わった仕事のひとつとして、ETLバッチ開発があります。クラシルでは日々多くの施策(イベント)を検討し開発しておりますが、新しいイベントの効果を測定するために、イベントログを都度追加するスタイルを取っています。新しく追加されたイベントログは、既存のインベントリに追加する必要があるのですが、こちらを日次で処理するよう、AWSのAthenaやGlueを用いて実装しています。

Glueを使えば自社データソースと連携してETLスクリプトをトリガーを指定して簡単に実行できるのですが、実際入社するまでサービスのことを知りませんでした。データサイエンティストの場合、最悪SageMakerやAthenaのようなデータサイエンス用のマネージドサービスだけで事足りることもあると思いますが、機械学習エンジニアの場合、システムが利用しているサービス全般との繋込み、すなわちアーキテクトスキルがより求められるのだと実感しました。

異常検知とマイクロサービス

こちらは入社して一番力を入れて取り組んだプロジェクトになります。上述のETLバッチ処理が新施策に対する取組(の一部)だとすれば、こちらは既存機能のユーザー利用頻度に変化がないか測定評価する機能となります。 詳細はML@Loftで登壇した際の下記資料をご覧頂きたいのですが、 簡単に言うと、ETLと異常検知(SageMakerのビルトインアルゴリズムを利用)、slack通知までの各機能をコンテナでマイクロサービス化して開発しています。事前の検証を最低限にしつつスピード重視で開発したため、まだまだ発展途上ではありますが、異常検知の精度を高める工夫をしつつ(あまり異常は起きないにこしたことはないですが)、利便性を向上させ、活用範囲を広げていけるように開発できればと考えています。

delyにおけるevent designの取組について
(注意:ONE PIECEの事前知識が必要です。)

www.slideshare.net

機械学習エンジニアとデータサイエンティストの違い

データサイエンティストは
下記3象限のスキルセットを身に付けるべきだとよく言われると思います。 f:id:ikki02:20191203190023p:plain
↑データサイエンティスト協会が公開されたデータサイエンティストのスキルセット

異論はありませんが、ビジネスはチームで動くのもまた真だと思うので、現場感では上記の役割を分担しあっているのが実態に近い印象です。

つまり、工数配分を考えるなら、

  • データサイエンティスト: 「ビジネス力」×「データサイエンス力」
  • 機械学習エンジニア:「データエンジニアリング力」×「データサイエンス力」

となると思います。

実際、機械学習エンジニアは、アーキテクトやシステム開発が主な役割となるため、分析は必要最低限しか実施しない点が、データサイエンティストとの大きな違いだと感じています。(もちろん複雑な因果推論など、時間をかけるべき時は社内のマーケティング部やユーザーの声を参考にしながら本筋から大きく外れないようにすることは大事です。)信頼性、拡張性、保守性を意識した開発が求められていることをよく感じます。

このように役割が異なるデータサイエンティストと機械学習エンジニアですが、どちらに優劣関係があるということではなく、どこに時間を割くか、その結果どこに時間をかけないかを補完し合う関係性だと考えています。
f:id:ikki02:20191203184551p:plain

最後に

もともとMLOpsや自動化に魅力を感じて
機械学習エンジニアにキャリアチェンジしましたが、
delyでは何兆円もの市場規模を誇る食の領域でシェアを取るべく邁進しています。

フーマーという中国のスーパーをご存知でしょうか?
機械学習に限らず、少しざっくりしたフードテックのお話になりますが、
中国のフーマーでは、

  • 在庫をなるべくもたない倉庫でありスーパー
  • 買い物をスマホで行い自宅まで30分で配送する
  • 顔認証やアリペイを使ったセルフレジ
  • 料理の配送をロボットが行う(スープは人が運ぶ)

など、ユーザー体験を向上させつつコスト最適化を試みる新しい形態が提案されています。

www.youtube.com

少子高齢化と人口減少が深刻化するこれからの日本でも
生活にかかすことのできない食を、
より便利に、よりおいしく、より楽しめたらいいなと考えています。
delyでそんな挑戦を続けることができたらいいなと思います。

次回予告

さて次回は、当社PdMの奥原が「プロダクトマネージャー1年目の教科書」というタイトルで投稿します!
すでにタイトルが面白そうです!お楽しみに!

qiita.com

adventar.org

参考

2019年版:データサイエンティスト・機械学習エンジニアのスキル要件、そして期待されるバックグラウンドについて
https://tjo.hatenablog.com/entry/2019/02/19/190000

機械学習を使った事業を成功させるために必要な考え方や人材、フェーズとは?
https://qiita.com/yoshizaki_kkgk/items/55b67daa25b058f39a5d

データサイエンティスト協会「ミッション、スキルセット、定義、スキルレベル」
https://www.datascientist.or.jp/common/docs/skillcheck.pdf

アリババの新型店舗『フーマー』とは?
https://www.youtube.com/watch?v=sso6bITfuDU

Stitch Fix Algorithms Tour
https://algorithms-tour.stitchfix.com/

Netflix TechBlog
https://medium.com/netflix-techblog

delyについて

delyの開発チームについて詳しく知りたい方はこちらもあわせてどうぞ!

CXOとVPoEへのインタビュー記事はこちら!

wevox.io

*1:POC: Proof of Concept。概念実証。AI関連技術の予測結果は不確実性が高いため、実務での利用に値する性能かどうか、アイデアをひとつずつ検証してその可能性を顕在化していくプロセスのこと。

*2:ROI: Return on Investment。投資利益率のこと。要は投資したコストに見合うリターンがあるかどうか図る指標です。

*3:金融業界では決算関連資料であったり、銀行員/顧客間の金融商品案内記録、アンケート内容やメール本文、など。

*4:人が車を運転する、という活動を自動運転にする、など

*5:ETL:Extract, Transform, Loadの頭文字。データを抽出し、加工し、別システムへロードする、データが辿る一連の処理のこと。