【问题标题】:Prediction using RandomForest Algorithm, Sensitivity and Specificity使用 RandomForest 算法、敏感性和特异性进行预测
【发布时间】:2018-03-04 15:29:17
【问题描述】:

我是 ML 新手,正在使用随机森林算法开发一个简单的预测模型。我还在使用混淆矩阵评估我的模型,并计算我构建的模型的灵敏度和特异性分数。

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

现在我从中推断出什么?我的模型是否过于敏感且不具体?我是否必须了解我的模型将更容易发出误报而不是误报? (这在我的场景中可能很好)因为我正在处理的领域是预测欺诈,误报更好。

附带说明一下,在典型的 ML 工作流程中,敏感性和特异性分数通常如何在实践中使用?它是否用于在客户端系统上保持某种阈值,以便用少量盐进行预测?我可以调整哪些参数以获得不同的值?目前,我只是调整了随机森林模型变量,如树数、节点数等。但这些数字始终保持不变。

【问题讨论】:

  • Y 不绘制 ROC AUC 曲线?
  • 我删除了“ML”标签,它与 ML 编程语言无关。
  • AUC 是 0.5,我猜这是最差的数字
  • 也想知道我的准确率是 90%,而 AUC 只不过是一个随机概率
  • 因为你可能处于类不平衡设置中,需要特殊处理

标签: python r machine-learning data-science


【解决方案1】:

我认为,您可以从您的特异性和敏感性数字做出的最佳推断是您的模型在某种程度上被错误指定,存在数据错误,或者数据或您的代码的其他一些非参数方面导致了这种情况问题。

如你所知:(使用:真阳性、假阴性……)

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.

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

  • 训练集中类的平衡是否代表了整个集的平衡?
  • 如果有的话,您是如何进行交叉验证的?更改方法是否会给您带来不同的规格/感觉结果?
  • 所有类别的数据类型是否正确(以及其他变量)?由于 RF 可以处理分类变量,因此如果您希望将 int 编码为 string(仅举一个例子),它可能不会引发错误,这可能会产生奇怪的结果。

看到任何满分 (1/0) 的结果通常表明模型参数(或超参数)以外的其他内容未正确指定。并不是说它不可能发生。它很少这样做。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-23
    • 2021-04-01
    • 2019-12-08
    • 1970-01-01
    • 1970-01-01
    • 2019-03-04
    相关资源
    最近更新 更多