【问题标题】:Computing ROC curve for K-NN classifier计算 K-NN 分类器的 ROC 曲线
【发布时间】:2016-08-27 07:44:39
【问题描述】:

您可能知道,在 K-NN 中,通常根据“多数票”做出决定,而不是根据某个阈值 - 即 没有参数可以作为 ROC 曲线的基础.

请注意,在我的 K-NN 分类器的实现中,投票权重不同。 IE。每个“邻居”的权重为 e^(-d),其中 d 是测试样本和邻居。该度量为 K 个邻居中最近邻居的投票赋予了更高的权重。


我目前的决策规则是,如果正邻居的分数总和高于负样本的分数总和,那么我的分类器说 POSITIVE ,否则,它会显示 NEGATIVE

但是 - 没有门槛



然后,我想到了以下想法:

确定具有较高投票总和的样本类别,可以更一般地描述为使用阈值 0,对于通过以下方式计算的分数: (POS_NEIGHBORS_SUMMED_SCORES - NEG_NEIGHBORS_SUMMED_SCORES)


所以我想将我的决策规则更改为在该度量上使用阈值,并根据阈值绘制 ROC 曲线

(POS_NEIGHBORS_SUMMED_SCORES - NEG_NEIGHBORS_SUMMED_SCORES)

这听起来像是完成这项任务的好方法吗?

【问题讨论】:

    标签: machine-learning knn roc


    【解决方案1】:

    是的,它或多或少是通常使用的。如果你看一下 scikit-learn,它在 knn 中有权重,而且它们还有 predit_proba,它为你提供了一个明确的决策阈值。但是,通常您不想以差异为条件,而是以比率为条件

    votes positive / (votes negative + votes positive) < T
    

    通过这种方式,您知道您只需将阈值从 0“移动”到 1,而不是任意值。它现在也有了明确的解释——作为你认为“足够肯定”的内部概率估计。默认情况下 T = 0.5,如果概率高于 50%,则您将其归类为阳性,但如前所述 - 您可以做任何事情。

    【讨论】:

      猜你喜欢
      • 2019-03-25
      • 2020-09-19
      • 2012-10-10
      • 2018-12-19
      • 2018-05-24
      • 2018-04-21
      • 2014-01-03
      • 2021-03-08
      • 2021-07-30
      相关资源
      最近更新 更多