2013年1月4日 星期五

ROCR package - ROC curve

ROC (Receiver Operating Characteristics) curve 可用於分類效益評估,包括基本概念介紹。

 1. Introduction
 2. Create an ROC curve
 3. Area Under an ROC Curve (AUC)
 4. R-package “ROCR” demo
 5. References

檔案:roc_introduction.pdf
頁數:16
大小:小於1MB

ROC package 使用說明,範例包括200筆資料。
檔案:roc_r_example.pdf
頁數:4
大小:小於1MB

# end

# 2020.3.23 中英文對照,Kappa統計量更新:

# 分類預測模型評估-混淆矩陣 (Confusion matrix) -----
# 混淆矩陣可用於監督式分類模型評估

#          | 真實P類別 真實N類別
# *******************************
# 預測P類別 | TP真陽數  FP假陽數
# 預測N類別 | FN假陰數  TN真陰數 
# *******************************
#           | P       N

# 1.TPR(True positive rate) 真陽性率, 愈大愈好 -----
# =TP/(TP+FN)
# =TP/P 
# =Sensitivity 靈敏度
# =Recall 召回率
# =Probability of detection
# =Power
# 實際為陽性的樣本中,判斷為陽性的比例。
# 例如真正有生病的人中,被醫院判斷為有生病者的比例。

# 2.FPR(False positive rate) 假陽性率, 愈小愈好 -----
# =FP/(FP+TN)
# =FP/N
# =Fall-out
# =Probability of false alarm
# =Type I error 型一誤差(α)
# =1 - Specificity

# 3.FNR(False negative rate) 假陰性率 -----
# =FN/(TP+FN)
# =FN/P
# =Miss rate
# =Type II error 型二誤差(β)
# =1 - Sensitivity

# 4.TNR(True negative rate) 真陰性率 -----
# =TN/(FP+TN)
# =TN/N
# =Specificity 特異度
# =Selectivity
# 實際為陰性的樣本中,判斷為陰性的比例。
# 例如真正未生病的人中,被醫院判斷為未生病者的比例。

# Precision 精確度 -----
# =TP/(TP+FP)

# Accuracy 正確率(準確率) -----
# =(TP+TN)/(TP+FN+FP+TN)
# =(TP+TN)/(P+N)

# 混淆矩陣計算須有真實資料(實際資料),預測資料(分類器)

# 使用 caret 套件計算混淆矩陣, Kappa統計量

library(caret)

lvs <- c("normal", "abnormal")

truth <- factor(rep(lvs, times = c(86, 258)), 
                levels = rev(lvs))

pred <- factor(c(rep(lvs, times = c(54, 32)),
                 rep(lvs, times = c(27, 231))),
               levels = rev(lvs))

xtab <- table(pred, truth) # table(列, 行)

xtab # class: table

confusionMatrix(xtab)

# Accuracy : 0.8285
(231+54)/sum(xtab)

# Kappa : 0.5336

# Kappa統計量 -----
# https://stats.stackexchange.com/questions/82162/cohens-kappa-in-plain-english

# Kappa統計量是將觀察準確度(機器學習, 本例為行)與期望的準確度(隨機,表示實際值, 本例為列)進行一致性比較的指標, 一般是愈大愈好.

#       Cats Dogs   Total
# Cats  | 10 | 7  | 17
# Dogs  | 5  | 8  | 13
# ***********************
# Total | 15 | 15 | 30

# 行: 觀察的準確度 observed accuracy
(10 + 8) / 30 # 0.6

# 列: 期望的準確度 expected accuracy
(10+5) * 17/30 # for Cats=8.5
(7+8)  * 13/30 # for Dogs=6.5
(8.5 + 6.5)/30 # Expected Accuracy=0.5

# Kappa = (observed accuracy - expected accuracy)/(1 - expected accuracy)
(0.6 - 0.5)/(1-0.5) # kappa=0.2

# kappa Results
# > 0.75     excellent
# 0.60~0.74 good
# 0.4~0.59  fair
# < 0.4      poor

# confusion matrix
# kappa
# caret套件

沒有留言:

張貼留言