學(xué)AI,好工作 就找北大青鳥
關(guān)注小青 聽課做題,輕松學(xué)習(xí)
周一至周日
4000-9696-28

如何預(yù)測新冠確診病人數(shù)嗎?AI算法模型師之四件評估“法器”!

來源:北大青鳥總部 2020年04月26日 14:30

摘要: 如何預(yù)測新冠確診病人數(shù)嗎?AI算法模型師之四件評估“法器”!
導(dǎo)語
   在AI領(lǐng)域,針對機(jī)器學(xué)習(xí)、自然語言處理等算法模型的評估(evaluation)是一項非常重要的工作,在海量數(shù)據(jù)中,為使算法模型趨向更準(zhǔn)確,需要借助評估方法對算法模型進(jìn)行評估,然后才能對模型進(jìn)行針對性的優(yōu)化、提升算法效率。  本文小編介紹四種評估方法,它們就像法師(數(shù)據(jù)科學(xué)家)使用的法器一樣,有著對算法模型評判的奇妙法力,同時能產(chǎn)生算法模型的評估打分結(jié)果,為后續(xù)算法模型的優(yōu)化提供依據(jù)。這四大法器分別是:準(zhǔn)確率(Accuracy)、精確率(Precision)、召回率(Recall)和綜合評價指標(biāo)(F1-Measure)。要當(dāng)好一個合格的算法師,我們需要熟練掌握這些法器,下面我們逐一摩挲一下它們。
1評估法器一:百發(fā)百中箭——準(zhǔn)確率評估
   古時射箭技藝高超的射手一般都被稱為“神射手”,“神射手”射出的箭能夠“百步穿楊”、中靶率基本是百發(fā)百中,這個就是準(zhǔn)確率的概念。而在機(jī)器學(xué)習(xí)中,對于算法模型預(yù)測的準(zhǔn)確率,也是看其能夠百發(fā)幾中的概率。本文介紹的第一個評估法器就是:Accuracy,即準(zhǔn)確率評估,它是對模型預(yù)測的正確數(shù)量所占總預(yù)測數(shù)量的比例進(jìn)行評估的一項指標(biāo)。
   新冠疫情爆發(fā)期,對病患的核算檢測進(jìn)行確診是一項重要工作,我們可以用大數(shù)據(jù)AI算法進(jìn)行新冠肺炎感染病患的進(jìn)行預(yù)測。在預(yù)測中,可以使用準(zhǔn)確率公式來表達(dá)新冠肺炎預(yù)測是否感染的正確及錯誤:


   其中:TP=預(yù)測新冠確診病人數(shù),并判斷正確;TN=預(yù)測健康人數(shù),并判斷正確;FP=預(yù)測新冠確診病人數(shù),但判斷錯誤;FN=預(yù)測健康人數(shù),但判斷錯誤。
   我們可以舉例,假設(shè)對20人進(jìn)行新冠肺炎的確診情況進(jìn)行預(yù)測,該數(shù)據(jù)實際情況和使用二元分類算法模型(即判斷要么確診新冠、要么為健康)預(yù)測如下:

   以上,黃色——TP=2,預(yù)測與實際都為新冠感染患者人數(shù)(預(yù)測正確)
藍(lán)色——TN=14,預(yù)測與實際都為健康人數(shù)(預(yù)測正確)
紅色——FP=1,預(yù)測為新冠感染患者,實際是健康的人數(shù)(預(yù)測錯誤)
白色——FN=3,預(yù)測為健康人員,實際是新冠感染患者人數(shù)(預(yù)測錯誤)
針對上述數(shù)據(jù)集進(jìn)行預(yù)測的模型準(zhǔn)確率,計算如下:
準(zhǔn)確率=

=

=80%
   從該計算結(jié)果來看,預(yù)測的結(jié)果表現(xiàn)是還算可以的,分類準(zhǔn)確率達(dá)到80%。那么是不是我們選用的算法模型就是比較出色的模型呢?
   我們可以仔細(xì)分析一下數(shù)據(jù)情況,深入理解一下模型預(yù)測的效果:
20人中,15人健康,剩余5人感染了新冠肺炎,模型預(yù)測健康的人數(shù)14人,比率高達(dá)93.3%,效果不錯;但是感染了新冠的實際總?cè)藬?shù)為5,錯誤的預(yù)測其中3人為健康,比率達(dá)到了3/5=60%,說明從這個角度預(yù)測準(zhǔn)確率才有40%,錯誤率較高,模型實際上是達(dá)不到預(yù)測的精確要求的。
   這樣,對模型的評估只使用這個準(zhǔn)確率評估法器肯定是還不夠的,算法師還需要祭出后面要說的新法器——精確率、召回率評估法器。
2評估法器二:諸葛神機(jī)弩——精確率評估    對于上述進(jìn)行新冠肺炎患者預(yù)測的數(shù)據(jù)集,其分類是不太平衡的,即確診人員和健康人員的分布比較不均衡,數(shù)量差異較大。算法師如果只使用一項準(zhǔn)確率法器來判斷模型是否有效并不合理。
   在三國戰(zhàn)爭中,為了成批地精確打擊敵人,諸葛亮發(fā)明了諸葛神機(jī)弩,其命中率高、打擊面大,是讓敵人聞風(fēng)喪膽的戰(zhàn)爭利器,使用精確率(Precision)法器來評估模型,也可以比喻為算法師的諸葛神機(jī)弩。
精確率(也稱查準(zhǔn)率)的公式是:


其中:TP=預(yù)測新冠確診病人數(shù),并判斷正確;FP=預(yù)測的新冠確診病人數(shù),但判斷錯誤。
我們還是采用前面的數(shù)據(jù)集來對精確率進(jìn)行評估,計算如下:
精確率=

=

=66.67%
即模型在對上述數(shù)據(jù)集預(yù)測出新冠肺炎感染者的精確率是66.67%。
3評估法器三:回頭望月斬——召回率評估
算法師除了以上描述的法器,還可以使用一個妙技:回頭望月斬——進(jìn)行召回率評估?;仡^望月斬通常會在武功對決里出現(xiàn),一般指一個招式用老的瞬間,在敵人背后出其不意地回頭使出一招,打擊敵人。在這里,我們可以形容分類算法模型對所有錯誤和正確的預(yù)測中預(yù)測正確的比例(也可以理解為對模型錯誤預(yù)測的回顧和評估),通俗也可以稱為“查全率”。
召回率的公式是:

其中:TP=預(yù)測新冠確診病人數(shù),并判斷正確;FN=預(yù)測為健康、但實際為新冠感染者人數(shù)。
我們還是采用前面的數(shù)據(jù)集來對召回率進(jìn)行評估,計算如下:
召回率=

=

=40%
即對上述數(shù)據(jù)集,模型能正確預(yù)測出所有新冠肺炎感染者的比率只有40%。
因此,算法師要達(dá)到全面評估模型的有效性,必須同時檢查精確率和召回率,但是兩者的提升是有矛盾的,提高模型的精確率就會降低其召回率,反之亦然。因此算法師還需要利用一個更高端的評估法器來進(jìn)行綜合評估——F1綜合評估法。
評估法器四:精準(zhǔn)組合拳——F1綜合評估
國家在調(diào)控宏觀經(jīng)濟(jì)時,經(jīng)常采用一系列調(diào)控組合拳。武功高手通常打出一套讓人應(yīng)接不暇的組合拳,虛中有實、實中有虛,會讓對手無法接招并取勝。算法師在評估模型時,也可以采用類似的評估組合,本文推薦一個常用的綜合評估法器:F1綜合評估法(F1-Measure),又稱F1-Score,是精確率(實招)和召回率(虛招)的加權(quán)調(diào)和平均,算是模型評估的一套精準(zhǔn)組合拳,也可以比喻為一個組合了前兩種評估法器的大法器。
F1綜合評估法的公式為:


其中,P為精確率(Precision), R為召回率(Recall)。
(注:F1綜合評估是統(tǒng)計學(xué)中F-Measure在權(quán)重參數(shù)=1時的一個特例,即精確率與召回率權(quán)重一致,本文限于篇幅,只對評估常用的F1評估進(jìn)行描述。)
繼續(xù)利用上述的數(shù)據(jù)集,根據(jù)前面計算出的精確率和召回率,便可得出其F1值如下:

=

=0.5
結(jié)果是0.5,在模型評估中,當(dāng)這個值較高時,說明算法模型的效果比較理想,目前看來這個分值反映出模型效果比較一般。
4評估法器四:綜合實戰(zhàn)
   為了讓讀者更好地理解四件法器的功效,我們?nèi)匀皇褂蒙鲜龅念A(yù)測新冠感染者的數(shù)據(jù)集,通過python實戰(zhàn)演練一下。
1、準(zhǔn)備數(shù)據(jù)集
#基于numpy實現(xiàn)模型評估,加載numpy
importnumpy as np
#設(shè)Corondata_real是實際的數(shù)據(jù)集,數(shù)值為1代表新冠感染者,數(shù)值為0代表健康人員
Corondata_real= np.array([0,1,0,0,0,0,1,0,0,0,1,0,0,1,0,0,0,0,0,1])
print('實際數(shù)據(jù)集:{}'.format(Corondata_real))
#設(shè)Corondata_pred是預(yù)測結(jié)果數(shù)據(jù),數(shù)值為1預(yù)測新冠感染者,數(shù)值為0代表預(yù)測健康人員
Corondata_pred= np.array([0,1,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,1,0,0])
print('預(yù)測結(jié)果數(shù)據(jù)集:{}'.format(Corondata_pred))
輸出結(jié)果為:
實際數(shù)據(jù)集:[01 0 0 0 0 1 0 0 0 1 0 0 1 0 0 0 0 0 1]
預(yù)測結(jié)果數(shù)據(jù)集:[01 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0]

2、計算TP、FP、TN、FN
#預(yù)測與實際都為新冠感染患者人數(shù)(預(yù)測正確),truepositive
TP=np.sum(np.logical_and(np.equal(Corondata_real,1),np.equal(Corondata_pred,1)))
print('預(yù)測與實際都為新冠感染患者人數(shù)(預(yù)測正確):{}'.format(TP))
#預(yù)測與實際都為健康人數(shù)(預(yù)測正確),falsepositive
FP=np.sum(np.logical_and(np.equal(Corondata_real,0),np.equal(Corondata_pred,1)))
print('預(yù)測與實際都為健康人數(shù)(預(yù)測正確):{}'.format(FP))
#預(yù)測為新冠感染患者,實際是健康的人數(shù)(預(yù)測錯誤),truenegative
TN=np.sum(np.logical_and(np.equal(Corondata_real,1),np.equal(Corondata_pred,0)))
print('預(yù)測為新冠感染患者,實際是健康的人數(shù)(預(yù)測錯誤):{}'.format(TN))
#預(yù)測為健康人員,實際是新冠感染患者人數(shù)(預(yù)測錯誤),falsenegative
FN=np.sum(np.logical_and(np.equal(Corondata_real,0),np.equal(Corondata_pred,0)))
print('預(yù)測為健康人員,實際是新冠感染患者人數(shù)(預(yù)測錯誤):{}'.format(FN))
輸出結(jié)果為:
預(yù)測與實際都為新冠感染患者人數(shù)(預(yù)測正確):2
預(yù)測與實際都為健康人數(shù)(預(yù)測正確):1
預(yù)測為新冠感染患者,實際是健康的人數(shù)(預(yù)測錯誤):3
預(yù)測為健康人員,實際是新冠感染患者人數(shù)(預(yù)測錯誤):14

3、計算準(zhǔn)確率、精確率、召回率、F1綜合評分
#利用sklearn.metrics的各類評估方法庫,計算準(zhǔn)確率、精確率、召回率、F1綜合評分
fromsklearn.metrics import accuracy_score, precision_score, recall_score,f1_score
#準(zhǔn)確率
a_score= accuracy_score(Corondata_real, Corondata_pred)
#精確率
p_score= precision_score(Corondata_real, Corondata_pred)
#召回率
r_score= recall_score(Corondata_real, Corondata_pred)
#F1綜合評分
f1_score= f1_score(Corondata_real, Corondata_pred)
print('準(zhǔn)確率評分:{:.2%}'.format(a_score))
print('精確率評分:{:.2%}'.format(p_score))
print('召回率評分:{:.2%}'.format(r_score))
print('F1綜合評分:{:.2}'.format(f1_score))
輸出結(jié)果為:
準(zhǔn)確率評分:80.00%
精確率評分:66.67%
召回率評分:40.00%
F1綜合評分:0.5

4、擴(kuò)展——classification_report評分報告庫
針對模型評估,在sklearn.metrics中內(nèi)置了一個函數(shù)classification_report,可以同時統(tǒng)計出幾種評分方法的評分,能夠一目了然地看出模型的效果。
#導(dǎo)入classification_report評分報告庫
fromsklearn.metrics import classification_report
#用classification_report對模型評分,分別給出precision、recall、f1-score、support的分值
print(classification_report(Corondata_real,Corondata_pred))
輸出結(jié)果為:
precision   recall  f1-score   support
0      0.82      0.93      0.87        15
1      0.67      0.40      0.50         5
microavg       0.80      0.80      0.80        20
macroavg       0.75      0.67      0.69        20
weightedavg       0.78      0.80      0.78        20

   上述結(jié)果對精度(Precision)、召回率(Recall)、f1分?jǐn)?shù)(f1-score)、support四項指標(biāo)的分值以列表形式概覽展示。這也對模型評估起到了很大的幫助。
結(jié)尾四件評估法器之小結(jié)
根據(jù)以上對四件評估法器的實戰(zhàn)演練,我們可以小結(jié)如下:
  • 對于模型評估,本文推薦的四件評估法器都能夠?qū)δP痛虺龇种?,但各有千秋,均能體現(xiàn)出模型的一定效果。在實戰(zhàn)中,算法模型師可以采用這四件法器多方面進(jìn)行評估,以方便后續(xù)對模型進(jìn)行優(yōu)化。
  • 本文介紹的是較為普遍常用的評估方法,對模型進(jìn)行評分還可以有很多其它的方法,例如交叉驗證法、ROC(Receiver Operating Characteristic Curve)、AUC(Area Under Curve)、R2分?jǐn)?shù)等,限于篇幅,我們在這里不再展開,讀者可以在網(wǎng)上搜索查看。
熱門班型時間
人工智能就業(yè)班 即將爆滿
AI應(yīng)用線上班 即將爆滿
UI設(shè)計全能班 即將爆滿
數(shù)據(jù)分析綜合班 即將爆滿
軟件開發(fā)全能班 爆滿開班
網(wǎng)絡(luò)安全運營班 爆滿開班
報名優(yōu)惠
免費試聽
課程資料
官方微信
返回頂部
培訓(xùn)課程 熱門話題 站內(nèi)鏈接