逻辑回归在 log 前的乘数项,是和 +1
,-1
对应的
恰好能将针对不同 GT y
的 loss 统一成 1个式子
import numpy as np
def loss(y, y_pred):
# loss[y=1] + loss[y=-1]
return -((1 + y) / 2 * np.log(y_pred) + (1 - y) / 2 * np.log(1 - y_pred + 1e-30))
# examples
print(loss(1, 0.999)) # 'TP' 正例样本 正确概率
print(loss(1, 0.001)) # 'FN' 正例样本 错误概率
print(loss(-1, 0.001)) # 'TN' 负例样本 正确概率
print(loss(-1, 0.999)) # 'FP' 负例样本 错误概率
# vectors
y = np.array([1, 1, -1, -1])
scores = np.array([0.9, 0.1, 0.1, 0.9])
print(loss(y, scores))
0.0010005003335835344
6.907755278982137
0.0010005003335835344
6.907755278982136
[0.10536052 2.30258509 0.10536052 2.30258509]
网友评论