停電預測挑戰賽 - 評量說明
競賽目標
運用台電停電通報系統2014-2016年的歷史資料,預測2016-17年兩個颱風(梅姬、尼莎及海棠)造成全台各村里的停電戶數。
資料格式
資料預覽 (train.csv)
資料預覽 (submit.csv)
欄位說明:
CityName:縣市名
TownName:鄉鎮市區名
VilCode:村里代碼
VilName:村里名
Hagibis:哈吉貝颱風襲台期間各村里停電戶數
Chan-hom:昌鴻颱風襲台期間各村里停電戶數
Dujuan:杜鵑颱風襲台期間各村里停電戶數
Soudelor:蘇迪勒颱風襲台期間各村里停電戶數
MerantiAndMalakas:莫蘭蒂及馬勒卡颱風襲台期間各村里停電戶數
Fung-wong:鳳凰颱風襲台期間各村里停電戶數
Nepartak:尼伯特颱風襲台期間各村里停電戶數
Matmo:麥德姆颱風襲台期間各村里停電戶數
評量說明
參賽者將預測兩次颱風災損(梅姬、尼莎及海棠),分別以 Morisita-Horn similarity index 計算預測準確度,即 Megi_Pred_Score 與NesatAndHaitang_Pred_Score,取兩者的平均分數作為最終評量標準。
參賽隊伍上傳預測結果後,本競賽系統之評分公式將自動計算總分,並同步更新成績排行。
R語言程式碼
- 假設 submit.csv 為參賽者上傳的結果
- 假設 answer.csv 為本次競賽的正確答案
#' pred 表示預測結果的 data.frame with colnames
#' real 表示正確答案的 data.frame
pred <- read.csv("submit.csv")
real <- read.csv("answer.csv")
TaipowerScore <- function(pred, real){
# Morisita Similarity (CM)
CM <- function(x, y){
# Check variable type
x <- as.numeric(x)
y <- as.numeric(y)
x <- ifelse(x < 0, 0, x)
y <- ifelse(y < 0, 0, y)
# The formula
2*sum(x*y)/(sum(x^2+y^2))
}
real_1 <- real[,5] # Real value of `NesatAndHaitang`
pred_1 <- pred[,5] # Prediction of `NesatAndHaitang`
real_2 <- real[,6] # Real value of `Megi`
pred_2 <- pred[,6] # Prediction of `Megi`
# Compute equal-weight Morisita Similarity
res <- 0.5 * CM(real_1, pred_1) + 0.5 * CM(real_2, pred_2)
# Transform scale to [0, 100]
res <- ifelse(res < 0, 0, res) * 100
sprintf("%.3f", res)
}
補充說明
評分標準
參賽者將預測兩次颱風災損(梅姬、尼莎及海棠),分別以 Morisita-Horn similarity index () 計算預測準確度,即 Megi_Pred_Score 與NesatAndHaitang_Pred_Score,取兩者的平均分數作為最終評量標準。
Morisita-Horn Similarity
是一種衡量預測值與真實值相近程度的評量指標,定義如下:
表示村里總數、 表示第 村里的真實停電戶數、 表示第 村里的預測停電戶數。
指標其值介於 , 指標越大表示預測準確度越高。
指標對於數值較大的 與 有更高的敏感度,適用於預判災害較嚴重的村里。
在同樣的預測模式下,指標受到 為零的數目所影響,未停電的村里數越多難度越高。