ML:分类模型比较

数据挖掘 分类 逻辑回归 模型选择
2022-03-01 21:59:28

给定的是我需要用于分类的数据集,我想比较不同分类模型的性能。假设,我想看看逻辑回归(具有不同的截止点)和 KNN。如果我按照以下方式进行,是否有任何问题:

  1. 在训练和验证数据中拆分数据(以及用于对获胜模型进行性能评估的测试集)。
  2. 在训练集上训练一个逻辑回归模型和一个 KNN 分类模型。对于介于 0 和 1 之间的每个截止点 t,我将逻辑回归模型视为分类模型——因此回归模型会导致许多分类模型。
  3. 我现在在验证数据上比较我的所有分类模型(那些 t 和 KNN 的逻辑回归)的特定范围 t(比如说 0.01 到 0.99)的分类性能。我会选择性能最好的(基于某个指标)。

我正在与其他人讨论这个问题,他们认为 t 需要被视为超参数,并且这个参数需要单独调整。如果这是真的 - 为什么?我上面的论点有什么问题?

4个回答

我将遵循以下程序:

  1. 将数据拆分为训练和测试数据集(如果您不想进行 k 折交叉验证,还可以使用验证集)
  2. 使用 k 折交叉验证训练不同的模型以找到最佳超参数。其中一个超参数可能是您谈到的判别阈值(截止点)。
  3. 使用模型对测试数据集进行预测,以基于未见过的数据集评估模型的性能。现在,您可以选择最佳型号。

一般模型选择有点不同,您需要使用本文中解释的统计测试

WRT 截止点,应该注意的是,没有使用训练数据集估计的任何参数都被视为超参数。

您可以比较考虑不同截止点的所有模型的性能。但这不是一种有效的方法。最好比较模型的最佳性能。更容易找出模型在哪种情况下(即,使用哪些超参数和截止点)具有最佳性能,并将其与其他模型的最佳性能进行比较。

原则上你可以使用你的方法。

但是,您不应该优化您的测试集(第 3 步)。相反,您应该使用您的验证集选择最佳 t。然后你将它与 KNN 进行比较,也在验证集上进行比较。最后,最好的模型应该在测试集上进行评估。

不要使用准确性!使用正确的评分规则!

您提出的建议与接受者操作曲线下的面积 ROCAUC 有关。ROC 在所有可能的阈值截止值处绘制灵敏度和特异性(实际上是 1-特异性)。

听起来您会选择具有最高准确度值的模型,而不管该阈值如何。如果最佳准确度来自逻辑回归,阈值为0.6,去那个模型。如果最佳准确度来自 KNN,阈值为0.07,去那个模型。

听起来不错,对,选择最准确的模型?

这是不正确的,听起来很诱人。以下是范德比尔特大学教授和 Cross Validated(统计堆栈)的活跃成员关于此主题的几篇博客文章。

https://www.fharrell.com/post/class-damage/

https://www.fharrell.com/post/classification/

(Frank Harrell 甚至有一篇关于 ROCAUC 在模型比较方面存在缺陷的帖子。)

准确性是一个有缺陷的性能指标。任何基于阈值的性能指标都有相当大的缺陷。请参阅有关该主题的出色帖子

无耻地,我将链接一个我在类似主题上发布的问题,该问题由同一个人以相同的主旨回答。是他关于这个主题的另一篇文章。

(我打算接受这个答案,但还不想让其他人发表他们的想法。)

一个简单的正确评分规则可以帮助您入门,这是 Brier 评分,基本上是平方损失。取上课的概率1,减去真实类(0或者1),将该值平方,然后将每个预测的这些值相加。

Brier(y,p^)=i=1N(yip^i)2

yi是真正的班级,0或者1, 和p^i是预测概率(这很可能是在课堂上的预测概率1)。如果您的软件为您提供一流的概率,您可以调整 Brier 分数0.

我正在与其他人讨论这个问题,他们认为 t 需要被视为超参数,并且这个参数需要单独调整。

在你的练习中,你实际上在做同样的事情。获得最好的t所以,我认为你不需要任何额外的东西。

我在您的步骤中看到的缺失 - - 没有为 KNN
获得最佳K(nearest_neighbours)
的步骤 - 没有通过正则化优化物流回归参数的步骤(如果需要)

关于指标 -
(55 + 45 )/100 和 (45 + 55)/100 具有相同的精度。
你需要确定你想要什么,一个类或一个平衡指标