以下の内容はhttps://www.lifull.blog/entry/2025/04/24/120000より取得しました。


数理最適化で実現する全体最適制御への挑戦

グループデータ本部データサイエンスグループの嶋村です。

今回は、弊社が運営する不動産・住宅情報サービス「LIFULL HOME'S」において、数理最適化技術を適用して事業指標の向上に挑んだプロジェクトについて紹介します。どのようにプロジェクトを推進したのかや、推進する過程で得た知見についても、お伝えしたいと思います。

プロジェクトの概要

LIFULL HOME'Sでは、不動産会社から物件広告をお預かりし、物件を探すエンドユーザへ届けるサービスを展開しております。不動産会社は自社の物件広告を多くのユーザに閲覧してもらいたいと希望する一方、エンドユーザは自分にぴったりでより魅力的な物件を見つけたいという双方の要望があります。そこで双方の視点を考慮し、全体として最適な広告表示の制御を実現するべく、数理最適化モデルを適用するという挑戦をしました。

本プロジェクトでは事業部と研究開発組織であるデータサイエンスグループが連携する取り組みとなり、私はプロジェクトマネージャとして全体を推進する役割を担いました。プロジェクトの進め方として、データサイエンティスト協会および情報処理推進機構(IPA)が公開しているデータサイエンス領域に関するタスク構造図(プロジェクトフロー)を参考にしました。以下の図はそのタスク構造図をベースに自分なりに解釈して作成したAIプロジェクトフローになります。

プロジェクトを推進する上では、取り組むべきことが多岐にわたり、関係者の数も多いことが、難しさの一つでもありました。特に、社内でAI関係のプロジェクトに関する知見やノウハウが豊富に蓄積されている訳ではないため、どのようにプロジェクトを進めれば良いのかの進め方のイメージが関係者でバラバラでもありました。そのため、誰がどのような役割をどの段階で遂行すれば成功するのかを共有するために、下記に示すようにチーム体制図や期待する役割を図で可視化をして関係者に共有をしました。

ここからは4つの各フェーズでの取り組みについて、どのように進めたのか、どのような難しさがあったのか、どのように乗り越えたのか、をご紹介していきます。なお、本来はフェーズ1から順番にフェーズ4まで進めるのが想定の流れではありますが、プロジェクトの目標期日の関係で各フェーズで独立に進められるところを見つけ、可能な限り並行して進める工夫をしました。

フェーズ1「企画段階」での取り組み

まず、最適化対象となった箇所において、どのような課題感があるのか事業部へのヒアリングから始まりました。ここでは過去データからの事実や考察(推察)など客観的な情報と主観的な情報が混ざるため、それらを整理していきました。そして、ヒアリングした情報から実際にデータを確認して、どのような状況になっており、どのような課題があるのか特定をしていきました。

そして、課題に関連する指標を向上させるために、何が必要なのか要素を分解していきました。最適化をしたとして、どのようなメカニズムで指標が向上するのか、といったモデル化をしました。ここでのモデル化は、フェーズ4における評価方法にも関係しますし、そもそもフェーズ3でどのような最適化モデルを作成するのか、そのためにフェーズ2でどのようなデータが必要なのか、と全てのフェーズに関連するため、非常に重要なプロセスと捉えています。

次に、どのような最適化であれば許容されるのか、最大化したい目的関数や制約条件に関して合意形成に取り組みました。なお、この段階ではあまり専門用語を使うと会話のハードルを引き上げてしまうため、可能な限り数理最適化を意識させるような専門用語は使わないように留意しました。本プロジェクトは関係者が多く、色々な思惑があるため、この部分がかなり苦労したプロセスになりました。また、掘り下げてヒアリングをしていくと、時には具体的な要望を引き出せる一方で強い制約にもなってしまうため、本当に気にしているポイントはどこなのか、どのような世界観を実現したいのかを重視してヒアリングするように努めました。その意志を尊重し、最適化問題として定式化した上で、その目指したい方向性に近づけるための最適化であることを丁寧に粘り強く説明を重ねました。

最後に、どのように最適化を適用するのか、データフローやシステム全体の概要を整理しました。下図はその一例です。なお、プロジェクトを推進するにあたって作成した図は、関係者とのコミュニケーションをする上で終始使うことが多かったです。関係者が多い中で、一丸となって推進するためには、全員で共通のゴールイメージを持ち、そのゴールに辿り着くために何が必要か共通のイメージを持てることが重要です。図を描くということは、時間を要する一方で、自分自身の思考整理に役立ちますし、共通認識を醸成するのにすごく有効な手段であると考えており、私は重要視しています。

フェーズ2「データ準備段階」での取り組み

フェーズ1で検討した施策内容に基づき、フェーズ2では後段のフェーズで必要なデータを準備します。単に「データ」と呼ぶだけだと何を指すのか、人それぞれ「データ」の解釈が異なることもあるため、どのような種類のデータがあるのかという整理が重要なプロセスでした。下図に整理した結果を示しておりますが、大別すると4種類のデータがあり、それぞれ誰が作るのか、誰が扱うのか、が異なります。これらを意識せず「データ」とだけ表現してしまうと混乱を招くため、この整理をしたことで認識齟齬の発生を防ぐことができました。

フェーズ2では、主にデータソースからデータマートを作成しました。まず、データマートとして何が必要なのか要件を整理した上で、データソースとして何を使うのか調査検討をしていきました。そして、データマートとして加工していくためのパイプライン処理を実装していきました。様々なデータソースからデータマートが作成されるため、タイムスケジューリングも重要でした。最適化の実行タイミングは早ければ早いほど良かったため、何時にどのデータが揃い、どの時点でデータ作成ジョブを実行すれば、何時にデータマートが完成するのか、関係部署との調整をしていきました。

また、データソースの特徴を理解していくにつれて、イレギュラーなデータが存在することもわかってきました。たとえば、欠損値や、暫定的に入力された仮の値が入っている、人間が見ると解釈できるものの意図しない箇所に値が入っている、などがありました。しかし、そのままでは最適化ができなくなってしまうため、どのような値で補完すれば最適化をする上で問題がないか、最適化側の要件を踏まえて対応策を練りました。

結果的に、フェーズ2はプロジェクト全体の中でも時間を要したフェーズとなりました。改めて、データを活用しやすい形かつ正しく形で維持するための、データ整備の重要性を実感しました。

フェーズ3「モデル開発段階」での取り組み

フェーズ3では、フェーズ1で決定した目的や要件、フェーズ2で準備したデータをもとに、数理最適化モデルの作成に取り組みました。下図は数理最適化処理の全体の流れを表しており、大別すると4段階の処理がありました。

この流れの中で、③の数理最適化はもちろん重要なのですが、その成否を分けるのは①の定数推定でした。①の定数推定が誤っていると、どのように最適化をしたとしても、結果的に誤った制御になってしまうためです。①では、推定に用いるデータはどのような特性があるのか、探索的データ分析(EDA)から始めました。何をするにしても「まずはデータの特性を理解する」というのは基本中の基本です。その上で、どのような特徴量を作り、どの程度の推定精度になるのか、評価実験を重ねました。また、時系列で見た時に値が0が多いが突発的に値が上昇する指標については、値自体を推定が難しく、0か非0なのかを推定する問題にするなど工夫も重ねました。

②の前処理は現実時間で③の数理最適化を実行するための工夫になります。愚直に解こうとすると、現実的な時間で求解できず、最適化結果を制御に使うことができない状況でした。そのため、問題の分割や、数理最適化を適用しなくても良い領域を定義するなど、計算量を削減する工夫をしました。

③の数理最適化では、ビジネス的な制約(要望)を考慮した上で、定式化に取り組みました。定式化をする上では、非線形性をどのようになくしていくか、求解可能性をどう担保するのか、という観点で苦労をしました。さらに、事業構造を理解した上で、どのように定式化するか、数理モデリングの難しさを特に感じました。数理モデリングというのは具体的な事象を抽象的に単純化して表現するので、「本当にこれで適しているだろうか」という不安がつきまといました。定式化の検討をしては、事業部側の意向を考慮できているか、意図した最適化になるかの確認をし、喧々諤々と議論を重ねました。

④のオフライン評価では、フェーズ4で本番適用をして良いのかを判断するための重要な段階でした。仮定を設定し、過去実績を用いたシミュレーションにより、オフライン評価をしました。どの程度の効果があるのかを事前検証するために、従来手法と今回の最適化手法の比較評価をしました。オフライン評価を通じて、想定通りの制御になっているか、どの程度の機会効果が見込めそうかを改めて確認しました。③で定式化をした時と想定通りの評価結果になった時はとても心地良さを感じ、チーム内で喜びを分かち合い、これで本番のオンライン評価でもいけると確信を得ました。

フェーズ4「効果検証段階」での取り組み

フェーズ4では効果検証をするために、まずは数理最適化システムのプロトタイプ実装をし、その上で評価実験をしました。

フェーズ3で作成したのは数理最適化処理のコアな部分だったため、それをシステムとして動作させるための環境整備や運用体制の整備をしました。また、どのような異常が発生しうるか、その際にどのように対処するかも、整理していきました。

弊社では施策評価をA/Bテストで評価しており、今回もA/Bテストをしました。向上させたい指標(Goal metrics)と、低下を防ぎたい指標(Guardrail metrics)を決め、さらに意図した制御をしているか確認するための指標(Other metrics)を定義しました。今回の評価実験では下図に示すように、既存手法であるAと最適化手法であるBで干渉し合うという性質がありました。そのため、A/Bテストだけでは判断がつかない可能性があったため、Other metricsを注視すると事業部側と事前に合意形成をしました。

A/Bテストを通じて、意図通りの制御になっていることが確認でき、数理最適化システムは本番適用されることになりました。一方、当初の想定通り、A/Bテストでは明確にGoal metricsで差が出ず、「良さそうだが本当に効果があったのか」とはっきりしない状態でもありました。

そこで、A/Bテスト適用前と適用後の前後比較をすることで、効果の推計に挑みました。A/Bテスト適用前と適用後では、外部環境も異なることになるため、単純な比較では正しく推計ができません。そのため、過去の実績データがA/Bテスト適用前と並行トレンドであることを仮定した上で、差分の差分法を用いて効果推計をしました。

前後比較による効果推計の結果、上図のイメージ図のように、向上させたい指標で明確な差が生じることを示すことができました。

おわりに

今回の記事では、数理最適化というアプローチを用いて、多くの関係者の要望や運用上の制約を考慮した全体最適制御に挑戦した取り組みを紹介しました。多様なニーズに応えることができる画期的な数理最適化システムを実現できたと自負しております。数理最適化は今後のLIFULL HOME'Sにおけるサービス改善の基盤となる技術であることを示すことができ、データサイエンスを活用した新たな技術応用の可能性を示唆する結果となりました。

また、プロジェクトを成功に導くにあたり、どのようなプロセスでプロジェクトを推進してきたのか、についても紹介をしました。各フェーズでどのように創意工夫をしてきたのか、少しでも読者のみなさまの参考になると嬉しいです。

引き続き、数理最適化をはじめとする有用な技術の開発や活用をしていき、より魅力的なLIFULL HOME'Sの実現に向けて邁進していきたいです。今後の取り組みも発信していきたいと思いますので、是非楽しみにしていて下さい。

最後になりますが、データサイエンスグループでは「活用価値のあるデータを創出」し「データを活用した新たな機能やサービスの研究開発」を加速して下さるシニアデータサイエンティスト(R&D)を募集しています。

興味を持っていただけた方は、カジュアル面談も行っていますのでお気軽にご連絡ください。

hrmos.co




以上の内容はhttps://www.lifull.blog/entry/2025/04/24/120000より取得しました。
このページはhttp://font.textar.tv/のウェブフォントを使用してます

不具合報告/要望等はこちらへお願いします。
モバイルやる夫Viewer Ver0.14