学ぶ

2024.01.22

ケンゴ

データサイエンティストってどんな仕事??

データサイエンティストってどんな仕事??

こんにちは、2023年1月からunerryで長期インターンをしている修士1年のケンゴです!

突然ですが、データサイエンティストがどんな仕事をしているかご存じですか?

この記事の読者の中にはデータサイエンスに興味がある大学生もいらっしゃると思いますが、大学では実務を経験する機会が少ないため、将来データサイエンスを扱う職に就いたときにどんなことをやるのかわからない、自分はデータサイエンティストに向いているのだろうかと悩まれている方も多くいらっしゃるのではないでしょうか。私もそのうちの一人でした!

本題に入る前に少しだけ自己紹介だけさせてください!

私はデータサイエンス専攻で統計学やプログラミングを学んできましたが、それらを企業でどのように活かせるかイメージがつかめていませんでした。自分がデータサイエンス職に向いているのか、また楽しく働けるのかということを確かめるために長期インターンを始めました。

unerryをインターン先として選んだ理由は人流データという未だ活用事例の少ないデータを扱うことにわくわくしたのと、面接を通してデータサイエンスの活用に非常に積極的だなと感じたからです。実際、社内の人と話すと他部署の人でもデータサイエンスに詳しくとてもスムーズにコミュニケーションを取ることができています。

unerryに入ってからいくつかの仕事を経験しましたが、その一つにデータの価値化があります。ビッグデータは収集してからなにも加工をしていない状態(生データ)では活用できず、集計や予測等の処理を施すことで価値の高いデータとなります。データの価値化を行うには、処理のロジックや、そもそもどのような処理に価値があるのか等を考える必要があります。

この記事ではデータの価値化におけるデータサイエンティストの仕事の一部と、インターンを通して学んだ観点をレポートします。

この記事を読んで、インターンを始めてみたいと思っていただければ幸いです!

どのような課題に取り組めばよいか?

まず初めにやらなければいけないのは「どのような課題に取り組むべきなのか」また、それらの設定した課題は「何をもって解決とするのか」を考えることです。

世の中には解決すべき課題が山積みです。そして、unerry のような新しい市場に挑戦するスタートアップ企業においては特に、時間も予算も限られる中で、解くべき課題の優先付けを行うことが重要である、ということは皆さんも想像するに難くないと思います。

この優先付けは、数ある課題のビジネスインパクトや、それを解決する方策の実現性やコストから考えていくことが一般的です。この優先付けは経験の浅い私はまだ行っていませんが、いずれは挑戦してみたいと考えています。

評価指標の決定とはじめての異常検知

一方で、インターンでは与えられた課題について「何をもって課題解決とするか」を考える場面は多くあり、私はこの作業が一番難しいと感じました。解析の前例がなく、モデル構築における多くの部分を自分で考えなければいけなかったからです。

「何をもって課題解決とするか」を決めるというのは大雑把に言えば指標を決めることになりますが、特にunerryの扱う位置情報を使ったデータ解析はオンライン上を探しても前例が少なく、指標に関しても標準的なものがないので自ら考えて指標を選択する必要がありました。

ここからは具体的にどんなことを考慮して指標を決めていったかについてお話します。

最初に担当したタスクは異常か正常かの2値分類を行う異常値検知でした。当初はなるべく多く異常を検知することが良いことだろうと考えていましたが、実際はそうではありませんでした。

完璧な分類ができる機械学習モデルは存在しないので、一定数の正常を誤って異常と判断してしまうことがありますが、特に異常検知において、データ全体に占める異常の割合は極めて低く、ほとんどが正常なデータセットの場合、精度がわずか数%違っても正常な値の予測に大きな影響を与えます。

出典:ゼロから理解する機械学習の評価~ ROC 曲線と PR 曲線の使い分けまで~ (https://www.softbanktech.co.jp/special/blog/dx_station/2022/0016/)

上の図は分類問題を実装した際の結果の出力で使われる混同行列で、予測結果と実際の値の間には4つのパターンがあることがわかります。TNとTPは負例と正例をそれぞれ正しく分類できた数で、FPとFNは負例を誤って正例、または正例を誤って負例に分類してしまった数を表します。

社員の方々と議論を重ねた結果、正常であるものを誤って異常と判断(FP)してしまうと全体のログ数が減ってしまい分析結果に支障が出てしまう恐れがあることを認識しました。

本タスクにおいては「真に異常なものをどれだけ多く検知できるか」だけではなく、「真に正常なものを誤って異常と判定してしまう数をどれだけ少なくするか」という主にこの2つの指標を設定し、作業を進めることになりました。

わかりやすい指標に安易に飛びつくのではなく、様々なリスクを考慮して指標を構築する必要があることを学びました。


こちらの本では理論だけでなく実例を交えて評価指標をさらに詳しく説明しているのでおすすめです!

精度が絶対的な正義なのか?

上記のステップで定めた課題を解決する方法を網羅的に調査します。Webサイトに掲載されている情報を見ることもありますが、より詳細な内容を調査したい場合は論文も読みます。

ここで気を付けなければいけないのが、ある特定の手法にとらわれないことです。例をあげると、近年深層学習が様々なタスクにおいて活用されており、精度が高いモデルを作ることができるとされていますが、モデル構築の難易度が高かったり計算時間がかかることがデメリットとしてあげられています。ここで深層学習を使いたいと最初に決めつけてしまうとモデル選択肢の範囲が狭まってしまい、深層学習以外にも精度が高いモデルはたくさんあるにも関わらず適切なモデルを選択できなくなってしまうかもしれません。こうした状況を避けるために最初はできるだけ様々な手法を選択肢として考えておくことが大切だと感じています。

また、先ほど挙げた計算時間を考慮するという点はデータサイエンティストのみならず、企業で物事を作る際の論点になると感じています。たとえば、予測精度が非常に高いモデルを構築したが、計算時間がかかりすぎるため実際にモデルを利用することができないケースがあります。ここでは精度向上のみを重視したゆえに定期実行が不可能なモデルが出来上がってしまい結果的に失敗に終わる、または大幅なタイムロスをしてしまっています。このようにならないために、損益分岐点やサービス品質などを考慮したうえでモデル選択をすることが大切です。また、このような場面ではモデルの詳細を少しでも理解していると各モデルのメリットデメリットが把握でき、モデル選択しやすくなるので、大学で学んだデータサイエンスの理論的な側面が活かされると思います。

私の担当したタスクでも計算時間について議論をする場面がありました。

上記の観点とはすこし違いますが、モデルの実装をする際にどのプラットフォームで行うかという議論もあり、選択肢としてはBigQuery ML(BQML)やPythonなどがあります。

BQMLとはGoogle Cloud(GC)上でSQLを使って機械学習アルゴリズムの実装が行える機能で、GC上にデータがある場合、非常に高速に開発を進めることができます。ただし、使えるモデルに限りがあるのと、細かい調整を行うことができないのが欠点です。

一方で、Pythonは多くのライブラリが存在しコーディングの自由度も高いため、最新の論文内容を実装することができますが、コードを書く時間が多くかかるので開発スピードはBQMLに比べて劣ります。

私が担当した異常ログ検知に用いた手法は社内では今まで前例が無かったため、どんな結果が出てくるかが未知数でした。また、期限の目安も決められていたため開発スピードが速く、結果を出すまでに時間のかからないBQMLを実装環境として選びました。モデルを作成する際に、最も精度の高いモデルを使いたいと考えてしまいがちですが、データサイエンティストが考慮しなければならないのは精度だけではないということを体感することができました。

データの整備

ある課題を解決するのに必要なデータを収集する作業です。

unerryでは行動情報を主に扱っていますが、その中にも種類があり、含まれる情報等が違うものがあるため、現時点の課題解決に役立つデータは何かを考えて収集します。

また、課題解決の最初の段階では比較的小規模のデータを使用するため、どのようなデータを取ってくればいいのか、期間はどれくらいがいいのかを考えてデータ抽出を行わないと偏ったデータセットになってしまいます。私も当初どのような考えでデータを抽出すればよいのかわかりませんでしたが、データの性質を知っている社員の方々のアドバイスをいただくことで、必要なデータ量を満たすにはどれくらいの期間を抽出すれば良いのかや、数多くあるデータソースの中からタスクにマッチしたデータソースを選択する方法を学ぶことができました。

SQLってなに..??

kaggle等のデータコンペティションではある程度クレンジングされたデータは用意されていますが、実際の現場ではそのようなことはほぼありません。

ここで活躍するのがSQLです。大学ではデータベースに触れる機会は少ないかと思いますが、企業のデータはデータベースにたまっているのが基本なので、その中から自分のほしいデータにアクセスするためにSQLを使用します。

では実務を始めるのにSQLの事前知識が必要なのか?という点ですが、私はunerryで仕事をするまでSQLはほとんど触ったことがありませんでした!最初は初めて触れるプログラム言語に悪戦苦闘しましたが、最近は徐々にコードを書くスピードが早くなっているなと感じています(まだまだ知らない機能がたくさんあるので修行中ですが..)。

SQLの習得難易度はあまり高くないので作業をしながら同時に学んでいくのが手っ取り早いと思います。

出典:出典:Google Cloud コンソールを使用する | BigQuery (https://cloud.google.com/bigquery/docs/bigquery-web-ui?hl=ja)

普段はこんな画面を見ながら作業しています。

やはり最後はコミュニケーション!!

データサイエンティストと聞くとデータ分析がメインの仕事と思われるかもしれませんが(私もそのうちのひとりでした…)、データ分析の結果を報告するまでが仕事です!

社内においてどんなに高度で精度の高い分析を行っても、一人だけで何かへ適用することはほとんどできません。なぜならデータの活用には多くの知識が必要となり、一人ですべてを網羅することはほぼ不可能に近いからです。

たとえば、ある予測モデルを本番環境にて定期実行をしたい場合、データベースやデータ処理に詳しい人と連携して作業を進める必要があります。または、何かの意思決定を行うための分析を行った場合、意思決定を行う人に分析結果を伝える必要があります。これらのような場合に、自身が行った分析結果を他人にわかりやすく報告することがとても大切になります。

報告内容を考える上で最も大事なことは、相手がどんな人なのかを理解することです。

データサイエンティストが行う業務は専門性が高いので、たとえば他部署の方と深層学習のハイパーパラメーターについて熱く語り合うことは難しいでしょう。モデルの詳細を話すのではなく、相手が興味を持っているであろうモデルの精度や、どのようなデータを必要とするのか、実行時間や計算コストはどれくらいかかるのか等を話すほうがより建設的な議論をすることができます。

一方でデータサイエンティスト同士の報告であれば、モデル構造等の詳細な情報を共有して議論することで、自分では思いつかなかったアイデアや懸念点が発見できるかもしれません。

私も業務の結果を様々な人へ共有する機会がありましたが、どこまで詳細を話せばよいのかをとても悩みました。詳しく説明しすぎて最終的な結論は何?と思われてしまった場面や、逆に説明を簡素化しすぎて色々質問をいただいた場面どちらもあり、適切な報告をするのは難しいことを実感しましたが、これからも場数を踏むことでよりよい報告ができるようになりたいです。

まとめ

私はunerryで働き始めてもうすぐ1年が経ちますが、改めて振り返るとデータサイエンスの分野は企業で働かないとわからないことがたくさんあるなと思いました。

当初は僕もデータサイエンティストはデータコンペティションのようになるべく精度を向上させることに重きをおいているものだと考えていましたが、それだけではないことを実感しました。

特に近年、機械学習分野の研究では精度の向上を大きな功績とする風潮があり、それはそれで今後の発展にとても大きな意味があると思いますが、実務の世界とは少しかけ離れています。また、モデル構築以外にもデータ抽出等データサイエンティストが担うべき業務はたくさんあることを学びました。

私は本インターンを通してますますデータを扱う仕事の楽しさを再確認し、将来はデータを扱う職に就きたいと考えています!本ブログに書ききれないことはまだまだたくさんあるので、興味のある方は実際に業務を体験して自分の目で確かめてみてください!

インターンは現在も募集中!!
ご興味いただけた方はぜひインターン募集ページよりご応募ください!(うねりの泉編集部)

この記事を書いたのは

ケンゴ

ケンゴ 記事一覧

unerryでインターン中の横浜市立大学データサイエンス研究科修士1年。趣味はメジャーリーグ観戦と楽器演奏(ジャズバンドやってます)

SHARE THIS ENTRY

ABOUT

「うねりの泉」は、「リアル行動データ」活用のTipsやお役立ち情報、そして会社の文化や「ひと」についてなど、unerryの"とっておき"をご紹介するメディアです。

POPULAR

TAGS