一、查准率和查全率的定義
查准率和查全率是在信息檢索領域中廣泛使用的兩個指標。簡單來說,查准率是指檢索結果中相關的文檔數占檢索結果文檔數的比例,衡量了檢索結果的準確性;而查全率是指檢索結果中相關的文檔數占文檔庫中相關文檔數的比例,衡量了檢索的完整性。
// 查准率公式 precision = TP / (TP + FP) // 查全率公式 recall = TP / (TP + FN)
二、混淆矩陣(Confusion Matrix)
混淆矩陣用於展示分類算法中True Positive(TP)、False Positive(FP)、False Negative(FN)、True Negative(TN)四種分類結果的數量。其中,TP表示正確的正例分類數量,FP表示錯誤的正例分類數量,FN表示錯誤的反例分類數量,TN表示正確的反例分類數量。
// 混淆矩陣展示 |---------------|--------------| | 真實值/預測值 | 正例(1) | 反例(0) | |---------------|--------------| | 正例(1) | TP | FP | |---------------|-------------| | 反例(0) | FN | TN | |---------------|-------------|
三、查准率和查全率的計算方法
1. 查准率的計算方法
查准率的計算方法為:TP / (TP + FP),即模型預測的正例中,真實正例的佔比。
在機器學習領域,通常使用Precision-Recall曲線來展示不同模型、不同超參組合下的查准率和查全率。通過調整模型及其超參數,使得Precision-Recall曲線上的點儘可能到達左上角,表示更高的查准率和查全率。
// Python代碼示例 from sklearn.metrics import precision_score y_true = [1, 0, 1, 1, 0] y_pred = [1, 1, 1, 0, 0] precision = precision_score(y_true, y_pred) print(precision) # 0.75
2. 查全率的計算方法
查全率的計算方法為:TP / (TP + FN),即所有真實正例被正確預測為正例的佔比。
// Python代碼示例 from sklearn.metrics import recall_score y_true = [1, 0, 1, 1, 0] y_pred = [1, 1, 1, 0, 0] recall = recall_score(y_true, y_pred) print(recall) # 0.6
四、F1得分
F1得分是查准率和查全率加權平均的一種綜合指標,其中F1得分=2 * Precision * Recall / (Precision + Recall)。
F1得分越高,說明模型的分類性能越好。
// Python代碼示例 from sklearn.metrics import f1_score y_true = [1, 0, 1, 1, 0] y_pred = [1, 1, 1, 0, 0] f1 = f1_score(y_true, y_pred) print(f1) # 0.6666666666666666
五、最佳閾值的確定
在Precision-Recall曲線中,還可以通過將不同的分類閾值應用於模型輸出的概率,來確定最優的閾值。
一般而言,隨着閾值的增加,查准率會逐漸變高,查全率會逐漸變低,因此需要在二者之間進行權衡,並選擇最佳的閾值。
// Python代碼示例 from sklearn.metrics import precision_recall_curve y_true = [1, 0, 1, 1, 0] y_prob = [0.7, 0.6, 0.8, 0.3, 0.4] precision, recall, threshold = precision_recall_curve(y_true, y_prob)
六、小結
查准率和查全率是評估分類模型性能的重要指標之一,通過混淆矩陣來展示模型對正例和反例的分類結果,進而計算出查准率和查全率。
在一定條件下,使用F1得分和最佳閾值可以幫助我們發現最優模型即查准率和查全率都達到較高的水平。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/295536.html