每个样本的唯一 true/false 损失
Unique true/false loss for every sample
对于二进制预测问题,如果真实标签为0,则正确预测的增益为T_0,错误预测的损失为F_0。 1、T_1、F_1、
也一样
每个样本都有其独特的 T_0、T_1、F_0、F_1。我想我需要更改 eval 指标,但我不知道该怎么做。因为大部分自定义的eval metric只输入(pred, true label),你知道怎么解决吗?
我认为一种解决方法是简单地将四个值 T_0,T_1,F_0,F_1
附加到基本事实本身。由于评估指标只会使用一次,即在训练分类器时,您的目标可以实现。
假设你以某种方式改变了你的真实标签
[1, 0, 1, 1, 0, 0]
对此:
[ [1,[T_0, F_0, T_1, F_1]],
[0,[T_0, F_0, T_1, F_1]],
[1,[T_0, F_0, T_1, F_1]],
[1,[T_0, F_0, T_1, F_1]],
[0,[T_0, F_0, T_1, F_1]],
[0,[T_0, F_0, T_1, F_1]] ]
即每个基本真实值都附有一个数组,该数组由对应样本的 T_0,T_1,F_0,F_1
组成。
现在您可以像这样定义指标:
def my_metric(y_pred,y_true):
tot_sum = 0.0
for idx in range(0,len(y_pred):
if y_true[idx][0]==0:
if y_pred[idx]==0:
total_sum+=y_pred[idx][1][0] #Add gain for T_0
else:
total_sum-=y_pred[idx][1][1] #Subtract loss for F_0
else:
if y_pred[idx]==1:
total_sum+=y_pred[idx][1][2] #Add gain for T_1
else:
total_sum-=y_pred[idx][1][3] #Subtract loss for F_1
return total_sum
我认为也可能有一种使用 numpy
来执行此操作的有效方法,如果我发现了什么,我会更新答案。但是,只要将值正确附加到基本事实,这应该可以正常工作。
对于二进制预测问题,如果真实标签为0,则正确预测的增益为T_0,错误预测的损失为F_0。 1、T_1、F_1、
也一样每个样本都有其独特的 T_0、T_1、F_0、F_1。我想我需要更改 eval 指标,但我不知道该怎么做。因为大部分自定义的eval metric只输入(pred, true label),你知道怎么解决吗?
我认为一种解决方法是简单地将四个值 T_0,T_1,F_0,F_1
附加到基本事实本身。由于评估指标只会使用一次,即在训练分类器时,您的目标可以实现。
假设你以某种方式改变了你的真实标签
[1, 0, 1, 1, 0, 0]
对此:
[ [1,[T_0, F_0, T_1, F_1]],
[0,[T_0, F_0, T_1, F_1]],
[1,[T_0, F_0, T_1, F_1]],
[1,[T_0, F_0, T_1, F_1]],
[0,[T_0, F_0, T_1, F_1]],
[0,[T_0, F_0, T_1, F_1]] ]
即每个基本真实值都附有一个数组,该数组由对应样本的 T_0,T_1,F_0,F_1
组成。
现在您可以像这样定义指标:
def my_metric(y_pred,y_true):
tot_sum = 0.0
for idx in range(0,len(y_pred):
if y_true[idx][0]==0:
if y_pred[idx]==0:
total_sum+=y_pred[idx][1][0] #Add gain for T_0
else:
total_sum-=y_pred[idx][1][1] #Subtract loss for F_0
else:
if y_pred[idx]==1:
total_sum+=y_pred[idx][1][2] #Add gain for T_1
else:
total_sum-=y_pred[idx][1][3] #Subtract loss for F_1
return total_sum
我认为也可能有一种使用 numpy
来执行此操作的有效方法,如果我发现了什么,我会更新答案。但是,只要将值正确附加到基本事实,这应该可以正常工作。