一些损失函数的细节知识可以参考本博客的此篇文章:http://www.fashici.com/tech/101.html
其中对数损失函数形式为:
其中p表示预测值,y为实际标签,y取值为0或者1。
当p为0或者为1的时候,log(p)或者log(1-p)会报异常,为了避免报异常,可以对p进行一些特殊处理,细节请参考代码。
对数损失函数的代码如下:
import math def log_loss(y, p): """ --- Log_loss computing function A function to compute the log loss of a predicted probability p given a true target y. :param y: True target value :param p: Predicted probability :return: Log loss. """ p = min(max(p, 10e-15), 1. - 10e-15) return -math.log(p) if y == 1 else -math.log(1. - p) if __name__ == "__main__": print(log_loss(0, 0)) print(log_loss(0, 1)) print(log_loss(1, 0)) print(log_loss(1, 1))
输出如下:
9.99200722163e-15 32.2369908993 32.2361913019 9.99200722163e-15