对数损失函数logloss详解和python代码

python机器学习-乳腺癌细胞挖掘(博主亲自录制视频)https://study.163.com/course/introduction.htm?courseId=1005269003&utm_campaign=commission&utm_source=cp-400000000398149&utm_medium=share

python代码html

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

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

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(转载)github

定义:
−(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表示模型预测为正样本的几率。ide

可视化:
下图展现了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是多少呢?spa

很显然
若p=0.1,logloss=0.325.net

若p=0.2,logloss=0.5003d

若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视频资源

相关文章
相关标签/搜索