【ウーバーイーツ】配達データでブースティング【沖縄市】

ウーバーイーツ×沖縄市

ウーバーイーツ】配達データでブースティング【沖縄市

前回、バギングモデルを作成して、誤判別率の改善を試みた。

【ウーバーイーツ】配達データで作成した決定木を用いて判別を行ってみる【沖縄市】
【ウーバーイーツ】配達データで作成した決定木を用いて判別を行ってみる【沖縄市】 前回、配達データで決定木を作成してみた。 今回は、作成した決定木を用いて判別を行ってみる。 参考書籍・資料 主な参考箇所 1...

結果、誤判別率が0.4となり、前々回の数値より悪くなった。

今回も前回同様、誤判別率を改善できるかやってみる。

参考書籍・資料

Rによるデータサイエンス(第2版):データ解析の基礎から最新手法まで
Amazonで金 明哲のRによるデータサイエンス(第2版):データ解析の基礎から最新手法まで。アマゾンならポイント還元本が多数。金 明哲作品ほか、お急ぎ便対象商品は当日お届けも可能。またRによるデータサイエンス(第2版):データ解析の基礎から最新手法までもアマゾン配送商品なら通常配送無料。

主な参考箇所 16 集団学習

概要

扱うデータの確認

ブースティングについて調べる

ブースティングモデルを作成

使用するデータ

使用するデータは、私の配達データ。

期間は、2021年5月10日~10月31日。

上記期間の総配達件数は、1528件。※ ダブルピックも1件とカウント。

扱うデータの確認

前回同様に、3店舗の配達データを学習用データとテストデータに分ける。

合計配達単価ベース料金配達調整金店舗
1301127207マクドナルド コザ十字路店(A)
2329132219マクドナルド コザ十字路店(A)
62406150284らあめん花月嵐 美里(B)
135632185230A&W 美里店(C)

学習用データ↓

storeベース料金配達調整金店舗
1A127207マクドナルド コザ十字路店
3A135373マクドナルド コザ十字路店
5A115272マクドナルド コザ十字路店

テスト用データ↓

storeベース料金配達調整金店舗
2A132219マクドナルド コザ十字路店
4A126181マクドナルド コザ十字路店
6A125378マクドナルド コザ十字路店

ブースティングについて

今回は、ブースティングという手法を用いて、モデルの精度向上を目指す。

ブースティング(boosting)では、与えた教師付きデータを用いて学習を行い、その学習結果を踏まえて逐次重みの調整を繰り返すことで複数の学習結果を求める。そして、その結果を統合・組み合わせ、精度を向上させる。

Rによるデータサイエンス(第2版)

ざっくりまとめると、

モデルA→調整→モデルB→調整→モデルC

モデルA+モデルB+モデルC→最終出力モデル

こんな感じだろう。

ブースティングモデルを作成

書籍にならって、ブースティングモデルを作成してみる。

install.packages("adabag"); library("adabag") 
set.seed(20)
data.train <- read.table("clipboard",header = TRUE)
data.train$store <- as.factor(data.train$store)
data.test <- read.table("clipboard",header = TRUE)
data.test$store <- as.factor(data.test$store)
data.ad <- boosting(store ~ .,data=data.train) 
data.adp <- predict(data.ad,newdata=data.test) 
(res <- data.adp$confusion) 
1-sum(diag(res))/sum(res)

結果↓

ABC
A1945
B32910
C8413

Aと判別したデータが、実際にAだった場合が30個中19個。
Bと判別したデータが、実際にBだった場合が37個中29個。
Cと判別したデータが、実際にCだった場合が28個中13個。

正しく判別できた個数が61個、正しく判別できなかった個数が34個となった。誤判別率は0.36となった。

前々回の誤判別率0.39、前回の誤判別率0.4より良い結果となった。

まとめ

今回は、ブースティングモデルを作成することで、誤判別率の改善を目指した。

結果、前回の誤判別率より良い結果となった。

 

バギングモデルとブースティングモデルの精度について調べてみたところ、以下の文章を見つけた。

バギングは、弱学習器を独立に作成するため、計算を並列に行うことができます。そのため、計算時間をかけずに、比較的精度の高いモデルを得ることができます。

一方、ブースティングは、今まで作った弱学習器の弱点を補うように次の弱学習器を作るので、全体として、より精度の高いモデルを得ることができます。

バギングの意味と、ブースティングとの違い – 具体例で学ぶ数学 (mathwords.net)

今回のデータセットは、変数・行数共に少なく、計算量も少ないと予想できるため、より精度が高くなるブースティングを用いるのが良かったのだろう。

コメント

タイトルとURLをコピーしました