Koudai Satake
はじめに
近年、ダイナミックプライシングが注目されています。国内ではすでに、航空券に始まり、宿泊料・スポーツ観戦チケットなど、多くの業界でダイナミックプライシングが導入されています。
現在、ぐるナビ等のインターネットサービスを通じて、レストランにおいてもダイナミックプライシングが広がりつつあり、今後も拡大の一途を辿ることが予想されます。
しかしながら、レストランの経営者がダイナミックプライシング導入を検討するに当たり、十分な情報がないのが現状です。
そこで、本記事では、レストランのダイナミックプライシング導入について考えます。
そもそも、ダイナミックプライシングとは?
ダイナミックプライシングとは、需要と供給に応じて価格を調整し、売り手と買い手の適切なマッチングを実現する手段です。
例えば、需要が集中する季節・時間帯は価格を割高にして需要を抑制し、需要が減少する季節・時間帯は割安にして需要を喚起する、といった戦略が考えられます。
企業側は、利益最大化を狙った価格戦略をとることができます。
顧客にとっては、条件を選ぶことで通常より安い価格でサービスを受けることができたり、逆に通常より高い価格を支払うことで人気の高いサービスを優先的に享受できたりするといったメリットがあります。
ダイナミックプライシングは普及するのか?
日時や場所、待遇や席によるダイナミックプライシングは、すでに一部で導入されており、特に珍しいことではありません。
一方で、高度に個別化されたダイナミックプライシングに対しては、顧客に不公平感を感じさせ、顧客満足度を下げるのではないか、という言説があります。
日経ビジネスのアンケートによれば、ダイナミックプライシングは「企業にとってお得なシステム」という印象を持っている消費者が7割を超えている様です。
しかしこれに関しては、慣れと個別化の程度の問題であると考えています。
実際のところ、導入段階ではそのような顧客反応が見られる可能性はありますが、航空券のチケットに文句を言う人が少ないように、徐々に受け入れられていくものと考えています。
ただし、慣れるまでは、例え自分の予約タイミングが遅かったとしても、レストラン等において同じプラン・メニューで自分より安い価格の人がいることを知ったとき、不満感は抱くでしょう。
そのため、予約・決済は事前にオンライン上で済ます等、顧客の感情に配慮した仕組みと共に運用することが、大切になってきます。
先行事例 (国外)
本格的なダイナミックプライシングを導入しているレストランは実は少ないです。
飲食店×ダイナミックプライシングでは、飲食店をオンライン予約できるプラットフォームに、ダイナミックプライシングを導入した「DiscoEat」が有名です。
これは、ドイツの首都ベルリンで2018年に創設された比較的新しいプラットフォームです。このプラットフォームを通じて予約すると、時間帯に応じて最大50%、飲食代を割引してくれます。
また、「DiscoEat」同様、時間帯に応じて割引額を変更するレストラン用の予約サービスとしては、「eatigo」や「delinski」などがあります。
「eatigo」は、アジア7カ国10都市で展開、「delinski」は、オーストリアおよびドイツの4都市で展開しており、いずれも海外です。
ダイナミックプライシングの導入検討
レストランへのダイナミックプライシング導入を検討する際、いくつか考えるべきポイントがあります。
価格変動と顧客の反応との関係がある程度予測可能か (価格弾力性を予測できる適切なデータがあるか)
- (A)全くデータがない
- (B)日時と来店客数の関係や注文メニュー、客層などのデータがある
- (C) 実際に価格を変更してみた結果どう変化したかのデータがある
各パターンに対してダイナミックプライシングを導入する方針について、以下に述べます。
(A)のパターンの場合
(A)のパターンの場合には、最初は様子見で価格変動してみて(一時的な利益減退の可能性を許容する)、顧客の反応に関するデータを蓄積していく、ということを行なっていく必要があります。
様子見で価格変動しつつ蓄積されたデータに基づき、学習していくアルゴリズムがあります(強化学習による価格決定)
(B)のパターンの場合
(B)のパターンの場合には、既にあるデータを用いてある程度、需要予測をした上で、それに基づき価格変更を行うのが良いと思います。
最初は需要予測結果に対して価格設定ポリシーを決め打ちで決定しておいて、そのポリシーを、市場の様子を見ながら学習させていくと言う方法が有効です(教師あり学習に基づく需要予測+強化学習による価格決定)
(C)のパターンの場合
(C)のパターンの場合には、既にあるデータを用いて、ある程度の需要予測と、価格変更後の反応を予測することができます。
そのため、ダイナミックプライシング導入後の精度を事前にある程度把握することもできます。
ダイナミックプライシング導入後のデータも蓄積していき、適宜学習・アップデートをしていくことでさらに精度を上げていくことができます。(教師あり学習(モデル化))
購入した権利を施行するまでに猶予があるか
事前のデータがなく予測が立たない場合(あるいは予測精度が低い場合)には、最初は様子見で価格変動してみて(一時的な利益減退の可能性を許容する)、顧客の反応に関するデータを蓄積していく、ということを行なっていく必要が出てきますが、ここで購入した権利を施行するまでに猶予があるかどうか、という観点が大事になってきます。
すでにダイナミックプライシング導入済の、航空券チケット・試合観戦チケットなどは、数週間・数ヶ月前より予約するのが普通です。
そのため、当日の空席率は事前にある程度予測がつくため調整を図ることができます。
一方で、ほぼ当日に来客するようなサービスにおいては、そういった事前把握が難しいため、利益最大化を目指して価格を上げたものの、来客者数が減ってしまい、利益が減る、という事態になってしまうかもしれません。
顧客の反応を観測してから価格調整をかけるまでの猶予がないためです。そのため、こういったサービスでダイナミックプライシングを導入するためには、価格変動と顧客の反応との関係がある程度予測できる方がより望ましいです。
逆に言えば、何日、何ヶ月も前から予約しておきたい、なおかつ高単価であっても購入する様なプレミア感のあるサービスを提供できるレストランに関しては、顧客の反応を観測してから価格調整をかけるまでの猶予が長く、また単価も高くなりやすいため、ダイナミックプライシングの導入効果が高いと言えます。
予約・決済ができる限りオンラインで完結する仕組みになっているか
顧客のほとんどがネット予約からの来店で、決済も事前にオンラインで完結するようなレストランにおいては、ダイナミックプライシング導入のハードルがかなり下がります。
価格決定システムにダイナミックプライシングのアルゴリズムを組み込むだけで済みますし、店舗内で他の顧客の価格を知る術がない(他人の決済価格を意識しない)ので、細かくダイナミックプライシングを行なっても、顧客側に不公平感が生まれにくい、と言うメリットもあります。
昔は、街に繰り出してその場のノリで入る店を決めていた人が多かったと思います。
当然、今もそのようなことは多々あるかと思いますが、インターネットの普及やぐるナビ等のサービス登場に伴い、来店前に状況を確認したり予約してから店に向かう、と言うケースが増えつつあります。
このような状況は、ダイナミックプライシングが普及するプラス要素と言えるのではないかと思います。
ダイナミックプライシングの提案(一例)
これからダイナミックプライシングを導入しよう、という店舗の場合、初期段階で価格を変更してみた際の顧客の反応に関するデータはないことがほとんどだと思います。
そんな時に使えるのが、普段の来店客数の周期的な変化のデータです。
休日夜の時間帯が最も繁盛していて、平日午後が空いている、また、年末年始やクリスマス・祝祭日に最も売れるというのは多くの店で見られる傾向だと思います。
そういった周期的な変化のデータがあれば、まずはそれに基づいて需要予測(教師あり学習)し、単純に価格を変化させるところから始めるのが良いと思います。
そこから、その変化のさせ方を、学んでいく(強化学習)というのが王道かと思います。
目的
利益最大化
- 単位時間・単位座席あたりの平均単価向上 (売れる条件での予約は高く)
- 単位時間あたりの空席率の軽減 (売れない条件での予約は安く)
基本方針
以下の3要素によって単位時間あたりの価格を変えます。
- 日時
- プラン(座席)
- 顧客属性
運用の方針として、予め時間のブロック(枠)を区切っておいて、その枠内でサービスを提供する(コース料理など)形式を想定し、その各枠(サービス)を、如何に高く捌くかという問題に落とし込むことを考えます。
価格決定は、以下の2ステップによって行う。
- 需要予測: 過去のデータを基に予測
- 予測結果に従って価格決定: 市場の反応を見つつ最適な価格を探索
需要予測 (予約確率の予測)
予約の需要は以下3点によって予測
日時の特徴(過去データがあれば傾向が掴めそうな内容)
平日or休日、働いている時間or仕事帰りの時間、長期休暇 (年末年始・お盆・子供の長期休暇)、イベント(祭りなど)発生日であるか、天気、その日時・時間帯に利用する人の客層(シニア層or学生層)、新メニュー公開からの経過日数など。
座席(過去データがあれば傾向が掴めそうな内容)
カップル席(夜景の見える席)、個室、人の行き来が多いため避けられがちな席、出口が近いかどうか、など。
予約状況
- 当日までの日数
- 現在の空席率
(状況の例と、その場合に対応)
予約が早く埋まり始めると、それを見てさらに早期予約が促進される。
→残席数が少ないと価格を上げるなど
これらの特徴量を用いて、当該日時・当該席において予約が発生する確率を計算します。
予約ありor なしの二値分類タスクで、モデルには勾配ブースティング (GBM) を用います。これにより、各時刻、各席が埋める確率が算出できます。
参考: 勾配ブースティング
https://qiita.com/woody_egg/items/232e982094cd3c80b3ee#fnref1
需要予測結果に従って、最適価格を計算
次に、需要予測結果に従って、最適価格を計算していきますが、まだダイナミックプライシングを導入したことがなく、価格変更による市場の反応がわからない以上、最初は需要予測結果に対して価格設定ポリシーを決め打ちで決定しておいて、そのポリシーを、市場の様子を見ながら学習させていきます。
ごく簡単に言えば、価格を上げ下げしてみて、利益がどう変化するかを観測し、利益が上がった行動を次からとる確率を上げる、というものです。
強化学習と呼ばれる技術を用いて、これを実現します。
強化学習は、その時々の状況に対して、最も良いと考えられる行動を探索(学習)しながら、行動するというものです。
そのため、使えば使うほど精度が高くなるという特徴があります。
強化学習とは
強化学習は、試行錯誤を通じて価値を最大化するような行動を学習していく機械学習のモデルです。
最初の段階では、ランダムに様々な行動を行いますが、それによって得られた結果の良し悪しを評価して、どういう状況に対してどういう行動をとる価値がどの程度のものなのか、という指標を更新していきます。
そして、各状況での行動は、その指標に従って価値の高い行動を選ぶようにしていきます。これが、強化学習のざっくりとした説明です。
ここで、状態を観測し、行動判断するプログラムをエージェントと呼びます。
強化学習では、以下の3つを定義します。
状態\(s\)
状態\(s\)は、今現在の状態を表します。年末年始やお盆などのイベントによりレストランは繁盛するタイミングなのか、閑散期なのか(需要が高そうなのか、低そうなのか)といったような状態がこれに当たります。
行動\(a\)
行動\(a\)は、エージェントがとる行動を表します。
報酬\(r\)
報酬\(r\)は、エージェントがある状態\(s\)において、行動\(a\)を選択した結果として得られた良し悪しの評価結果を表します。
エージェントは、各状態\(s\)に対して行動\(a\)を取る価値を、報酬を受ける度に、更新していきます。
ここで、各状態\(s\)に対して行動\(a\)を取る価値のことを、状態行動価値(\(Q\)値)と呼び、 \(Q(s,a)\)と表現します。\(Q\)値の定義は以下です。
\(rt+1 \)は、その時得られた報酬で、 \( Est+1\)が \( st+1\)(時刻 \( t+1\)における状態)に対する価値の期待値、 \( Eat+1\)が \( at+1\)(時刻 \( t+1\)における行動) に対する価値の期待値です。
\(\gamma\)は割引率と呼ばれ、将来の価値をどれだけ割り引いて考えるかのパラメータです。この \( Q\)値を、得られた報酬に従ってどのように更新していくか、についてはいくつか方法がありますが、ここでは二つ紹介します。\(Q\)学習
\( α\)は学習率で、\( Q\)値の更新に、直近で得られた結果をどの程度反映させるかを調整します。
\( Q\)値の \( Eat+1\)は、次状態の価値の見積もりですが、その見積もりを、(現在推定されている値の)最大値として考えるのが \( Q\)学習です。
Sarsa法
\(Q\)値の \( Eat+1\)(次状態の価値の見積もり)を、実際に行動してみたらどうなったかを使って期待値の見積もりを置き換えるのが、Sarsa 法の考え方です。
強化学習の設定
強化学習を用いて、レストランにダイナミックプライシングを導入する例としては、例えば以下のものが考えられます。
状態: [需要予測結果、現在価格]
行動: [増額、維持、減額]
報酬: 直近利益が以前までの利益と比較してどうなったかにより算出
つまり、どの程度需要があるのかの予測と、現在の価格から、適切な価格の上げ下げを学習することで、最終的に、需要に対する適切な価格設定に収束していくというイメージです。
補足(システム運用面)
顧客が離れることを回避する策
ダイナミックプライシングの目的は利益の最大化であるので、「価格を上げられる時には価格をあげる」というのが基本方針です。
その結果、人気のある時期・プランにおいては高い価格を支払える人のみで席が埋まることになり、その高い価格設定を見て、予約することを諦めることになった顧客が一定数いるはずです。
それらの顧客は別の店舗に流れてしまっている可能性が高く、これは長期的に見た時に損失である可能性があります。
そこで、価格を見て離れていった顧客に対するフォローが大切になってきます。
フォローの例としては、価格を見てページを離れようとした顧客に対して、
「別の時間帯(~日何時)はいかがでしょうか?」
「こちらの座席・プランはいかがでしょうか?」
といった提案をシステム側から行う、等が考えられます。
そこで顧客のニーズを満たした提案ができていれば、別空席に案内することができ、利益の最大化を容易にすると思います。
ある意味これは、繁盛期の顧客を閑散期に分散させるといったような機能もあります。
最後に
いかがだったでしょうか?少しでも、あなたがレストランへのダイナミックプライシングを考えるきっかけになればと思います。
また、一口にレストランにダイナミックプライシングを導入するといっても、レストランの状況や、目的、データがあるか否かによっても方針は変わってきます。
ぜひ一度、相談してみて頂ければと思います。