在完成機器學習中的二分類問題的建模階段後,需要對模型的效果做評價,如今業內通常採用的評價指標有精確率(precision)、準確率(accuracy)、召回率(recall)、f值(f-measure)等多個方面,為了準確理解以避免混淆,本文將對這些指標做簡要介紹。
其實,上面提及的諸多評測指標都是在混淆矩陣上衍生出來的,因此先簡要介紹混淆矩陣。
針對二分類問題,通常將我們所關心的類別定為正類,另一類稱為負類;例如使用某種分類器**某種疾病,我們關心的是「患病」這種情況,以便及早接受**,所以將「患病」設為正類,「不患病」設為負類。
混淆矩陣由如下資料構成:
true positive (真正,tp):將正類**為正類的數目
true negative (真負,tn):將負類**為負類的數目
false positive(假正,fp):將負類**為正類的數目(誤報)
false negative(假負,fn):將正類**為負類的數目(漏報)
接下來介紹的幾種評價指標都是由上述四個資料相互運算產生。
計算公式為:acc = (tp+tn)/(tp+tn+fp+fn)
準確率是最常見的評價指標,很容易理解,就是**正確的樣本數佔所有的樣本數的比例;通常來說,準確率越高分類器越好。然而,在正負樣本極不平衡的情況下,準確率這個評價指標有很大的缺陷。
計算公式為:err = 1-acc
錯誤率則與準確率相反,衡量分類器錯誤分類的比例情況。
計算公式為: sensitive = tp/(tp+fn)
靈敏度表示的是樣本中所有正例中被識別的比例,衡量了分類器對正例的識別能力。
計算公式為:specificity = tn/(tn+fp)
特效度表示的是樣本中所有負例中被識別的比例,衡量了分類器對負例的識別能力。
計算公式為:p = tp/(tp+fp)
精確率與準確率要有所區別,精確率表示的是被分類器分為正例的樣本中,確實為正例的樣本佔的比例。
計算公式為:r = tp/(tp+fn) = sensitive
從公式上可以看出,召回率與靈敏度是相同的,衡量的是分類器對正例的識別能力。這個指標結合疾病識別的例子就很好理解了,若將「患病」定為正類,則召回率描述的是所有真正的患者中,被分類器識別出來從而召喚到醫院的患者佔的比例。
p和r指標有時候會出現的矛盾的情況,這樣就需要綜合考慮,常見的方法就是f-measure(又稱f-score)。
f-measure是precision和recall加權調和平均:
當引數α=1時,就是常見的f1值:
f1綜合了p和r的結果,當f1較高時則說明分類器確實比較有效。
小結:本文介紹的幾種指標都是最為常用的衡量標準,針對分類問題還有其它評測指標,如計算速度、魯棒性、可擴充套件性、可解釋性、roc曲線和pr曲線等;至於多分類問題,可以仿照二分類的情況模擬得到與上述指標相似的指標計算公式。
機器學習二分類精度
針對二分類的結果,對模型進行評估,通常有以下幾種方法 初始作如下定義 真實結果10 結果 1tp 真陽性 fp 假陽性 0fn 假陰性 tn 真陰性 precision 準確率 可以理解為 結果為正類中有多少是正類,給出定義如下 recall 召回率 可以理解為真實結果為正類中有多少被 成正類,給出...
二分類問題
模型 帶有relu啟用的dense層堆疊 對於二分類問題,網路的最後一層應該是只有乙個單元並使用sigmoid啟用的dense層,網路的輸出應該是0 1的標量,表示概率值 對於二分類問題的sigmoid標量輸出,應該使用binary crossentroy 二元交叉熵 損失函式 實驗 1 嘗試增加或...
二分類問題
深度學習中的基本問題就是這個,上午我還達到90 85 的acc,現在只有76 臥槽,我動 了啊?有鬼。明明沒怎麼改引數,卻再也回不到過去,這個trick不小啊。既然回不到過去,不妨重新開始吧。我套了一下vgg,發現網路太深了,根本跑不動,效果也不好,減少網路後,acc反而有提高,之前我還以為驗證集有...