使用RandomForest算法,灵敏度和特异性进行预测

问题描述 投票:0回答:1

我是ML的新手,使用随机森林算法开发了一个简单的预测模型。我也在使用Confusion Matrix评估我的模型,并计算我建模型的灵敏度和特异性分数。

虽然我在概念上理解这两个,但我现在停留在这样一个点,我的模型总是导致灵敏度得分为1,特异性得分为0.它得到91%的准确度得分(91/100训练样本被正确预测) 。

现在我从中推断出什么?我的模型是否太敏感而且不具体?我是否必须明白我的模型将更多地发出假阳性而不是假阴性? (这在我的场景中可能会很好),因为我正在处理的域名是预测欺诈,其中误报更好。

作为旁注,在典型的ML工作流程中,灵敏度和特异性分数如何在实践中经常使用?它是否用于在客户端系统上保留某种阈值,以便用一小撮盐进行预测?我可以调整哪些参数来获得这些参数的不同值?目前,我只是调整了随机森林模型变量,如没有树,没有节点等。但这些数字始终保持不变。

python r machine-learning data-science
1个回答
0
投票

我认为,根据您的特异性和敏感性数据,您可以做出的最佳推断是您的模型以某种方式错误指定,存在数据错误,或者导致此问题的数据或代码的某些其他非参数方面。

如你所知:(使用:真阳性,假阴性......)

Sensitivity = TP/(TP + FN) 

Specificity = TN/(FP + TN)

Accuracy = (TP + TN) / (TP + FP + TN + FN) 

为了获得灵敏度= 1,TP = TP + FN。当然,有许多方法可能会发生,但要查找的方法是TP = FN,或FN = 0(因为TP不能为0)。

另外,0的特异性意味着TN = 0,无论FP和TN是什么。但在这里我也会看看FP和TN的分布。

如果TN = 0,那么对于精度= 0.9,它必须是TP = 0.9,这表明即使TN = 0,FP和/或FN> 0并且实际上FP + FN = 0.1(因为分母必须等于1 )。

@desertnaut提到的一种可能性是你有一个严重的类不平衡问题。也就是说,少数类(您想要预测的那个)是数据中所有观察总数的非常非常小的一部分。要研究这一点,只需绘制目标的分布。如果你看到少数民族阶级比总数少10%,(一般来说,一个类别占据其他10:1),那么你很可能会开始在模型中看到问题。

Here's a good tutorial on dealing with imbalanced data.

And here's a paper if you're more technically minded and want to confront an imbalance in a more academic way.

也就是说,我还会查看您的模型代码。检查您如何分离培训和测试:

  • 训练集中的班级平衡是否代表整个班级的平衡?
  • 如果有的话,你如何进行交叉验证?更改方法会为spec / sens提供不同的结果吗?
  • 类别的数据类型是否正确(对于其他变量,这个问题)是否正确?由于RF可以处理分类变量,如果你有一个你想要的int编码为string(只是为了选择一个例子),它可能不会引发错误,这可能会产生奇怪的结果。

查看具有完美分数(1/0)的任何结果通常表示不正确地指定模型参数(或超参数)之外的其他内容。不是说不可能发生。它很少。

© www.soinside.com 2019 - 2024. All rights reserved.