回覆列表
  • 1 # 軟體測試開發技術棧

    我們在目標檢測演算法中,如人臉、車輛檢測演算法,常使用 混淆矩陣來評估演算法模型的效果。

    但是在選擇具體的模型評估指標時,並非是不加思索的套用指標計算公式,簡單的給出指標的計算結果。

    同時還需要結合演算法模型的實際應用場景、資料集特徵分佈等等。如,我們常習慣使用準確率評價分類演算法模型的效果,選用這個指標的原因,一方面是因為我們熟悉它,另一方面它也是一個很直觀的評價指標。但是在某些場景下,單一的準確率即使100%也不能代表這個演算法模型的效果好,比如 在不平衡分佈資料集的場景中。下面我們透過一個例子來理解一下。

    比如,我們透過近百年全球各地區地震資料訓練了一個能夠預測地震區域的演算法模型,並且準確率高達 99%,你認為這個演算法效果如何?

    準確率(Accuracy)

    準確率是我們常見的模型評估指標,它表示所有的預測正確(正類、負類)的佔全部測試集數量的比重,計算公式如下。

    下圖是來自維基百科的2018年全球地震資料:

    現在這個模型,將所有的地區都檢測為 非地震區域。在全球全年數十億地區特徵資訊中,已知6級以上地震130餘起,這個模型準確率 0.9999……無限接近1,我們會發現這個模型達到了近乎完美的準確率,可即使這個模型擁有接近完美的準確率,但是在這個場景中單純的靠準確率顯然不是一個合適的指標評估方式。

    地震檢測是一個不平衡的分類問題,其資料集分佈也是不平衡的。我們需要檢測的類別有兩個——地震區域和非地震區域,其中非地震區域類別代表了絕大多數的資料。

    類似,在海嘯、恐怖分子、罕見疾病檢測演算法中。其正例類別數量,如地震區域、海嘯、恐怖分子、疾病,遠遠少於負例類別的數量。這種問題是資料科學中比較常見的例子,其中準確率並不能作為評估模型的衡量標準。

    簡單的講,這種檢測場景中我們更應該關注於正例(地震區域)的識別效果。

    召回率(Recall)

    我們應該最大化模型找到資料集中所有相關正類的能力,即最大化召回率(Recall,又稱查全率)的衡量指標,也就是正確判為地震區域佔實際所有地震區域的比例,計算公式如下。

    我們透過召回率計算公式,不難得出:如果模型將所有的區域都預測為地震區域,那麼模型的召回率就是 100%,因為預測所有區域都是地震區域,自然也包括了真實發生地震的區域。

    那麼,此時我們就得到了一個完美的模型嗎?同樣,並沒有。

    精確率(Precision)

    精確率可以理解為在所有被模型檢測為地震的地區中,真正發生地震的區域所所有測試集的比例,計算公式如下:

    現在,我們在一起回顧下前面內容可以看到,在第一個模型中將所有地區都檢測為非地震區域,雖然這個模型準確率無限接近100%,但是它是不能使用的,因為它的精確度和召回率都是零,因為True Postive(TP,混淆矩陣)為零。

    在第二個模型中,將所有的地區都檢測為地震區域,此時召回率達到100%,但我們發現所有人將會在持續的地震偽警報中,惶惶不安,它同樣不能夠使用。

    現在,我們重新訓練一下模型,模型將將其返回的區域都正確地識別為地震區域,即精確率達到了100%,但是召回率很低,因為它只返回了1個區域,實際上會有很多假負類(False Negative FN),即漏報的地震區域,此時也是不能夠使用。

    最後我們也可以發現,單一的模型評估指標所反映的模型效果是單一或者偏面的,我們需要結合演算法模型應用背景、真實資料集下的特徵分佈,透過多維的模型評估指標,綜合的評估模型效果,以尋求一種平衡。

  • 中秋節和大豐收的關聯?
  • 紅花逍遙片主治什麼病的呢?