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
R程式: roc_r_example.R https://github.com/rwepa/DataDemo/blob/master/roc_r_example.R
# 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套件
# 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套件
沒有留言:
張貼留言