首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将成本分配给混淆矩阵

如何将成本分配给混淆矩阵
EN

Data Science用户
提问于 2022-05-25 08:48:42
回答 2查看 182关注 0票数 3

我正试图将成本分配给混淆矩阵。也就是说,在我的问题中,FP没有与FN相同的成本,所以我想给这些情况分配一个成本"x“,这样算法就可以根据这些代价来学习。

我将用一个例子来解释我的情况:

  • 当我们想要发现信用卡欺诈时,它没有相同的成本来预测它不是欺诈,而事实上它是相反的。在第一种情况下,费用会高得多。

我想知道的是,R中是否有一个库,其中我可以将成本分配给这些错误的决策(即,给混淆矩阵的每个可能值一个代价),或者是否有一个基于成本/收益矩阵的学习算法。

我也可以使用一些方法来实现这一点,而不需要使用库。

非常感谢。

EN

回答 2

Data Science用户

回答已采纳

发布于 2022-05-31 09:47:45

在这种情况下,可以考虑使用平均利润作为评估指标的报酬矩阵。重要的是要记住成本函数(在训练过程中使用的算法学习过程中使用的,它也必须与基于梯度的优化)和性能度量(这是我认为在这种情况下应该考虑的,例如平均利润)之间的区别。

如果您有以下混淆矩阵:

您可以在矩阵的每象限分配收益/损失:

在这种情况下,您的评估指标(选择最佳模型):

Average Profit = \frac{(TN number*TN benefit + TP number*TP benefit - FN number*FN losses - FP number*FP losses)}{Number Of Predictions}

此度量还可用于选择模型的最佳阈值:

例如,如果您想将培训算法提供给R中的XGB,请查看文档,其中有一个名为feval的参数,以包含您的自定义评估度量函数(文档链接):

feval ->自定义评价函数.返回列表(度量=“度量-名称”,值=“度量-值”),其中包含给定的预测和数据序列。

票数 2
EN

Data Science用户

发布于 2022-05-30 10:20:21

什么定义了每个FP或FN的惩罚值?这是与TP和TN相比,这些决定造成的最终成本。

伪造100万美元的信用卡欺诈,与10美元的假阳性不一样重要。

这就是为什么成本函数将直接联系到欺诈的数量,因此你的算法的目标函数。

因此,您可以将每个决策结果(TP、TN、FP、FN)乘以每次支付的金额:记住,您的目标是改进整个模型,包括正确的结果,而不仅仅是糟糕的结果。

因此,目标函数是试图求出所有付款的总和的最大值,将良好付款(TP、TN)除以所有金额(TP、TN、FP、FN)。

例如:

代码语言:javascript
复制
TP= [2500, 200, 60]
TN= [300,5000]
FP= [1500,30,600]
FN= [300, 200]

Score = (2500+200+60+300+5000) / (2500+200+60+300+5000 + 1500 + 30 +600 +300 +200)

Score = 0.75

这意味着75%的资金被正确分配,目标是尽可能接近100%。

如果你也想考虑欺诈的数量,你只需要在每笔交易中增加和人为的惩罚(比如说100美元),这样你也可以对欺诈的数量进行评估,而不是最终的原始成本结果。

代码语言:javascript
复制
Score = ( 2600+300+160+400+5100) / (2600+300+160+400+5100 + 1600 + 130 +700 +400 +300)

Score = 0.73

当试图降低大交易的重要性时,这个选项是有用的,有利于小交易(=考虑更多的小客户)。

您可以在这里找到有关成本敏感成本函数的更多信息:https://towardsdatascience.com/fraud-detection-with-cost-sensitive-machine-learning-24b8760d35d9

票数 2
EN
页面原文内容由Data Science提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://datascience.stackexchange.com/questions/111282

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档