二分类交叉熵损失函数python_Sklearn 中二分类问题的交叉熵计算

本文介绍了二分类问题的交叉熵损失函数,并通过Python的Sklearn库展示了log_loss的计算。通过对比自己实现的公式与Sklearn的计算结果,分析了两者不一致的原因,主要在于Sklearn对概率值进行了clip处理,避免了0和1的情况。阅读源代码加深了对log_loss函数的理解。
摘要由CSDN通过智能技术生成

Sklearn 中二分类问题的交叉熵计算

二分类问题的交叉熵

在二分类问题中, 损失函数 (loss function) 为交叉熵 (cross entropy) 损失函数. 对于样本点 (x,y) 来说, y 是真实的标签, 在二分类问题中, 其取值只可能为集合{0, 1}. 我们假设某个样本点的真实标签为 yt, 该样本点取 yt=1 的概率为 yp, 则该样本点的损失函数为

\[-log(yt|yp)=-(ytlog(yp)+(1-yt)log(1-yp))\]

对于整个模型而言, 其损失函数就是所有样本点的损失函数的平均值. 注意到, 对于该损失函数, 其值应该为非负值, 因为 yp 的取值在 (0,1) 之间.

自己实现的方法有问题?

在 Python 的 sklearn 模块中, 实现二分类问题的交叉熵损失函数为 log_loss(). 我们尝试着运行官网中给出的例子, 同时, 用自己的方法实现该损失函数, 其 Python 代码如下:fromsklearn.metricsimportlog_loss

frommathimportlog# 自然对数为底

# 二分类的交叉熵损失函数

# 利用 sklearn 模块的计算结果

y_true=[0,0,1,1]

y_pred=[[.9,.1],[.8,.2],[.3,.7],[.01,.99]]

sk_log_loss=log_loss(y_true,y_pred)

print('Loss by sklearn: %s.'%sk_log_loss)

# 利用公式计算得到的结果

Loss=0

forlabel,probinzip(y_true,y_pred):

Loss-=(label*log(prob[0])+(1-label)*log(prob[1]))

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值