【ウーバーイーツ】チップ発生とマハラノビス距離による判別分析【沖縄市】
前回と前々回の記事より、ベース料金と外国人への配達か否かがチップ発生確率に関わりがあると分かった。


今回は、「ベース料金」と「外国人への配達」この2つの変数のみを見て、チップが発生した配達か否かを予想してみる。
参考書籍・資料
主な参考箇所 13 線形判別分析 14 非線形判別分析
概要
判別分析について調べる
↓
マハラノビス距離を求める
↓
各データと比較
↓
テスト
使用するデータ
使用するデータは、私の配達データ。
期間は、2021年7月1日~9月30日。
上記期間の総配達件数は、855件。※ ダブルピックも1件とカウント。
判別分析について
2つの変数のみでチップの発生を見極める方法を探していたところ、以下の文章を見つけた。
判別分析は、個体(あるいは対象)がどのグループに属するかが明確である学習データを用いて判別モデルを構築し、そのモデルを用いて所属不明の個体(テスト用のデータ)がどのグループに帰属するかを判別する方法である。
今回の場合で考えると、チップが発生した配達とそうでない配達で明確に分けられる。また、配達データは豊富にあるため、学習データも十分にある。
さらに、以下の文章を見つけた。
2値の目的変数に対してロジスティック回帰分析の方法を用いる2群判別分析も、非線形判別分析の一種である次節ではこれを取り上げる。
14.2 距離による判別分析
………
今回の目的変数はチップの有無のため、2値の目的変数となる。上記書籍14節の判別分析のやり方でチップの有無を予想できるかもしれない。
マハラノビス距離を求める
さっそく、「14.2 距離による判別分析」をマネて、判別分析を行ってみる。
ざっと読み流したところ、マハラノビス距離が重要らしい。
距離による判別分析には、データの分散の情報を用いたマハラノビス(Mahalanobis)距離が多く用いられている。
………
Rにはマハラノビス距離を求める関数mahalanobisがある。その書式を次に示す。
mahalanobis(x, center, cov,...)引数のxはデータ、centerは中心ベクトル、covは分散共分散行列である。
マハラノビス距離を求めるため、中心ベクトルと分散共分散行列を求める。結果を表にまとめる。
2021年7月1日~8月31日の配達データを用いた。
中心ベクトル↓
base_fee | foreigner | |
chipあるグループ | 173.237069 | 0.4525862069 |
chipなしグループ | 159.6034483 | 0.1379310345 |
※foreignerをfactor型のまま計算できなかった。そのため、0と1の数値(numeric)として計算している。
分散共分散行列↓
chipありグループ | base_fee | foreigner |
base_fee | 2145.341823 | 1.67287827 |
foreigner | 1.67287827 | 0.2488244514 |
chipなしグループ | base_fee | foreigner |
base_fee | 1458.516645 | 1.19837495 |
foreigner | 1.19837495 | 0.119248733 |
上記の結果を用いて、マハラビノス距離を求める。
> C <- mahalanobis(data[-1],chip_mean,chip_var) #チップありグループ > not_C <- mahalanobis(data[-1],no_chip_mean,no_chip_var) #チップなしグループ
各データと比較
各データとグループまでの距離をそれぞれ見てみる。
> round(cbind(C,not_C),2)
No | C | not_C |
1 | 0.96 | 0.73 |
2 | 1.25 | 0.39 |
3 | 1.22 | 6.36 |
4 | 1.17 | 0.32 |
5 | 1.5 | 6.41 |
… | … | … |
距離が短い方のグループに所属するため、No1はnot_Cに所属することになる。つまり、チップが発生しない方のグループに所属となる。
実際のチップの有無と判別結果を表に追加してみる。
No | C | not_C | 判別結果 | 実際のチップの有無 |
1 | 0.96 | 0.73 | 無 | 有 |
2 | 1.25 | 0.39 | 無 | 有 |
3 | 1.22 | 6.36 | 有 | 有 |
4 | 1.17 | 0.32 | 無 | 有 |
5 | 1.5 | 6.41 | 有 | 有 |
No5までの結果を見ると、正しく判別できたものが2つのみだった。
全データでの結果を表にまとめる。
数 | 率 | |
正解 | 401 | 69.14% |
不正解 | 179 | 30.86% |
正解の数が401個、約70%の確率で正しく判別できたことが分かる。
チップの有りと無し、どちらの予想をしたときに正解率が高かったか見てみる。
判別結果 | ||||
有 | 無 | |||
実際の結果 | 有 | 132 | 100 | 232 |
無 | 79 | 269 | 348 | |
211 | 369 | 580 |
判別結果 | |||
有 | 無 | ||
実際の結果 | 有 | 62.56% | 27.10% |
無 | 37.44% | 72.90% |
チップ有りと予想した場合は、約63%の確率で正解。チップ無しと予想した場合は、約73%の確率で正解することが分かった。
テスト
テスト用のデータ(9月の配達データ)を用いて、上記と同じように分析してみる。
数 | 率 | |
正解 | 173 | 69.48% |
不正解 | 75 | 30.12% |
正解の数が173個、約70%の確率で正しく判別できたことが分かる。この数値は、学習用のデータ(7~8月の配達データ)と比べて、大きな差はない。
判別結果 | ||||
有 | 無 | |||
実際の結果 | 有 | 31 | 51 | 82 |
無 | 24 | 142 | 166 | |
55 | 193 | 248 |
判別結果 | |||
有 | 無 | ||
実際の結果 | 有 | 56.36% | 26.42% |
無 | 43.64% | 73.58% |
チップ有りと予想した場合は、約56%の確率で正解。チップ無しと予想した場合は、約74%の確率で正解することが分かった。
テストデータを用いて、判別分析を行った結果の感想を述べると、
判別結果がチップ有りの場合の正解率が約50%で、あまり役に立たないように思える。一方、判別結果がチップ無しの場合の正解率は約75%のため、ある程度は信頼できる。
まとめ
今回は、マハラビノス距離を用いて、チップ発生の判別分析を行ってみた。
結果、分かったことは下記の2つ。
・チップ有り予想は約50%の確率で正解
・チップ無し予想は約75%の確率で正解
コメント