こんにちは、エニグモでデータアナリストをしている井原です。
この記事は Enigmo Advent Calendar 2022の22日目の記事です。
本記事の概要
この記事は、データ分析案件の進め方に関して、課題の選定からゴールの具体化、分析完了に至るまで、私が今年実際に対応した事例でどのようなことに気をつけながら対応したのか、振り返ってみることを趣旨とした記事になります。
データ分析の案件は必ずしも具体的な目的やゴールがある時ばかりとは限りません。
漠然とした課題意識から始まり、ヒアリングを重ねて具体的な目的やゴールを明確化していくプロセスが入ることがあります。
ことによると、初めから目的やゴールが明確化されている案件の方がレアケースかもしれません。
この分析以外のプロセスの進め方について、分析そのものと同等、あるいはそれ以上に難しいと感じることが多々あります。
しかし、分析の手法やアルゴリズムの解説記事などはよく見かける一方、プロセスの進め方についてはなかなか具体的な対応事例というものを知る機会が少ない印象があります。
プロセスのフレームワークとしてCRISP-DMといった概念は存在しており、それ自体は非常に有用かと思うのですが、概念であるため解説を読むとやや抽象的な印象もあります。
これは致し方ないところもあるとは思いまして、こういったプロセスの進め方は個別状況に応じて柔軟に対応を求められる場合が多く、これをすればよいという銀の弾はないということかなと思っています。
ただ、やはり、具体的な事例でプロセスの進め方について考えてみることも重要で、自分の中で糧にしていくため、自分のやってきたデータ分析のプロセスを振り返ってみること、それをこのような形でアウトプットしてみることは、一定の意味があるのではないかと思いますのでこの機会に振り返りをしてみたいと思います。
この記事ではデータ分析をどのようなプロセスを経て実行していったか、というテーマがメインになります。
具体的な分析手法などの説明は記載しておりませんので、ご了承ください。
解決したい課題を確認する
まず初めに実施したことは、そもそもどのような課題を解決することが有益であるかを確認することでした。
状況を軽く説明すると、私は昨年エニグモにジョインしたばかりということもあり、業務や課題の理解はまだまだ浅い状態でした。
反対に、今回自分が担当したチームにメインでデータアナリストがアサインされたのも自分が初めてということもあり、ビジネス側でもデータ分析でどのようなことが出来るのか、おそらくイメージが漠然としていたであろうとも思っていました。
そのため、まずはざっくばらんに雑談という名目で、各チームメンバーにヒアリングをさせてもらいました。
この時気を付けたのはデータ分析ということにこだわらず、普段どのような業務を行っていて、メインで対応していることはどのようなことか、困っていることは何か、という相手の業務理解に集中したことです。
これは、イメージが漠然としている中でデータ分析の話に寄せてしまうと、本質的な課題が出づらいのではないかと思ってのことで、話が発散してもよいのでまずは自分の理解を高めようと思ってのことでした。
一人ひとり取れた時間は短いものでしたので、完全に理解ができたというものではなかったですが、それでも、普段チームメンバーが困っている課題をある程度把握することができました。
全ての課題に着手することは出来ないので、雑談の後で見えてきた課題に対してデータ分析でサポート出来そうなことを羅列し、ビジネスサイド側の部長と優先度の確認を行うという作業を行いました。
ちなみに、イメージとしてヒアリングした結果を以下のような表にまとめて会話を行いました。
このプロセスを経ていくつか対応するべきテーマを絞り込み、次のユースケースの具体化に進むこととなりました。
ユースケースを具体化する
対応するテーマは決まりましたが、具体性に欠ける部分がありましたので、ビジネスのユースケースを具体化していくフェーズに入ります。
※対応したテーマはいくつかありますが、ここでは「需要予測による売れ筋商品の出品強化」のテーマを例に記載します。
ここでは、実際にビジネスの対応をするチームメンバーと週次のMTGで具体的な内容をすり合わせていきました。
ビジネスでやりたいこととデータ分析のアウトプットに齟齬が生じてしまうと、有用な分析が出来なくなってしまいますので、これはかなり重要なポイントで、念入りに細かく認識合わせをしていくことが肝になります。
一つ一つ詳細に書くことはしませんが、例として具体的に確認した項目を羅列すると、
- 需要予測のデータをどのように活用するか?
- 対象としたいカテゴリやブランドはどこか?
- 商品はどの程度の粒度で確認したいか?(カテゴリ、ブランド、SKUなど)
- 予測を行いたい期間はいつからいつまでか?
- 一回きりの対応か?定常的にやりたいか?
- スケジュール感
- 分析結果のアウトプットイメージ
などの要素があります。
これらは一つずつきれいに決まっていったわけではなく、何度か会話の行き来を繰り返し、徐々にお互いの認識をすり合わせていく流れになりました。
ここで自分が気を付けたこととしては、業務理解が浅いなりにある程度の仮説をもってMTGに臨むようにしたことです。
一例として、最初、自分の中で需要予測のユースケースは以下のような想定をしていました。
- 日次で確認する
- 予測日から30日程度先の予測ができる
- 需要予測と在庫量(出品商品数)を比較して、供給不足になりそうな商品をピックアップして出品促進(※)する
※BUYMAは商品の出品もユーザーにしていただくCtoCのサービスですので、BUYMAで商品を仕入れて出品するということは基本的になく、PSさん(出品者)に出品募集を行うというアクションをとります。
しかし、話をする中でまとまっていったユースケースは以下のようなものでした。
- 季節ものの商品の仕入れ時期を狙って、メールで出品促進を行いたい
- 特に会話をしていた時期(6月末~7月初旬)は、アウターの仕入れが8月ごろから始まるので、8月に一度出品促進メールを送り、初動を見たうえで9月に再度メールを送りたい。
- アウターの売れる時期である9月~翌年1月までの需要(どのブランドモデルが特に売れるのか?)が知りたい。
- 将来的には、季節に応じたカテゴリの需要を定期的に取得して、出品促進メールを送れるようにしたい。
日次での確認や予測期間が30日程度という私の想定は間違っていたわけですが、それ自体は問題ではなく、こういうイメージで問題がないか?ここが分からないのだがどうなるか?と一つずつ確認を進めていったことで、ユースケースのイメージの齟齬がなくなっていきました。
分析ゴールの設計
ここまでビジネスのイメージが明確になると、分析ゴールは大分設計しやすくなるかと思います。
今回の場合は、
- 需要予測が業務利用可能なレベルの精度で予測可能か?という検証結果
- 今期の需要予測結果
という二つのアウトプットが必要になります。
一つ目に関して、データサイエンスに関わったことのある方ならご存知だと思いますが、予測タスクはデータの質などによって必ずしもうまくいくとは限らないというリスクがあります。
そのため、今回も作成するモデルの精度が妥当であるか否か?という検証を行ったうえで、問題がなければ二つ目のアウトプットを出すというステップを踏む必要がありました。
このリスクについてビジネスサイドにも理解をしてもらったうえで、最悪うまくいかなかった場合、ビジネスサイドである程度売れ筋の商品はナレッジとして押さえていること、そのナレッジだけでも出品促進メールの作成・配信には支障がないことの確認はしていました。
もう少し細かい話をすると、人のナレッジだけでは限界もあるだろうという前提で、この需要予測の結果を取り入れることで、より有用な出品促進が行えるとビジネスサイドが思えるかという定性的観点の検証もあわせて確認する必要がありました。
定性的観点はアウトプット結果を見てもらうことで判断するとして、定量的に需要予測が業務利用可能なレベルの精度とはどういうものか?という定義をする必要がありました。
ここではユースケースを踏まえ、
- アウターのブランドモデルにおいて、売上件数上位100件を予測できること
をメインの検証観点としました。
また、ある程度前年に比べて伸びるか否かという視点も含まれるとよいという意見があり、副次的ではありますが、
- 前年比100%、120%、150%、程度の粒度で伸長率の予測が可能か?
という点も検証することとしました。
これらの検証観点について、実際に昨年度のデータでどのような結果になるかを検証することとしました。
需要予測タスクではある期間に売れる商品件数を予測しますが、今回の目的は売れそうな商品をピックアップして出品促進を行うというものですので、必要な在庫数の考慮などは不要であり、売上件数の予測精度は(全く見ないということはないですが、)重要視しないことをビジネスサイドと合意しました。
やや余談ですが、モデルの精度をあげようとするには検証期間が短かったことや取得できるデータが限られることから、売上件数の予測精度については不安があったので、ここでハードルを下げられたことは大分ありがたく、この後の結果を見ても期待値コントロールは大事だなと感じるところでした。
結果
分析のゴールを合意出来たら、最適な予測が出せるモデルの作成を目指し、アルゴリズムやパラメータの変更、データ量(期間や特徴量)の増減などを時間の許す範囲で試しました。
ちなみに、ベースラインとして単純な直近1ヶ月の売上件数の昨年比をそのまま予測期間にも当てはめる、というルールベースの手法も試したりしています(意外と精度は悪くなかったりしました)。
最終的な結果としては、状態空間モデルを使用した予測がもっとも精度が高く、売上上位100件に入るブランドモデルのうち80件のブランドモデルを予測することが出来ていました。
伸長率の予測は細かく見ると微妙な部分もありましたが、大雑把に昨年から伸びそうか否か程度の予測は悪くなく、ここは副次的な検証観点でもあるため許容としました。
なお、売上件数の予測精度もめちゃくちゃな予測結果でも問題なので確認をしたところ、予測結果が描く期間中の週次売上件数と実績の比較結果では、大雑把に秋~冬にかけて売上件数が伸びていく予測グラフが作成出来ており(下記グラフ参照)、ビジネスサイドの定性評価も踏まえて総合的に業務利用可能であるとの判断に至りました。
まとめ
私が今年度対応してきた需要予測タスクの企画の始まり~予測モデルの検証まで、簡単にですが振り返ってきました。
この後、ビジネスサイドに今期の需要予測結果を共有し出品促進メールを配信した結果、配信後に対象商品の出品数は増加し、PSさんからも好意的な反響をいただいたとのフィードバックをいただいております。
振り返ってみて、改めてディレクションやコミュニケーションの大切さを感じることとなりました。
大きな齟齬もなく、また、よくある分析の結果が放置されることもなく、ビジネスサイドのアクションに繋がったのは、時間はかかりながらも(かけたからこそ?)相互理解を進め適切な分析を行えたからではないかと考えています。
細かくは書いていませんが、今回拙いながらプロジェクトマネジメントの知識なども要所で意識しながら案件を進めていきました。
データ分析の手法やアルゴリズムなどの勉強はもちろん重要であると思いつつ、同時にプロジェクトマネジメントやCRISP-DMなどプロジェクトを前に進めるための知識もデータアナリストとして磨いていきたいと思う1年でした。
今回の記事は以上になります。
最後まで読んでいただき、ありがとうございました。
明日の記事の担当はデータアナリストチームマネージャーの嘉松さんです。お楽しみに。
株式会社エニグモ すべての求人一覧