使用 $ 金额作为损失来衡量分类性能
Use a $ amount as loss to measure classification performance
我正在研究欺诈检测系统,我想优化系统以考虑审查部门的成本(以美元为单位):
我想根据最终成本调整损失:
- 如果一笔交易存在欺诈,但金额很小,花时间审核可能会更贵。
- 经过审查的非欺诈性交易仍然有成本。
- 有些交易可能非常昂贵,必须被抓住
指标应为以下各项的总和:
- TP --> 无成本
- FP --> 审核费用
- TN --> 审查成本 + 我们从欺诈中收回的金额(如果不是全部)
- FN --> 欺诈交易总额
指标应如下所示:
def fraudmetric(ytrue, ypred, fraudulentamt, reviewcost):
cost = [0 if yt==0 and yp==0 else ## TN
reviewcost if yt==1 and yp==1 else ## TP
reviewcost if yt==0 and yp==1 else ## FP
fa if yt==1 and yp==0 else 0 ## FN
for yt, yp, fa in zip(ytrue, ypred, fraudulentamt, reviewcost)]
return np.sum(cost)
有没有一种优雅的方法可以用 Python
做到这一点?
谢谢
您可以像这样使用...轻松实现二进制 table,table。它看起来像这样:
metric_table = [[0, reviewcost],
[fa, reviewcost]]
metric_value = metric_table[yt][yp] # for a given yt, yp
我在这里冒昧地修复了您代码中似乎存在的错误,因为您压缩了四个可迭代对象,但只得到了三个值。我假设您想要 reviewcost
中的元素而不是整个元素。如果不正确,请修复它。另外,我看不出有必要创建一个临时数组,只是为了总结一下,所以我把它折叠成一个生成器的总和:
def fraudmetric(ytrue, ypred, fraudulentamt, reviewcost):
return sum([[ 0, rc],
[fa, rc]][yt][yp]
for yt, yp, fa, rc in zip(ytrue, ypred, fraudulentamt, reviewcost))
我正在研究欺诈检测系统,我想优化系统以考虑审查部门的成本(以美元为单位):
我想根据最终成本调整损失:
- 如果一笔交易存在欺诈,但金额很小,花时间审核可能会更贵。
- 经过审查的非欺诈性交易仍然有成本。
- 有些交易可能非常昂贵,必须被抓住
指标应为以下各项的总和:
- TP --> 无成本
- FP --> 审核费用
- TN --> 审查成本 + 我们从欺诈中收回的金额(如果不是全部)
- FN --> 欺诈交易总额
指标应如下所示:
def fraudmetric(ytrue, ypred, fraudulentamt, reviewcost):
cost = [0 if yt==0 and yp==0 else ## TN
reviewcost if yt==1 and yp==1 else ## TP
reviewcost if yt==0 and yp==1 else ## FP
fa if yt==1 and yp==0 else 0 ## FN
for yt, yp, fa in zip(ytrue, ypred, fraudulentamt, reviewcost)]
return np.sum(cost)
有没有一种优雅的方法可以用 Python
做到这一点?
谢谢
您可以像这样使用...轻松实现二进制 table,table。它看起来像这样:
metric_table = [[0, reviewcost],
[fa, reviewcost]]
metric_value = metric_table[yt][yp] # for a given yt, yp
我在这里冒昧地修复了您代码中似乎存在的错误,因为您压缩了四个可迭代对象,但只得到了三个值。我假设您想要 reviewcost
中的元素而不是整个元素。如果不正确,请修复它。另外,我看不出有必要创建一个临时数组,只是为了总结一下,所以我把它折叠成一个生成器的总和:
def fraudmetric(ytrue, ypred, fraudulentamt, reviewcost):
return sum([[ 0, rc],
[fa, rc]][yt][yp]
for yt, yp, fa, rc in zip(ytrue, ypred, fraudulentamt, reviewcost))