對數損失函數logloss詳解和python代碼


python金融風控評分卡模型和數據分析微專業課(博主親自錄制視頻):http://dwz.date/b9vv

 

 

 

 

python代碼

sklearn.metrics.log_loss(y_truey_predeps=1e-15normalize=Truesample_weight=Nonelabels=None)[source]

https://scikit-learn.org/stable/modules/generated/sklearn.metrics.log_loss.html

import numpy as np
from sklearn.metrics import log_loss
value=log_loss(["spam", "ham", "ham", "spam"],[[.1, .9], [.9, .1], [.8, .2], [.35, .65]])
print("value:",value)


def logloss(true_label, predicted_prob):
  if true_label == 1:
    return -np.log(predicted_prob)
  else:
    return -np.log(1 - predicted_prob)

  

https://blog.csdn.net/laolu1573/article/details/82925747(轉載)

定義:
−(ylog(p)+(1−y)log(1−p)) -{(y\log(p) + (1 - y)\log(1 - p))}−(ylog(p)+(1−y)log(1−p))

y yy表示樣本的真實標簽(1或-1),p pp表示模型預測為正樣本的概率。

可視化:
下圖展示了lable=1時對數損失值的范圍。當預測概率接近1時,對數損失緩慢下降。但隨着預測概率的降低,對數損失迅速增加。對數損失對兩種類型的錯誤都會進行處罰,尤其是那些置信度很高的錯誤預測!


Code:
def logloss(true_label, predicted_prob):
if true_label == 1:
return -log(predicted_prob)
else:
return -log(1 - predicted_prob)
1
2
3
4
5
一個樣本集里正樣本出現的概率為p,如果我們把每個樣本的預測值都置為p,那么logloss是多少呢?

很顯然
若p=0.1,logloss=0.325

若p=0.2,logloss=0.500

若p=0.3,logloss=0.611

若p=0.4,logloss=0.673

若p=0.5,logloss=0.693

若p=0.6,logloss=0.673

若p=0.7,logloss=0.611

若p=0.8,logloss=0.500

若p=0.9,logloss=0.325

所以最差的情況就是,正好是一半正樣本一半負樣本,此時你亂猜出的logloss是0.693。

所以只要loglss是在0.693以上,就說明模型是失敗的。

 python機器學習生物信息學系列課(博主錄制)http://dwz.date/b9vw

 

歡迎關注博主主頁,學習python視頻資源

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM