一、什麼是精確率和召回率?
在對分類模型進行性能評估時,精確率(Precision)和召回率(Recall)是最為常用的衡量指標之一。精確率和召回率均是指在二分類問題中,模型預測為正例的樣本的正確率和在所有真實為正例的樣本中,模型正確預測的比例。
具體來說,對於一個二分類的問題,我們會將模型的預測結果劃分為四個類別:真正例(True Positive)、假正例(False Positive)、真反例(True Negative)和假反例(False Negative)。其中,真正例指的是模型將正例預測為正例的樣本,假正例指的是模型將反例預測為正例的樣本,真反例指的是模型將反例預測為反例的樣本,假反例指的是模型將正例預測為反例的樣本。
精確率和召回率的含義如下:
精確率 = 真正例 / (真正例 + 假正例)
召回率 = 真正例 / (真正例 + 假反例)
二、為什麼需要關注精確率和召回率?
當我們對一個二分類模型進行性能評估時,僅僅依靠準確率是不夠的,並不能很好地體現模型的性能。因為對於一個存在類別不平衡問題的數據集(即正負樣本數目相差較大),模型總是有可能選擇預測結果更多的類別作為輸出。這種情況下,模型雖然能夠得到很高的準確率,但很可能會因為低召回率而失去實際價值。因此,我們需要關注精確率和召回率來全面評估模型效果。
三、精確率與召回率的權衡
在實際應用中,精確率和召回率是存在着一定權衡關係的。當我們希望儘可能地找出所有的真正例時,需要選擇召回率較高的算法;而當我們關注的是預測結果的準確性時,需要選擇精確率較高的算法。
通常來說,我們可以根據具體的業務需求來決定選擇什麼指標。在需要一定程度上保障分類結果完全正確的場景下,我們應該選擇精確率較高的方法;而在需要盡量找出所有正例的情況下,選擇召回率較高的方法。
四、如何提升精確率和召回率?
1、調整分類閾值
在分類問題中,分類閾值是一個重要的超參數。如果對於一個給定的數據集,我們將分類閾值調整為一個更高的值,則對於更多的樣本,算法將預測輸出為反例;反之,如果我們將分類閾值調整為一個較低的值,則算法將輸出更多的正例。因此,通過調整分類閾值,我們可以精準地控制模型的精確率和召回率。
def predict_with_threshold(model, X_test, threshold): y_pred_proba = model.predict_proba(X_test) y_pred = (y_pred_proba[:, 1] >= threshold).astype(int) return y_pred
2、改變模型的評判標準
對於某些應用場景可能更加關注模型的召回率或精確率,這時候就需要我們更換評判標準。比如我們可以將 AUC 替換在二分類問題的模型度量標準,因為 AUC 等價於對分類器的所有閾值進行綜合性能評估,能夠更加全面地衡量模型的性能,並且不受閾值選擇的影響。
3、應對數據不平衡問題
當數據集中存在類別不平衡問題時,模型學習時通常會偏向於數量較多的類別。因此,我們需要考慮權重調整、上採樣或下採樣等方法來解決類別不平衡問題。
from imblearn.over_sampling import SMOTEsm = SMOTE(random_state=42)X_train_res, y_train_res = sm.fit_resample(X_train, y_train)
五、小結
精確率和召回率是分類模型性能評估中重要的指標之一,應用廣泛。雖然二者存在一定的權衡關係,但是我們可以通過一些手段來提高模型的精確率和召回率。具體來說,我們可以針對具體的業務需求,調整分類閾值、改變模型評判標準或者應對數據不平衡問題等方法來提升模型的性能。
原創文章,作者:PQRBN,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/361753.html