Kaggle リクルート主催レストランの来店人数予測

※このブログの内容は個人の意見・見解となります。また、記事の内容の正確性については保証いたしません。本ブログの目的は分析結果をアウトプットしていくことによる自身のデータ分析力向上を主としています。誤りや違うアプローチの方が良いという事も多分にあると思います。後学のため、「もっとこうしたらいい」や誤りを見つけた場合はコメント欄などでお知らせいただけると有難いです。

今回は、シフト・食材を最適化し費用を削減するために来店回数予測を行う。

今回の分析概要は上記とします。
※駅近の店とその他店舗での来店回数の違いはオープンデータ入手できず未検証となります。

今回使用したデータ:https://www.kaggle.com/competitions/recruit-restaurant-visitor-forecasting/data kaggleで過去に開催されていたコンペのデータを使います。

pythonのソースコード:https://github.com/ryosuke-yakura/Recruit-Restaurant-Visitor-Forecasting

では、早速データを見ていきます。
※visit_data:来店日 visit_count:予約者来店人数 reserve_count:予約人数 visitors:来店人数

2016-05から201608までairシステムからの予約件数が減少。2016-08から2016-11までairシステムからの予約件数はほとんど0となっています。 2016-11から大幅にairシステムの予約件数が増加しています。 hpgからの予約件数は大きな変化はなく一定の推移となっています。明らかに2016-01から2016-10までと2016-11以降では傾向が異なるため周期性の判断は出来ないと考えられます。
来店人数と予約人数①2016-07までは差分が2000だが、②2016-07から2016-10までは6000、③2016-11以降からは6000と期間ごとに差分でグループに分けられます。
予約する人より圧倒的に予約しない人の方が多いことが伺えます。このことから今後の来店人数を予測する場合は2016-11以降からのデータを使用した方が精度が高くなると考えられます。 (①を入れると来店回数が低く出そうだし、②は逆に高く出てきそう)
来店人数の分布を見るとほとんどが0回であり、その後若干増加し右に裾が長い分布となっていることから負の二項分布に近い分布にあたると考えられます。

2016-11以降の曜日別平均来店人数と平均予約来店人数となります。
曜日ごとの平均人数を見るとfriday、Saturdayの平均平均人数が多い。 翌日が休みとなる週末に集中していると考えられます。来店人数には日月火<水木<金土といった傾向があります。

visitorsとの相関係数を確認すると、visit_countはとても弱い正の相関、reserve_countは相関がない lagはvisitorsの値を使用しているため相関係数が高く出ているが特徴量としては使用できないと考えます。

karaoke/partyが平均客数、平均予約数共に一番多く、Asian、international cuisineは予約がほとんどない。カラオケに予約していくことが僕自身はなかったため意外なデータです。カラオケは大人数で行く時に予約されることが多いと考えられるため平均予約数が多いのかな・・・

時間帯別の来店人数になります。来店人数が17時以降急激に増えており、夜ご飯にレストランを使用する人が多いことが伺えます。また、ランチの時間帯と比べても夜は時間帯によって5倍以上の差が出ることもあります。

仮説検証の結果は下記になります。
・予約人数と来店人数の相関係数は低く強く相関があるとは言えず当日に予約なしで来店する顧客が多くを占めている
・曜日、時間帯ごとの来店人数を見ると金曜日、土曜日の夜が多く、月から水曜、朝方の時間帯なでは少ない。

最後に来店回数を予測します。

精度が低いため実際に使用するとなると特徴量生成やモデルを考える必要がある。

このような形で分析した結果を今後は週に1回(目標)ペースで掲載していきたいと考えている。データ分析のキャリアを歩み始めたのですが、データの解釈、分析力が低いと感じ今回、このような形でアウトプットをしていくことにしたため、ぜひ、アドバイスやご指摘をいただけると幸いです。