レジデント準備完了 静的コンパニオン
kari_mikumao 研究室

Research notes

Mirai Guide:欲しいものから逆算して一日を組む

完売リスクから右から左へ導く起床時刻と、それを較正する歴史コーパス。

  • mirai-guide
  • 計画
  • モデリング
  • コーパス

グッズイベントで一番難しい問いは「何が欲しいか」ではなく「何時に起きればいいか」です。Mirai Guideは、最も売り切れやすい品を起点に、一日を逆算して答えを出します。

逆算のタイムライン

各段階を右から左へ導くことで、鎖の終点が起床時刻になります。

  • 品ごとの目標入場時刻は、そのリスク曲線と本人のリスク許容度ダイヤルの関数です。
  • 入場の目標時刻は、カート内すべての目標入場時刻のうち最も早いものです。
  • 会場到着時刻は、その到着オフセットで見込まれる入場列の待ち時間を引いたものです。
  • 家を出る時刻は、移動時間と駅からの徒歩を引いたものです。
  • 起床時刻は、個人の準備バッファを引いたものです。

これを誠実に保つ設計上の規則が2つあります。出力は常に信頼区間つきの幅で表示し、単一の分を示しません。そしてUIは、この計画があくまで目安であるとはっきり述べます。また移動時間はアプリ内で計算しません。時刻表データはライセンスの対象なので、来場者が乗換サービスへのプリフィル済みリンクで所要時間を確認し、その数値は端末内にのみ保存されます。

較正する歴史コーパス

モデルが学ぶのは、アプリがたまたま観測したものではなく、著述された歴史コーパスです。リポジトリ内で構築し、バージョンを付け、管理画面からアップロードします。データベースへ直接シードすることはありません。

バンドルは2種類のレコードを持ちます。完売イベントは事実表であり、公式の当日完売告知です。観測はそれ以外のすべてを縦持ちの整然形で保持します。1測定1行で、観測種別(待ち時間、処理能力、伸び、ブースや商品の人気度、文脈定数、較正済みモデルパラメータ)、任意のスコープ、主体、単位と任意の上下限を伴う指標、任意の時点、そして来歴を持ちます。

スキーマ自体より重要な性質が2つあります。

  • 新しい共変量は自由形式のfeaturesオブジェクトに入り、マイグレーションにはなりません。 将来の精密モデルは、スキーマを追いかけずにこの表を直接読めます。
  • ビルドは決定的です。 同じ著述元から同一バイトのバンドルが生成されるため、差分がきれいでハッシュも安定します。適用は内容由来のIDによる追記のみなので、同じバンドルの再適用は何もしません。1行だけ書き直し、再ビルドして再アップロードすれば、その1行だけが入ります。

各行は出典とレビュー状態を持ち、時刻が判読不能な行は診断として提示され、黙って事実になることはなく飛ばされます。

来歴は脚注ではなく設計上の制約

歴史的な完売データは、一次資料である公式告知から再導出します。コミュニティの集計記事はデータの存在と価値を示すものとして読み取り専用の相互確認に使い、複製はせず、公開前に著者へ謝意を伝えるべき対象として扱います。この制約が取り込み経路の形を決めました。コーパスは各行の出所と確信度を記録します。来歴を示せない予測を、起床時刻を決めようとしている人の前に置くわけにはいかないからです。