【问题标题】:How do you set an optimal threshold for detection with an SVM?如何设置 SVM 检测的最佳阈值?
【发布时间】:2013-11-29 03:04:08
【问题描述】:

我有一个以 SVM 作为分类器的人脸检测系统。分类器输出一个介于 0 和 1 之间的置信度以及决策。与任何检测系统一样,也有几个误报。为了消除其中的一些,我们可以使用非极大值抑制(请参阅http://www.di.ens.fr/willow/teaching/recvis10/assignment4/)。检测的置信度阈值是手动设置的。例如,置信度低于 0.6 的任何检测都是误报。有没有办法自动设置这个阈值?

例如在检测/估计理论中使用一些东西?

【问题讨论】:

    标签: machine-learning svm libsvm


    【解决方案1】:

    如果您搜索概率校准,您会发现一些关于相关问题的研究(重新校准输出以返回更好的分数)。

    如果您的问题是二元分类问题,您可以通过将值分配给真/假正/负选项乘以类别比率来计算成本斜率。然后,您可以与仅在一个点相交的给定 AUC 曲线形成一条线,以找到一个在某种意义上最佳的点作为您的问题的阈值。

    【讨论】:

    • 这是一个二元分类问题。我将 SVM 用作“黑匣子”,它给出了二元决策和置信度(0 到 1 之间)。
    • 我所说的一切仍然适用。
    • 另外,SVM 没有概率。已经为您应用了一种概率校准形式(很可能是 Platt Scaling)。我所说的关于 AUC 的一切仍然是正确的,不会改变。
    • 没错,libsvm 使用 Platt 的方法(或者我认为的一种变体)。你是说即使有这些概率,我仍然可以使用 AUC 吗?假设我有正样本 S1、S2 和 S3,libsvm 输出的相应概率为 0.58、0.8 和 0.9。使用 AUC(改变阈值并在一个大集合上进行测试),我得到 0.75 作为阈值。这意味着我只会将 S2 和 S3 视为真阳性。这是正确的方法吗?
    • 您可以将 AUC 用于任何具有分值的二进制任务,它们不必是概率。有很多关于 AUC 的工作原理以及如何计算它的信息
    猜你喜欢
    • 2011-07-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-05
    相关资源
    最近更新 更多