学ぶ
2023.12.25
Yuki
3年目の長期インターン生 PDCAにまつわるエトセトラ / unerryインターンレポートvol.6
長期インターン3年目に突入したYukiです。unerryと共に歩んできた大学生活も気づけば残り半分を切りました。時間の流れの速さには驚かされますね。
さて、今回は半年間ほど携わってきた混雑予測モデル開発に向けたタスクについてレポートしていきます!
混雑予測モデル開発の始まり
このタスクは「以前収集した気象データを何かに活用できないか?」というMarioさんのご提案から始まりました。
unerryには「お買物混雑マップ」という、コロナ禍に密を避ける行動を促す目的で開発されたサービスがあります。
「お買物混雑マップ」(https://covid19.unerry.jp/)は、過去1週間における、店舗周辺の混雑度を表示するというサービスです。
この「お買物混雑マップ」に予測AIを組み合わせて未来の混雑状況を可視化してみよう!!というのが今回の狙いです。
実際どうつくるか?
今回作成するのは予測AIなので、まずは学習に使う過去のデータが必要です。過去数年分の店舗周辺の人流データと気象データを使用します。気象データには1時間ごとの天気、気温、湿度、風速など様々な要素がありますが、特徴量エンジニアリングを経て予測に役立つ要素のみに絞ることにしました。
次に、使用するアルゴリズムを決めます。時系列モデルであるARIMAモデルと勾配ブースティング木のアルゴリズムのXGBoostでモデルを作成し、計算コストと精度を比較して共に優れていた後者を採用することに。
タスクの流れ
必要な下準備が終わり、いよいよ本タスクのメインになります。
仮説 → モデル作成 → 結果の評価・分析 → 改善策の考案というPDCAサイクルを回していきます。前提として、モデルを作るにあたって過去の実測値がある期間を学習用期間と評価用期間に分けます。前者はモデル作成に、後者は結果の評価の際に使用します。
作成する予測モデルは、店舗の混雑度合いを表す数値の予測値を出力。そして次のフェーズでは実測値と、モデルから出力された予測値がどれだけ近いかを評価します。
PDCAサイクルと、そこから学んだこと
今回のタスクではPDCAサイクルを意識して回しました。その中で、PDCAの各段階で意識したこと、学んだことについて記述していきます。
P:仮説立て
この段階は、モデル作成をどのような方針で進めていくかが決まるという点で重要になります。正しくかつ優れた仮説を立ててそれを正しく実行した場合、良い結果が返ってきます。しかし、そのような仮説にはすぐにはたどり着けないので少しずつ条件を変え、考えながら色々なパターンを試していきました。
D:モデル作成
このフェーズは、理科の実験のようなものでした。理科の対照実験では、ある条件の効果を調べるために他の条件は全く同じにするという手法を取りますよね。モデル作成ではそれと同じことをするよう意識しました。つまり、新たな仮説の効果を調べるために学習データの範囲やモデルのパラメータ等を同じにするということです。一見単純なことに思えても、気を抜いていると条件が変わっていたということが起こるため、この点は逐一確認していました。
C:評価・分析
モデル作成の次はその評価と分析に入ります。評価では予測モデルが出した予測値がどれだけ正確かを数値化します。この評価のフェーズで考慮すべきは達成したい基準値です。今回初期に設定したクライテリアは実測値と予測値の相関係数0.8を基準とし、予測対象の店舗全体でその値に届くようにするというものでした。
しかし、対象店舗全体のモデルで相関係数0.8超えを達成することは難しいことが分かってからは、その基準を超える店舗群の調査や対象とする店舗を絞り込んでのモデル作成を行うことで一部の店舗で基準値を達成することを目標に変更しました。
そして、より詳細に予測モデルの特徴を把握し、良い仮説を立てるヒントを得るためにデータを可視化、分析します。たとえば、グラフからログが少ない店舗は相関係数のばらつきが大きく、ログが多い店舗は相関係数がある程度高くまとまっていた場合には、ログの多少に分けてモデルを作成すると良いのではないかという改善策が導けます。
データや予測モデルの性能をより詳しく分析・評価することで課題を見つけ、次に行うべきアクションの質を上げることに繋がります!これこそがデータ分析で結果を深掘りする大きな目的です。
A:改善策の考案
ここでは評価・分析を受けて、そこから得た事実や気づきを活用していきます。
予測モデルの精度を上げるためにはどのような改善策が考えられるかを実現可能性も考慮しつつ探していきます。このとき重要になるのは、分析でどれだけ詳細に現状の予測モデルに対する理解ができているかです。
例えば、スーパーとホームセンターでは来客数やお客さんが来店する周期が違うことが分析で判明していれば、お店のカテゴリ別に予測モデルを作成した方が良いのではないかという考察ができます。詳細な分析が出来ていればいるほど鋭い考察ができるようになり、良い改善策につながることを実感しました。
PDCAと私
以上のPDCAサイクルを通して学んだことは、PDCAサイクルは定量的に良し悪しが分かるタスクに最適なフレームワークだということです。
ある問題に対して、それをどう解決し、あるいは次の課題が何かを1サイクル毎に記録していけば、後で見返したときに変更の履歴が一目で分かります。予測モデル開発に限らず、アプリ開発やお店の経営など、常にアップデートが求められる事象には積極的に取り入れた方が良さそうだという学びを得ました!
1回のサイクルではそれほど大きな効果はありませんが、それを数回、数十回と繰り返すことで確実にアウトプットの質が改善されていきます。つまり、継続的な改善が見込めるというわけです。また1サイクルで毎回結果が出るため、おかしな結果が出た際はその原因を素早く特定し、修正できます。そのような小回りの効きやすさもPDCAサイクルを採用するメリットだと思います。
大変だったこと、難しかったこと
大変だったこと:
モデルの学習に使うデータの整形と整理です。蓄積されたデータはそのままでは学習に使えないので、形を整える必要があります。PDCAサイクルを回していく中で変える条件によっては学習に使うデータ自体を変更する必要が出てくるため、その都度データセットを使い分ける必要があります。また、使い分けたデータセットや作成したモデルを後で見返しやすいように整理もしたので、この点は時間がかかり、大変でした。
難しかったこと:
PDCAサイクルから導かれた結果をもとに次の仮説を立て、それを正しく実行することです。本質を突いた鋭い仮説を正しく実行することが出来たPDCAサイクルでは良い結果が返ってきます。頭ではわかっていても最初はなかなかうまくいかず、想定した結果が出ずに苦労しました。
しかしPDCAサイクルは同じプロセスを何度も繰り返すため、難しかったことも回を重ねるごとに慣れていきました。その結果、正確かつ効率よくサイクルを回すことが出来るようになりました。この点もまたPDCAの良い点だと思います。
今後やりたいこと
今後やりたいことは社内で使えるプロダクトの開発です。
今回の混雑予測モデル開発のタスクを経て、取り組んでいるタスクに役立ちそうなunerryが持っているデータを瞬時に見つけてくれるものがあれば便利で、かつタスクの完成度を高くできるのではないかと感じました。そこで Vertex AI Search を用いて、unerryの抱えるデータの検索を容易にしてくれる自然言語処理AIを使ったプロダクトを開発してみたいと思っています。一言で表せば、unerry用にカスタマイズされたチャットボットです。文章で取り組んでいるタスクに関する質問を送ると、それに対して有効なデータやアプローチを提供してくれるといったイメージです。
まだまだ学ぶことはとても多いですが、今後は今までのタスクで学んだことを活かして何かを作ることにも力を入れていきたいと思います!
インターンは現在も募集中!!
ご興味いただけた方はぜひインターン募集ページよりご応募ください!(うねりの泉編集部)
この記事を書いたのは
-
Yuki 記事一覧
unerryでインターン中の慶應義塾大学 総合政策学部に在学中の3年生。データサイエンティストを目指してプログラミングやデータ分析について勉強中。趣味はアニメ鑑賞と対戦ゲーム、eスポーツの大会観戦。アイコンは我が家の愛犬のトイプードル、モコです。
ABOUT
「うねりの泉」は、「リアル行動データ」活用のTipsやお役立ち情報、そして会社の文化や「ひと」についてなど、unerryの"とっておき"をご紹介するメディアです。