博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
对数损失函数logloss详解和python代码
阅读量:5248 次
发布时间:2019-06-14

本文共 1200 字,大约阅读时间需要 4 分钟。

 (博主亲自录制视频)

python代码

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

import numpy as npfrom sklearn.metrics import log_lossvalue=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)

  

(转载)

定义:

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

 

转载于:https://www.cnblogs.com/webRobot/p/11457647.html

你可能感兴趣的文章
[bzoj1004] [HNOI2008] Cards
查看>>
原生HttpClient详细使用示例
查看>>
几道面试题
查看>>
Factory Design Pattern
查看>>
python中贪婪与非贪婪
查看>>
guava API整理
查看>>
无锁编程笔记
查看>>
jquery mobile
查看>>
如何在vue单页应用中使用百度地图
查看>>
Springboot使用步骤
查看>>
Spring属性注入
查看>>
Springboot-配置文件
查看>>
Springboot-日志框架
查看>>
P1192-台阶问题
查看>>
一、使用pip安装Python包
查看>>
spring与quartz整合
查看>>
Kattis之旅——Eight Queens
查看>>
3.PHP 教程_PHP 语法
查看>>
Duilib扩展《01》— 双击、右键消息扩展
查看>>
利用Fiddler拦截接口请求并篡改数据
查看>>