Instacartは、フルフィルメントチェーンで失われた需要を見つけるために、機械学習をどのように使っていますか?
我々は顧客が注文をするときから多くの配達オプションを与えます – 彼らは1時間から1週間後まで及ぶ配達時間枠を選ぶことができます。 また、指定のスーパーでは、注文した食料品を受け取ることもできます。 選択肢が増えると、フルフィルメントチェーンが複雑になり、複雑さが増すと効率が低下する可能性もあります。 そして我々にとっては失われた需要(lost demand)の測定は一番難しいことです。
交通状況、天気、シフトキャンセルなどの外部原因が、ショッパーの空き状況やアプリ内で表示された配達オプションに影響を与えることがあります。もしショッパーの人数は顧客の注文数より少ない場合、オーバーコミットメントを回避するために、アプリから配達オプションを非表示にする必要があるかもしれません。 たとえば、ボストンマラソンの午前中にマサチューセッツ州ブルックラインの2時間配達オプションがアプリに表示されない場合があります。これは、一部のショッパーが渋滞のせいで間に合わない可能性があるためです。 ショッパーの空きがないためにオプションを非表示にすると、代わりに顧客が自分で食料品を購入することがあります。 その結果、彼らは注文をしませんでした。これは需要喪失(lost demand)の典型的な例です。
顧客は多くの理由で注文をしません。 たぶん友人からInstacartというサービスを紹介されて、ただサービスを一度使ってみようと思っただけ、あるいは多分彼が欲しがった食料品を見つかれなかったかもしれません。これらのケースでは顧客が注文をしない場合がありますが、私達は履行(fulfillment)目的のためにこれは需要喪失として考えません。 この記事が述べた需要喪失は下記のようです。Instacartは、顧客が希望な配達オプションを利用できなかったために注文しない場合は需要喪失と考えます。
失われた需要をモデル化するのが難しいのはなぜですか?
失われた需要を理解し見積もることは、「私達は自分が何かが知らないことについて知らない」という典型的な難問の1つです。 顧客の需要に関連してショッパーが足りない場合、需要の一部のみの状況を知るしかない。 全需要の状況を把握するためには、バランスの供給、あるいは少しの過剰供給さえも必要です。
数学的には、この需要喪失(lost demand)の問題に対して、全体図を把握しようとしたら配達オプションが完備した状況でどれだけの追加需要が得られるかはこうして問題を理解した方が良いです。
ここで、D_fは100%フルフィルメント(配達)オプションが利用できる場合に得られる結果(事実に反したもの)であり、D_aは実際に満たされた(事実上の)需要です。
実際の需要D_aが観察され、知られています(observed and known)。 一方、D_fは未知であり、観察された需要(D_a)と失われた需要(L)から構成されます。 これは失われた需要の推計という根本的なチャレンジをもたらします –我々はその反事実D_fを予測したいです(それは観察不可能なD_f)。
この未知数を推定してそれを修正しないと、我々のフルフィルメント(配達)システムに正しくないフィードバックループが発生する可能性があります。 例えば、毎日100(未知)の潜在的な注文があり、それに対して低い推計をし、90件だけの注文しか追えません。 供給不足の結果、私たちは10件の注文を失うことになります。 しかし、それだけではありません。我々が観察した90の注文は将来の注文の需要予測にフィードバックされます。その結果、我々は再び供給不足の状態になり、非効率なサプライチェーンを構築し、最終的には注文を失うことになります。
モデル方法論:需要を推定するためのカスタマーコンバージョンのモデリング
最初の段階で、私たちは、失われた需要を予測するために、モバイルおよびWebアプリケーションへの顧客の訪問数を測定する一連のヒューリスティックに頼りました。 「訪問」(visit)という用語は、1回の注文でコンバージョンファネルを通してお客様の行動として定義されます。 1回の訪問は、1日を通して複数のユーザーセッションで構成されます。 信じられないほど単純ですが、これらの初期のヒューリスティックにより、より洗練されたモデリングのためのデータが整っていないときに、失われた需要について 大まかな理解を得ることができました。 長年にわたり、コンバージョンファネルデータの着実な蓄積、フルフィルメントサービスの選択肢の拡大、そして(正直に言うと)MLチームの成長により、失われた需要の予測モデルの改善に引き続き役立ちました。
今、失われた需要を推定するためのよりスマートな方法は、フルフィルメントオプションの利用可能性の関数として顧客のコンバージョン確率を推定するモデルを構築することであると思います。 このモデルでは、「コンバージョン」を注文の完了と発注として定義でき、顧客のコンバージョン確率を1回の訪問あたりの平均注文数と解釈できます。コンバージョンデータから総需要を見積もるには、すべての顧客訪問 (customer visits) についてコンバージョン確率を合計するだけです。
例えば、ある顧客が自分のアプリを開いて、利用可能な8つの配達オプションのうち3つだけ表示されています。 この可用性状態(p_a)の下で予測コンバージョンを推定するためにモデルを利用できます。 このモデルを使って、8つのオプションすべてが使用可能である場合に何が起きたのかを推定することもできます(p_f)。p_fとp_aの違い(difference)は、その訪問(visit)に対する失われた需要(lost demand)を示しています。 その後、すべての訪問を合計して、失われた需要の合計を求めます。
2つのモデルを作る
顧客が注文プロセスの中でもう一つのステップを進め、顧客の意図をより明確にすることもできます。 失われた需要予測モデルの直近の繰り返しでは、私達は実際には2つの異なるコンバージョンモデルを作成することを選びました。1つはチェックアウト前段階からのフルフィルメントオプション利用可能データを使い、もう1つはチェックアウト段階からの類似データに頼っています。 どちらのモデルでも、ユーザーの在籍期間、過去の注文履歴、商品検索数などの追加機能を利用します。
- チェックアウト前の段階をモデル化することが重要です。 希望する配達オプションが整ってないとしたら、一部の顧客はチェックアウトに進みません。 このような顧客にとっては、チェックアウト前の段階の選択肢が重要であり、我々にとっても失われた需要を把握することに対して大きな要因となる可能性があるため、とても重要です。
- チェックアウト段階からのデータは、より高いSN比を持ちます – 顧客の意図は、チェックアウト段階で本質的に強いです。もし顧客が商品がカートに入れ、配達方法を選択した場合、購入プロセスを完了する可能性が高くなります。
2つのモデルを作成することには、1つの重要な利点もあります。チェックアウトモデルとプレチェックアウトモデルの両方を個別に繰り返すことができるため、時間の経過とともにモデルをすばやく改善できます。
モデルを検証する
適切なモデル検証は、ステークホルダー(利害関係者)との信頼関係を築くために不可欠です。 検証については、オフライン検証とオンライン検証の観点から考えます。
オフライン検証
優れたオフラインメトリクスを設定することは、機械学習モデルを迅速に繰り返しするために不可欠です。 オフラインの測定基準は、オンラインの測定基準とうまく相関するように選ぶ必要があります。 この場合は、オフラインメトリックとしてAUCを選択しました。 次に、モデルのAUCを最大化しようとしました。
オンライン検証
失われた需要は観察できないため、モデルによって生成された推定値を検証することは難しかったです。 一部の顧客に全ての配達選択肢を提供したA / Bテストでは、モデルを検証できます。 このような実験では、可用性のみによってもたらされたコンバージョンの違い(difference)を見積もることができます。 ここでの1つの課題は、すべてのユーザーに100%の可用性(配達選択肢)を提供すると、オーバーコミットと注文の遅延が発生する可能性があることです。 したがって、フルアベイラビリティを利用できる顧客数をごくわずかに制限することが重要です。
これらの実験を実行した後、モデルの推定値が実験の95%信頼区間と非常によく一致することがわかりました。 さらに、このモデルは以前のバージョンの精度から200%以上向上しました。
このモデルは正しい方向への一歩にすぎません。 フルフィルメントチェーンを管理するためのより効率的な方法を常に模索しています。 そして、私達のユーザーベースが増加するにつれて、私達の製品提供も複雑になり(そして私達のデータサイエンスチームは成長します!)、私達は独自のプラットホームの一人ひとりの顧客に効率的で便利な配達選択肢を提供するために推定モデルを改良し続けます。
このプロジェクトに貢献し、この記事のレビューを助けてくれたすべての人に特に感謝します。 Houtao Deng、Jeremy Stanley、Ji Chen、Abhay Pawar。
Instacartの機械学習チームで私と一緒に私たちの失われた需要推定モデルを改善したいですか? Instacartの求人情報を是非チェックしてみてください。
原文タイトル:Modeling the unseen
原文作者:Ganesh Krishnan
原文リンク:https://tech.instacart.com/modeling-the-unseen-6a51c9a02430