基于阈值的损失函数_【代码+推导】常见损失函数和评价指标总结
(給機器學(xué)習(xí)算法與Python學(xué)習(xí)加星標(biāo),提升AI技能)
作者:董文輝
本文長度為4500字,建議閱讀10+分鐘
本文為你總結(jié)常見損失函數(shù)和評價指標(biāo)。
目錄- 一、損失函數(shù)
- 1.1 回歸問題
- 1.2 分類問題
- 二、評價指標(biāo)
2.1 回歸問題
2.2 分類問題
參考資料
一、損失函數(shù)
1.1 回歸問題
1. 平方損失函數(shù)(最小二乘法):
回歸問題中常用的損失函數(shù),在線性回歸中,可以通過極大似然估計(MLE)推導(dǎo)。計算的是預(yù)測值與真實值之間距離的平方和。實際更常用的是均方誤差(Mean Squared Error-MSE):2. 平均絕對值誤差(L1)-- MAE:
MAE是目標(biāo)值和預(yù)測值之差的絕對值之和,可以用來衡量預(yù)測值和真實值的距離。但是它不能給出,模型的預(yù)測值是比真實值小還是大。3. MAE(L1) VS MSE(L2):
MSE計算簡便,但MAE對異常點有更好的魯棒性:當(dāng)數(shù)據(jù)中存在異常點時,用MSE/RMSE計算損失的模型會以犧牲了其他樣本的誤差為代價,朝著減小異常點誤差的方向更新。然而這就會降低模型的整體性能。
- NN中MAE更新梯度始終相同,而MSE則不同:MSE損失的梯度隨損失增大而增大,而損失趨于0時則會減小。
- Loss選擇建議:
- MSE:如果異常點代表在商業(yè)中很重要的異常情況,并且需要被檢測出來
- MAE:如果只把異常值當(dāng)作受損數(shù)據(jù)
4. Huber損失:
Huber損失是絕對誤差,只是在誤差很小時,就變?yōu)槠椒秸`差。- 當(dāng)Huber損失在之間時,等價為MSE
- 在和時等價為MAE
1.2 分類問題:
1. LogLoss:
二分類任務(wù)中常用的損失函數(shù),在LR中,通過對似然函數(shù)取對數(shù)得到。也就是交叉熵損失函數(shù)。2. 指數(shù)損失函數(shù):
在AdaBoost中用到的損失函數(shù)。它是前向分步加法算法的特例,是一個加和模型。在Adaboost中,經(jīng)過m此迭代之后,可以得到:Adaboost每次迭代時的目的是為了找到最小化下列式子時的參數(shù)α 和G:而指數(shù)損失函數(shù)(exp-loss)的標(biāo)準(zhǔn)形式如下可以看出,Adaboost的目標(biāo)式子就是指數(shù)損失,在給定n個樣本的情況下,Adaboost的損失函數(shù)為:二、評價指標(biāo)
如何評估機器學(xué)習(xí)算法模型是任何項目中一個非常重要的環(huán)節(jié)。分類問題一般會選擇準(zhǔn)確率(Accuracy)或者AUC作為metric,回歸問題使用MSE,但這些指標(biāo)并不足以評判一個模型的好壞,接下來的內(nèi)容我將盡可能包括各個評價指標(biāo)。因為損失函數(shù)大部分可以直接作為評價指標(biāo),所以損失函數(shù)中出現(xiàn)過的簡單介紹。2.1 回歸問題
1. MAE:平均絕對誤差(Mean Absolute Error),范圍2. MSE:均方誤差(Mean Square Error),范圍3. RMSE:根均方誤差(Root Mean Square Error),范圍取均方誤差的平方根可以使得量綱一致,這對于描述和表示是有意義的。4. MAPE:平均絕對百分比誤差(Mean Absolute Percentage Error)注意點:當(dāng)真實值有數(shù)據(jù)等于0時,存在分母0除問題,該公式不可用!5. SMAPE:對稱平均絕對百分比誤差(Symmetric Mean Absolute Percentage Error)注意點:真實值、預(yù)測值均等于0時,存在分母為0,該公式不可用!6. R Squared:即決定系數(shù)(Coefficient of determination),被人們稱為最好的衡量線性回歸法的指標(biāo)。如果我們使用同一個算法模型,解決不同的問題,由于不同的數(shù)據(jù)集的量綱不同,MSE、RMSE等指標(biāo)不能體現(xiàn)此模型針對不同問題所表現(xiàn)的優(yōu)劣,也就無法判斷模型更適合預(yù)測哪個問題。得到的性能度量都在[0, 1]之間,可以判斷此模型更適合預(yù)測哪個問題。公式的理解:2.2 分類問題
0. Confusion Matrix(混淆矩陣):
混淆矩陣一般不直接作為模型的評價指標(biāo),但是他是后續(xù)多個指標(biāo)的基礎(chǔ)。以下為二分類的混淆矩陣,多分類的混淆矩陣和這個類似。| 真實正例 | TP(真正例) | FN(假反例) |
| 真實反例 | FP(假正例) | TN(真反例) |
- 降低假負(fù)數(shù)例(FN):假設(shè)在一個癌癥檢測問題中,每100個人中就有5個人患有癌癥。在這種情況下,即使是一個非常差的模型也可以為我們提供95%的準(zhǔn)確度。但是,為了捕獲所有癌癥病例,當(dāng)一個人實際上沒有患癌癥時,我們可能最終將其歸類為癌癥。因為它比不識別為癌癥患者的危險要小,因為我們可以進(jìn)一步檢查。但是,錯過癌癥患者將是一個巨大的錯誤,因為不會對其進(jìn)行進(jìn)一步檢查。
- 降低假正例(FP):假設(shè)在垃圾郵件分類任務(wù)中,垃圾郵件為正樣本。如果我們收到一個正常的郵件,比如某個公司或?qū)W校的offer,模型卻識別為垃圾郵件(FP),那將損失非常大。所以在這種任務(wù)中,需要盡可能降低假正例。
1. Accuracy(準(zhǔn)確率):
準(zhǔn)確率也就是在所有樣本中,有多少樣本被預(yù)測正確。當(dāng)樣本類別均衡時,Accuracy是一個很好的指標(biāo)。但在樣本不平衡的情況下,產(chǎn)生效果較差。假設(shè)我們的訓(xùn)練數(shù)據(jù)中只有2%的正樣本,98%的負(fù)樣本,那么如果模型全部預(yù)測為負(fù)樣本,準(zhǔn)確率便是98%,。分類的準(zhǔn)確率指標(biāo)很高,會給我們一種模型很好的假象。2. Precision(精準(zhǔn)率):
含義:預(yù)測為正例的樣本中有多少實際為正;3. Recall(召回率):
含義:實際為正例的樣本有多少被預(yù)測為正;4. P-R曲線:
通過選擇不同的閾值,得到Recall和Precision,以Recall為橫坐標(biāo),Precision為縱坐標(biāo)得到的曲線圖。PR曲線性質(zhì):- 如果一個學(xué)習(xí)器的P-R曲線被另一個學(xué)習(xí)器的曲線完全包住,后者性能優(yōu)于前者;
- 如果兩個學(xué)習(xí)器的曲線相交,可以通過平衡點(如上圖所示)來度量性能;
- 閾值下降:
- Recall:不斷增加,因為越來越多的樣本被劃分為正例,假設(shè)閾值為0.,全都劃分為正樣本了,此時recall為1;
- Precision:正例被判為正例的變多,但負(fù)例被判為正例的也變多了,因此precision會振蕩下降,不是嚴(yán)格遞減;
- 如果有個劃分點可以把正負(fù)樣本完全區(qū)分開,那么P-R曲線面積是1*1;
5. (加權(quán)調(diào)和平均)和 (調(diào)和平均):
- :召回率(Recall)影響更大,eg.
- :精確率(Precision)影響更大,eg.
6. ROC-AUC:
Area Under Curve(AUC) 是二分類問題中使用非常廣泛的一個評價指標(biāo)。AUC的本質(zhì)是,任取一個正樣本和負(fù)樣本,模型輸出正樣本的值大于負(fù)樣本值的概率。構(gòu)成AUC的兩個基本指標(biāo)是假正例率和真正例率。- 橫軸-假正例率: 實際為負(fù)的樣本多少被預(yù)測為正;
- 縱軸-真正例率: 實際為正的樣本多少被預(yù)測為正;
7. 代碼實現(xiàn):
from sklearn.metrics import accuracy_score,precision_score,recall_score,f1_score,fbeta_scorey_test = [1,1,1,1,0,0,1,1,1,0,0]y_pred = [1,1,1,0,1,1,0,1,1,1,0]print("準(zhǔn)確率為:{0:%}".format(accuracy_score(y_test, y_pred)))print("精確率為:{0:%}".format(precision_score(y_test, y_pred)))print("召回率為:{0:%}".format(recall_score(y_test, y_pred)))print("F1分?jǐn)?shù)為:{0:%}".format(f1_score(y_test, y_pred)))print("Fbeta為:{0:%}".format(fbeta_score(y_test, y_pred,beta =1.2)))參考資料:
[1]分類問題性能評價指標(biāo)詳述:?
https://blog.csdn.net/foneone/article/details/88920256
[2]AUC,ROC我看到的最透徹的講解:
https://blog.csdn.net/u013385925/article/details/80385873
[3]機器學(xué)習(xí)大牛最常用的5個回歸損失函數(shù),你知道幾個?:
https://www.jiqizhixin.com/articles/2018-06-21-3
[4]機器學(xué)習(xí)-損失函數(shù):?
https://www.csuldw.com/2016/03/26/2016-03-26-loss-function/
[5]損失函數(shù)jupyter notebook:
https://nbviewer.jupyter.org/github/groverpr/Machine-Learning/blob/master/notebooks/05_Loss_Functions.ipynb
[6]L1 vs. L2 Loss function:
http://rishy.github.io/ml/2015/07/28/l1-vs-l2-loss/
[7]P-R曲線深入理解:?
https://blog.csdn.net/b876144622/article/details/80009867
原文鏈接:
https://zhuanlan.zhihu.com/p/91511706
推薦閱讀12521 Star!Python學(xué)習(xí)的必備法寶,隨查隨用,太方便了吧collections助力你的代碼更加簡潔、高效優(yōu)雅【下載】74頁中文Pytorch模型訓(xùn)練實用手冊【深度】詳解&Faster R-CNN目標(biāo)檢測的實現(xiàn)過程看小姐姐用動圖展示10大Git命令喜歡就點「在看」吧 !
總結(jié)
以上是生活随笔為你收集整理的基于阈值的损失函数_【代码+推导】常见损失函数和评价指标总结的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 左操作数必须为左值_进入“左转弯待转区”
- 下一篇: 普华基础软件笔试_普华“2018上海市软