停電預測挑戰賽 - 評量說明

競賽目標

運用台電停電通報系統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

是一種衡量預測值與真實值相近程度的評量指標,定義如下:

  • 表示村里總數、 表示第 村里的真實停電戶數 表示第 村里的預測停電戶數

  • 指標其值介於 指標越大表示預測準確度越高。

  • 指標對於數值較大的 有更高的敏感度,適用於預判災害較嚴重的村里

  • 在同樣的預測模式下,指標受到 為零的數目所影響,未停電的村里數越多難度越高

results matching ""

    No results matching ""