99999久久久久久亚洲,欧美人与禽猛交狂配,高清日韩av在线影院,一个人在线高清免费观看,啦啦啦在线视频免费观看www

熱線電話:13121318867

登錄
首頁精彩閱讀用ROC曲線解析預(yù)測模型
用ROC曲線解析預(yù)測模型
2019-07-22
收藏
用ROC曲線解析預(yù)測模型

出品 | CDA數(shù)據(jù)分析研究院

數(shù)據(jù)科學(xué)是一個(gè)在過去幾年里真正成長的術(shù)語,似乎每個(gè)人都想加入。最具吸引力的目標(biāo)之一是利用數(shù)據(jù)資產(chǎn)的力量來創(chuàng)建能夠預(yù)測各種結(jié)果的機(jī)器學(xué)習(xí)模型。通過定義明確的模型,可以確定能夠預(yù)測結(jié)果的最重要影響因素,為戰(zhàn)略假設(shè)開發(fā)有價(jià)值的洞察力,甚至可以通過友好的用戶界面將模型的邏輯實(shí)現(xiàn)到軟件應(yīng)用程序中。

然而,在任何這種魔法發(fā)生之前,我們需要知道模型創(chuàng)建的預(yù)測是否有益!例如,如果我們的電子郵件程序的垃圾郵件分類器只能檢測到50%的不需要的電子郵件或請求,我們都會非常憤怒。在這篇文章中,我將討論如何使用每個(gè)數(shù)據(jù)科學(xué)家應(yīng)該熟悉的經(jīng)典工具來評估預(yù)測模型:接收器操作特性(ROC)曲線


說明性實(shí)例:預(yù)測冠狀動脈疾病

我在這篇文章中使用的數(shù)據(jù)集來自Bom等人對“疑似冠狀動脈疾病患者冠狀動脈斑塊形態(tài)的靶向蛋白質(zhì)組學(xué)的預(yù)測價(jià)值”。

這項(xiàng)研究檢查了兩種不同的結(jié)果,我將重點(diǎn)關(guān)注這篇文章的是沒有冠狀動脈疾病(CAD)。作者評估了蛋白質(zhì)組學(xué)生物標(biāo)志物在有癥狀患者中檢測CAD缺失的預(yù)測能力。確定一組可以區(qū)分無CAD患者和需要立即干預(yù)的蛋白質(zhì)的蛋白質(zhì)組將提供更準(zhǔn)確和成本有效的非侵入性診斷測試。

該數(shù)據(jù)集是測試多個(gè)數(shù)據(jù)科學(xué)主題的絕佳來源。通過少量觀察,它很容易使用,但它還包含大量變量以增加復(fù)雜性。結(jié)果(使用冠狀動脈計(jì)算機(jī)斷層掃描血管造影術(shù),或CCTA)的可行“黃金標(biāo)準(zhǔn)”被提供來測試預(yù)測。對于這篇文章,我將主要關(guān)注從單一模型構(gòu)建ROC曲線,但可以在后面的帖子中使用此數(shù)據(jù)集深入研究更高級的主題。


預(yù)測精度測量概述

在開始創(chuàng)建曲線之前,了解一些評估預(yù)測準(zhǔn)確性的常用指標(biāo)非常重要。

積極類:我將正類定義為我試圖檢測的結(jié)果類。在這種情況下,缺少 CAD。雖然我意識到這可能會導(dǎo)致診斷測試領(lǐng)域中的“積極”和“消極”這兩個(gè)術(shù)語混淆,但這種方式定義積極類更能推廣到其他情況。

在這種情況下處理有癥狀患者的默認(rèn)方法是讓他們接受進(jìn)一步的測試和程序。通過充分檢測沒有CAD的患者,我們將不再需要不必要的,更具侵入性的手術(shù)。

一般準(zhǔn)確性:簡單地說,有多少科目正確分類?

敏感性:正確識別真陽性的比例。在這種情況下,健康患者的比例由診斷工具正確識別。這有時(shí)被稱為“召回”。

  • SN =真陽性/(真陽性+假陰性)
  • 逆(1靈敏度)= 假負(fù)率。未被該工具檢測到的健康患者被錯誤地識別為患有CAD。假陰性也稱為II型錯誤。

特異性:正確識別真陰性的比例。在這種情況下,通過診斷工具正確識別CAD患者的比例。

  • SP =真陰性/(真陰性+誤報(bào))
  • 逆(1-特異性)= 假陽性率。CAD患者被錯誤地識別為無CAD。誤報(bào)也稱為I型錯誤。

積極預(yù)測價(jià)值:該工具報(bào)告的陽性比例,實(shí)際上是積極的。對于診斷工具報(bào)告缺乏CAD的患者組,PPV是實(shí)際上沒有患病的患者的比例。這有時(shí)被稱為“精確度”。

  • PPV =真陽性/(真陽性+誤報(bào))

負(fù)面預(yù)測值:該工具報(bào)告的負(fù)面影響的比例,實(shí)際上是負(fù)面的。對于診斷工具報(bào)告存在CAD的患者組,NPV是實(shí)際上沒有CAD的患者的比例。

  • NPV =真陰性/(真陰性+假陰性)

不要擔(dān)心,如果你的大腦試圖理清所有這些指標(biāo)。這些術(shù)語很容易混淆,特別是在第一次學(xué)習(xí)它們時(shí)。我發(fā)現(xiàn)在2x2表中可視化內(nèi)容最容易。

用ROC曲線解析預(yù)測模型

二進(jìn)制類的混淆矩陣(正=沒有CAD,負(fù)= CAD)


曲線的解剖

ROC曲線的優(yōu)點(diǎn)在于它是一種易于理解的圖形工具,可應(yīng)用于您創(chuàng)建的任何預(yù)測模型。以下是曲線的基礎(chǔ)知識:


軸:靈敏度和誤報(bào)率

首先,我們需要為情節(jié)創(chuàng)造空間。通過將靈敏度與1-特異性(或假陽性率)作圖來建立ROC曲線。

用ROC曲線解析預(yù)測模型

預(yù)測概率

現(xiàn)在我們需要繪制一些東西?;叵胍幌?,預(yù)測模型會將每個(gè)觀察分配給最可能的類(在這種情況下,沒有CAD與CAD的存在)。模型實(shí)際上在做的是計(jì)算屬于特定類的概率。在0和1之間選擇截止值,并且如果計(jì)算的概率超過該閾值,則將觀察值分配給該類。

用ROC曲線解析預(yù)測模型

您可能會發(fā)現(xiàn)在大多數(shù)軟件包中,默認(rèn)截止值設(shè)置為0.5,邏輯是,在二進(jìn)制類中,可以將觀察值分配給最可能的類。但是,正如我們所看到的,最好在考慮靈敏度和特異性之間的權(quán)衡之后選擇截止值。

通過繪制所有可能的截止值來生成ROC曲線,所述截止值是分配給每個(gè)觀察的概率。選擇不同的截止值將改變預(yù)測工具的靈敏度和特異性,因此,可以使用相關(guān)的靈敏度和1-特異性作為坐標(biāo)在圖的空間中繪制每個(gè)截止概率。最靠近左上角的點(diǎn)(SN = 1,F(xiàn)PR = 0)提供精度度量之間的最大平衡。


曲線下面積(AUC)

AUC是一個(gè)類似于二元模型的一致性或c統(tǒng)計(jì)量的度量。這是具有正類的觀察將具有比在負(fù)類中的觀察更大的預(yù)測概率的概率。

用ROC曲線解析預(yù)測模型

如果AUC = 1,則表示模型有完美的預(yù)測。如果AUC = 0.5,則意味著模型無法區(qū)分類。它在邏輯回歸中的行為與r平方相似,因?yàn)樘砑痈囝A(yù)測因子會增加AUC。因此,在分析中包括對外部數(shù)據(jù)的交叉驗(yàn)證或驗(yàn)證非常重要。

AUC可用于評估不同的預(yù)測模型。


參考線

繪制參考線通常是個(gè)好主意,其中AOC = 0.5在ROC圖上。這提供了比較曲線的基線視覺效果。

用ROC曲線解析預(yù)測模型

生成ROC曲線

雖然可以使用幾個(gè)不同的程序來開發(fā)預(yù)測模型和ROC曲線,但我已經(jīng)在R中實(shí)現(xiàn)了分析。

為了預(yù)測結(jié)果,我使用xgboost創(chuàng)建了一個(gè)分類模型,其中蛋白質(zhì)生物標(biāo)記物作為預(yù)測因子,并使用重新取代方法來預(yù)測數(shù)據(jù)集中的結(jié)果。使用預(yù)測的概率,我可以形成上面顯示的ROC曲線。

注意:該程序也設(shè)置為使用k-fold交叉驗(yàn)證,或者可以更新以利用外部驗(yàn)證,例如列車和測試集的70/30分割(盡管我想要更多數(shù)據(jù))。

用ROC曲線解析預(yù)測模型

解釋曲線

AUC為0.738,實(shí)際上低于作者用他們的機(jī)器學(xué)習(xí)方法所發(fā)現(xiàn)的(堆疊可能提高了分類器的準(zhǔn)確性)。但是,我更關(guān)心的是選擇合適的截止值并權(quán)衡工具的成本和收益。

模型的總體準(zhǔn)確性是不錯的,但是當(dāng)發(fā)生假陽性結(jié)果時(shí),會發(fā)生CAD患者而不是通過必要的程序?讓我們同意這不會是一件好事。


為了安全起見,盡可能減少診斷工具的誤報(bào)率可能是個(gè)好主意。在生成混淆矩陣時(shí),很容易選擇保持低誤報(bào)率的概率截止值。這將作為誰被標(biāo)記為無CAD的決定標(biāo)準(zhǔn)。

通過選擇保持90%特異性(10%假陽性率)的概率截止值,分類工具能夠檢測到42%沒有CAD的患者(敏感性= 0.42)。在這種情況下,這實(shí)際上是一個(gè)非常好的結(jié)果,因?yàn)楝F(xiàn)狀是讓所有有癥狀的患者接受更具侵入性的診斷程序。盡管42%的靈敏度可能聽起來很低,但在這種特定情況下,這是一個(gè)很有希望的結(jié)果。


在開發(fā)用于預(yù)測有癥狀患者的CAD狀態(tài)的分類器時(shí),最重要的是在保持低誤報(bào)率的同時(shí)實(shí)現(xiàn)盡可能高的靈敏度。

ROC曲線的優(yōu)點(diǎn)在于您可以從單個(gè)圖像中可視化所有這些性能指標(biāo)。將曲線與競爭模型進(jìn)行比較是一種快速簡便的方法,可以選擇合適的分類或診斷工具。


我只研究了使用ROC曲線和二進(jìn)制分類工具,但它可以很容易地?cái)U(kuò)展到多類方案。在同一圖形上,可以繪制與每個(gè)特定類別中的概率相對應(yīng)的多條曲線。

在撰寫本文時(shí),我詳細(xì)介紹了如何構(gòu)建ROC曲線,目的是增加對預(yù)測精度度量的理解,以及如何評估您可能正在構(gòu)建的這些數(shù)據(jù)科學(xué)分類工具。


標(biāo)題:Illustrating Predictive Models with the ROC Curve

數(shù)據(jù)分析咨詢請掃描二維碼

若不方便掃碼,搜微信號:CDAshujufenxi

數(shù)據(jù)分析師資訊
更多

OK
客服在線
立即咨詢
客服在線
立即咨詢
') } function initGt() { var handler = function (captchaObj) { captchaObj.appendTo('#captcha'); captchaObj.onReady(function () { $("#wait").hide(); }).onSuccess(function(){ $('.getcheckcode').removeClass('dis'); $('.getcheckcode').trigger('click'); }); window.captchaObj = captchaObj; }; $('#captcha').show(); $.ajax({ url: "/login/gtstart?t=" + (new Date()).getTime(), // 加隨機(jī)數(shù)防止緩存 type: "get", dataType: "json", success: function (data) { $('#text').hide(); $('#wait').show(); // 調(diào)用 initGeetest 進(jìn)行初始化 // 參數(shù)1:配置參數(shù) // 參數(shù)2:回調(diào),回調(diào)的第一個(gè)參數(shù)驗(yàn)證碼對象,之后可以使用它調(diào)用相應(yīng)的接口 initGeetest({ // 以下 4 個(gè)配置參數(shù)為必須,不能缺少 gt: data.gt, challenge: data.challenge, offline: !data.success, // 表示用戶后臺檢測極驗(yàn)服務(wù)器是否宕機(jī) new_captcha: data.new_captcha, // 用于宕機(jī)時(shí)表示是新驗(yàn)證碼的宕機(jī) product: "float", // 產(chǎn)品形式,包括:float,popup width: "280px", https: true // 更多配置參數(shù)說明請參見:http://docs.geetest.com/install/client/web-front/ }, handler); } }); } function codeCutdown() { if(_wait == 0){ //倒計(jì)時(shí)完成 $(".getcheckcode").removeClass('dis').html("重新獲取"); }else{ $(".getcheckcode").addClass('dis').html("重新獲取("+_wait+"s)"); _wait--; setTimeout(function () { codeCutdown(); },1000); } } function inputValidate(ele,telInput) { var oInput = ele; var inputVal = oInput.val(); var oType = ele.attr('data-type'); var oEtag = $('#etag').val(); var oErr = oInput.closest('.form_box').next('.err_txt'); var empTxt = '請輸入'+oInput.attr('placeholder')+'!'; var errTxt = '請輸入正確的'+oInput.attr('placeholder')+'!'; var pattern; if(inputVal==""){ if(!telInput){ errFun(oErr,empTxt); } return false; }else { switch (oType){ case 'login_mobile': pattern = /^1[3456789]\d{9}$/; if(inputVal.length==11) { $.ajax({ url: '/login/checkmobile', type: "post", dataType: "json", data: { mobile: inputVal, etag: oEtag, page_ur: window.location.href, page_referer: document.referrer }, success: function (data) { } }); } break; case 'login_yzm': pattern = /^\d{6}$/; break; } if(oType=='login_mobile'){ } if(!!validateFun(pattern,inputVal)){ errFun(oErr,'') if(telInput){ $('.getcheckcode').removeClass('dis'); } }else { if(!telInput) { errFun(oErr, errTxt); }else { $('.getcheckcode').addClass('dis'); } return false; } } return true; } function errFun(obj,msg) { obj.html(msg); if(msg==''){ $('.login_submit').removeClass('dis'); }else { $('.login_submit').addClass('dis'); } } function validateFun(pat,val) { return pat.test(val); }