最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

視頻|分類模型評(píng)估:精確率、召回率、ROC曲線、AUC與R語言生存分析時(shí)間依賴性ROC實(shí)現(xiàn)

2022-10-05 17:03 作者:拓端tecdat  | 我要投稿

全文鏈接:http://tecdat.cn/?p=20650?

原文出處:拓端數(shù)據(jù)部落公眾號(hào)

?

視頻|分類模型評(píng)估:精確率、召回率、ROC曲線、AUC與R語言生存分析時(shí)間依賴性ROC實(shí)現(xiàn)

分類模型評(píng)估精確率、召回率、ROC曲線、AUC與R語言生存分析時(shí)間依賴性ROC實(shí)現(xiàn)

本文將幫助您回答以下問題:

  1. ROC曲線是什么?

  2. 曲線下的面積是多少?

  3. 二元分類的決策閾值是多少?

  4. 分類模型可接受的 AUC值是多少?

  5. 什么是精確召回曲線?

  6. 什么時(shí)候應(yīng)該使用精確召回和 ROC 曲線?

什么是ROC曲線?

如果你用搜索 ROC 曲線,你會(huì)得到以下答案:

“接受者操作特征曲線或 ROC 曲線是一個(gè)圖形,它說明了二元分類器系統(tǒng)在其區(qū)分閾值變化時(shí)的診斷能力。”?

這個(gè)定義不容易理解,對(duì)初學(xué)者來說可能聽起來很嚇人。

本文旨在幫助您以一種簡(jiǎn)單的語言理解 ROC 曲線,以便您可以在 ROC 曲線背后建立一些基本思想。

在我們進(jìn)入 ROC 曲線之前,我們需要記住混淆矩陣是什么。

混淆矩陣

混淆矩陣幫助我們可視化模型在區(qū)分兩個(gè)類別時(shí)是否“錯(cuò)誤”。它是一個(gè) 2x2 矩陣。行名是測(cè)試集中的實(shí)際值,列名是模型預(yù)測(cè)的。

PositiveNegative是 ML 模型預(yù)測(cè)標(biāo)簽的名稱。每當(dāng)預(yù)測(cè)錯(cuò)誤時(shí),第一個(gè)詞是False,當(dāng)預(yù)測(cè)正確時(shí),第一個(gè)詞是True。

ROC曲線基于從混淆矩陣得出的兩個(gè)指標(biāo):真正例率 (?TPR?) 和假正例率 (?FPR?)。TPR與召回率相同。它是正確預(yù)測(cè)的正樣本除以數(shù)據(jù)集中可用的所有實(shí)際正樣本的比率。

TPR 側(cè)重于實(shí)際的正類:

真正例率公式

反過來,F(xiàn)PR 是假正例預(yù)測(cè)與真負(fù)樣本總數(shù)的比率。

FPR公式

ROC 曲線是基于 TPR 和 FPR 繪制的。

ROC曲線示例

通過使用 TPR 和 FPR,ROC 曲線顯示了您的分類模型在所有分類閾值下的性能。

但是分類決策閾值是多少?

首先,你的分類 ML 模型輸出是一個(gè)概率。例如,您構(gòu)建一個(gè)分類器來根據(jù)給定人的體重預(yù)測(cè)性別(女性或男性)。假設(shè)正類是女性(1),負(fù)類是男性(0)。然后,您將 150 公斤的重量樣本傳遞給您的 ML 模型,該模型預(yù)測(cè)的概率為 0.23。

默認(rèn)情況下,您的分類閾值為 0.5。任何高于 0.5 的概率將被歸類為 1 類(正),低于 0.5 的概率將被歸為 0 類(負(fù))。給定 0.23 的概率,體重 150 公斤的人將被歸類為負(fù)類(男性)。

簡(jiǎn)而言之,您使用此閾值作為截止值,將預(yù)測(cè)結(jié)果分類為正類或負(fù)類。這是一個(gè)后處理步驟,將預(yù)測(cè)概率作為二進(jìn)制類別返回。通過更改閾值,您的 TP、TN、FP 和 FN 將發(fā)生變化,因此您可以根據(jù)要改進(jìn)的指標(biāo)對(duì)其進(jìn)行優(yōu)化。

因此,ROC 反過來會(huì)告訴您您的 ML 模型能夠在多大程度上區(qū)分不同閾值的兩個(gè)類別。

您使用稱為AUC曲線下面積來測(cè)量 ROC。您使用 AUC 來評(píng)估算法的質(zhì)量,以便在兩個(gè)類別之間進(jìn)行檢測(cè)。

A?rea?U?under?the?Curve:?AUC?

讓我們通過圖形示例來回顧 ROC。

假設(shè)我們正在建立一個(gè)模型來預(yù)測(cè):申請(qǐng)人是償還貸款還是壞帳。

在下圖中,藍(lán)線是正類預(yù)測(cè)概率的分布,表示申請(qǐng)者拒付(未能償還),紅線是負(fù)類預(yù)測(cè)概率分布,表示申請(qǐng)者將償還。

在以下情況下,AUC 為 0.70。這意味著該模型能夠正確區(qū)分正類和負(fù)類之間的 70%。

AUC=0.7

顯然,我們離理想的情況還很遠(yuǎn)。曲線將重疊,這意味著我們的 ML 模型會(huì)犯錯(cuò)誤,我們將其視為誤報(bào)。

理想分類器示例

上述案例說明了當(dāng)我們的 ML 模型正確預(yù)測(cè)兩個(gè)類時(shí)的理想情況。分布之間沒有重疊。該模型可以完美區(qū)分正類和負(fù)類,是一個(gè)理想的分類器。

可能存在 AUC 為 0.5 的情況。這意味著我們的 ML 模型無法區(qū)分正類和負(fù)類。它實(shí)際上是一個(gè)隨機(jī)分類器。

AUC = 0.5

有時(shí) AUC 為 0。這意味著模型反向預(yù)測(cè)類別。該模型認(rèn)為負(fù)類是正類,反之亦然。

AUC = 0

總而言之,合理的 AUC 超過 0.5(隨機(jī)分類器),而好的分類模型的 AUC > 0.9。然而,這個(gè)值高度依賴于它的應(yīng)用。

R語言中生存分析模型與時(shí)間依賴性ROC曲線可視化

視頻:R語言生存分析原理與晚期肺癌患者分析案例

R語言生存分析Survival analysis原理與晚期肺癌患者分析案例

人們通常使用接收者操作特征曲線(ROC)進(jìn)行二元結(jié)果邏輯回歸。但是,流行病學(xué)研究中感興趣的結(jié)果通常是事件發(fā)生時(shí)間。使用隨時(shí)間變化的時(shí)間依賴性ROC可以更全面地描述這種情況下的預(yù)測(cè)模型。

時(shí)間依賴性ROC定義

令 Mi為用于死亡率預(yù)測(cè)的基線(時(shí)間0)標(biāo)量標(biāo)記。?當(dāng)隨時(shí)間推移觀察到結(jié)果時(shí),其預(yù)測(cè)性能取決于評(píng)估時(shí)間?t。直觀地說,在零時(shí)間測(cè)量的標(biāo)記值應(yīng)該變得不那么相關(guān)。因此,ROC測(cè)得的預(yù)測(cè)性能(區(qū)分)是時(shí)間t的函數(shù)?。?

累積病例

累積病例/動(dòng)態(tài)ROC定義了在時(shí)間t?處的閾值c處的?靈敏度和特異性,??如下所示。

累積靈敏度將在時(shí)間t之前死亡的視為分母(疾?。鴮?biāo)記值高于?c?的作為真實(shí)陽性(疾病陽性)。動(dòng)態(tài)特異性將在時(shí)間t仍然活著作為分母(健康),并將標(biāo)記值小于或等于?c?的那些作為真實(shí)陰性(健康中的陰性)。將閾值?c?從最小值更改為最大值會(huì)在時(shí)間t處顯示整個(gè)ROC曲線?。

新發(fā)病例

新發(fā)病例ROC1在時(shí)間t?處以閾值?c定義靈敏度和特異性,??如下所示。

累積靈敏度將在時(shí)間t處死亡的人??視為分母(疾?。?,而將標(biāo)記值高于???的人視為真實(shí)陽性(疾病陽性)。

數(shù)據(jù)準(zhǔn)備

我們以數(shù)據(jù)?包中的dataset3survival為例。事件發(fā)生的時(shí)間就是死亡的時(shí)間。Kaplan-Meier圖如下。



  1. ## 變成data_frame

  2. data <- as_data_frame(data)

  3. ## 繪圖

  4. plot(survfit(Surv(futime, fustat) ~ 1,

  5. data = data)

可視化結(jié)果:

在數(shù)據(jù)集中超過720天沒有發(fā)生任何事件。


  1. ## 擬合cox模型

  2. coxph(formula = Surv(futime, fustat) ~ pspline(age, df = 4) +

  3. ##獲得線性預(yù)測(cè)值

  4. predict(coxph1, type = "lp")

累積病例

實(shí)現(xiàn)了累積病例


  1. ## 定義一個(gè)輔助函數(shù),以在不同的時(shí)間進(jìn)行評(píng)估

  2. ROC_hlp <- function(t) {

  3. survivalROC(Stime

  4. status

  5. marker

  6. predict.time = t,

  7. method ? ? ? = "NNE",

  8. span = 0.25 * nrow(ovarian)^(-0.20))

  9. }

  10. ## 每180天評(píng)估一次

  11. ROC_data <- data_frame(t = 180 * c(1,2,3,4,5,6)) %>%

  12. mutate(survivalROC = map(t, survivalROC_helper),

  13. ## 提取AUC

  14. auc = map_dbl(survivalROC, magrittr::extract2, "AUC"),

  15. ## 在data_frame中放相關(guān)的值

  16. df_survivalROC = map(survivalROC, function(obj) {


  17. ## 繪圖

  18. ggplot(mapping = aes(x = FP, y = TP)) +

  19. geom_point() +

  20. geom_line() +

  21. facet_wrap( ~ t) +

可視化結(jié)果:

180天的ROC看起來是最好的。因?yàn)榈酱丝虨橹箮缀鯖]有事件。在最后觀察到的事件(t≥720)之后,AUC穩(wěn)定在0.856。這種表現(xiàn)并沒有衰退,因?yàn)楦唢L(fēng)險(xiǎn)分?jǐn)?shù)的人死了。

新發(fā)病例

實(shí)現(xiàn)新發(fā)病例


  1. ## 定義一個(gè)輔助函數(shù),以在不同的時(shí)間進(jìn)行評(píng)估


  2. ## 每180天評(píng)估一次


  3. ## 提取AUC

  4. auc = map_dbl(risksetROC, magrittr::extract2, "AUC"),

  5. ## 在data_frame中放相關(guān)的值

  6. df_risksetROC = map(risksetROC, function(obj) {

  7. ## 標(biāo)記欄

  8. marker <- c(-Inf, obj[["marker"]], Inf)


  9. ## 繪圖


  10. ggplot(mapping = aes(x = FP, y = TP)) +

  11. geom_point() +

  12. geom_line() +

  13. geom_label(data = risksetROC_data %>% dplyr::select(t,auc) %>% unique,

  14. facet_wrap( ~ t) +

可視化結(jié)果:

這種差異在后期更為明顯。最值得注意的是,只有在每個(gè)時(shí)間點(diǎn)處于風(fēng)險(xiǎn)集中的個(gè)體才能提供數(shù)據(jù)。所以數(shù)據(jù)點(diǎn)少了。表現(xiàn)的衰退更為明顯,也許是因?yàn)樵谀切┐婊顣r(shí)間足夠長(zhǎng)的人中,時(shí)間零點(diǎn)的風(fēng)險(xiǎn)分沒有那么重要。一旦沒有事件,ROC基本上就會(huì)趨于平緩。

結(jié)論

總之,我們研究了時(shí)間依賴的ROC及其R實(shí)現(xiàn)。累積病例ROC可能與風(fēng)險(xiǎn)?(累積發(fā)生率)預(yù)測(cè)模型的概念更兼容?。新發(fā)病例ROC可用于檢查時(shí)間零標(biāo)記在預(yù)測(cè)后續(xù)事件時(shí)的相關(guān)性。

參考

  1. Heagerty,Patrick J. and Zheng,Yingye,??Survival Model Predictive Accuracy and ROC Curves,Biometrics,61(1),92-105(2005).?doi:10.1111 / j.0006-341X.2005.030814.x.


視頻|分類模型評(píng)估:精確率、召回率、ROC曲線、AUC與R語言生存分析時(shí)間依賴性ROC實(shí)現(xiàn)的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國家法律
桐梓县| 丹棱县| 贡觉县| 泗阳县| 上杭县| 马公市| 玉门市| 林口县| 乐清市| 诏安县| 红安县| 黄龙县| 普兰县| 高安市| 安阳市| 米林县| 肥西县| 疏附县| 白银市| 开鲁县| 藁城市| 桑日县| 大渡口区| 建始县| 古交市| 义马市| 灵寿县| 金乡县| 台州市| 澄江县| 赤峰市| 通州市| 马公市| 呼和浩特市| 昆山市| 临江市| 静宁县| 大城县| 水城县| 方正县| 淳化县|