混淆矩陣:
對于二分類的分類問題, 我們可以根據樣例將真實類別與預測類別的組合分為真正例(true positive),假正例(false positive),真反例(true negative), 假反例(false negative)四種情形.
根據混淆矩陣可以計算如下指標:
ROC曲線
ROC曲線全稱是‘受試者工作曲線’。ROC曲線越遠離對角線,模型效果越好。如果要比較兩個分類器的性能孰優孰劣,可以比較ROC曲線下的區域面積即為AUC值,AUC值越接近1模型的效果越好。
縱軸:真正例率TPR=TP/(TP+FN),也就是召回率Recall;
橫軸:假正例率FPR=FP/(FP+TN)。
PR曲線
PR圖反應了分類器在不同閾值下識別正例的準確率和覆蓋率之間的權衡。
在一些應用中,對查全率和查準率的重視程度有所不同。推薦系統中,更希望推薦商品是用戶感興趣的,此時查準率更重要;逃犯信息檢索中,更希望少漏掉逃犯,查全率更重要,可以通過加權計算F1值來比較性能。
縱軸:查準率Precision=TP/(TP+FP),
橫軸:查全率Recall=TP/(TP+FN)。
Lift(提升)曲線
Lift 曲線是不同閾值下Lift和預測正例占比的軌跡。
在使用模型進行預測之后,模型的查準率為precision=TP/(TP+FP),在不使用模型之前,模型的查準率為pre_precision=(TP+FN)/(TP+FP+FN+TN),所以在使用模型之后,模型的查準率提升至Lift值=precision/pre_precision.Lift(提升)曲線衡量的是,與不利用模型相比,模型的預測能力“變好”了多少。lift(提升指數)越大,模型的運行效果越好。一般lift(提升指數)>1.
縱軸:Lift值=precision/pre_precision,
橫軸:預測正例占比x=(TP+FP)/(TP+FP+FN+TN)
Gain曲線
Gain增益圖是描述整體精準率的指標.和Lift曲線在于縱軸刻度的不同。
縱軸:Gain=precision=TP/(TP+FP),
橫軸:預測正例占比x=(TP+FP)/(TP+FP+FN+TN)
代碼實現
python版本的ROC代碼可以參考這個博客python版ROC代碼
Spark版本的差不多,后續更新吧