我正在处理 AUC 指标的二元分类问题。我对训练集和测试集做了 70% 和 30% 的随机拆分。我第一次尝试使用带有默认超参数的随机森林,在测试集上给了我 0.85 的 auc,在训练集上给了我 0.96。所以,模型过拟合。但是 0.85 的分数对我的业务来说已经足够了。我还使用相同的模型和相同的超参数进行了 5 折交叉验证,测试集结果始终在 0.84 和 0.86 之间
我的问题是:我可以相信分数 0.85 并在生产中使用这个模型吗?
我正在处理 AUC 指标的二元分类问题。我对训练集和测试集做了 70% 和 30% 的随机拆分。我第一次尝试使用带有默认超参数的随机森林,在测试集上给了我 0.85 的 auc,在训练集上给了我 0.96。所以,模型过拟合。但是 0.85 的分数对我的业务来说已经足够了。我还使用相同的模型和相同的超参数进行了 5 折交叉验证,测试集结果始终在 0.84 和 0.86 之间
我的问题是:我可以相信分数 0.85 并在生产中使用这个模型吗?
是的,如果您的 0.85 AUC 对您的用例来说足够好,那么这就是一个足够好的模型。训练集的表现表明您的模型对训练集的了解程度。这我们并不真正关心,这只是模型试图优化的内容。测试集上的表现表明了你的模型的泛化程度。这就是我们所关心的,您的模型达到 0.85 左右作为泛化的估计值。训练和测试之间的差异是常态,在这种情况下,通过添加更强的正则化可能会获得更好的性能,但如果 0.85 足够好,那就去吧!
我的第一次尝试 [...] 在测试集上给了我 0.85 的 auc,在训练集上给了我 0.96。所以,模型过拟合。
这并不完全正确。
看,(几乎)每个估计器在训练数据上的预测分数都会比在测试数据上的好。这并不意味着每个估计器都过拟合。
虽然在训练集上获得更好的分数是正常的,因为估计器是建立在它之上的,这意味着它的参数是通过它来拟合的。但是,您的估算器或多或少可以拟合您的训练数据。
让我们以您的随机森林为例。如果深度太高,您将非常适合训练数据:过度拟合。如果深度不够高,将很难推广到其他数据:你欠拟合。
0.96
在训练集和0.82
测试集上0.96
在训练集和0.89
测试集上0.96
在训练集和0.75
测试集上作为一名优秀的数据科学家,您希望您的模型能够充分拟合数据以很好地泛化,但又不至于过度拟合。为了控制模型的泛化方式,可以使用交叉验证技术。你得到的值几乎就是你用新值得到的值±与这个交叉验证相关的方差
PS:在测试数据上过于频繁地使用交叉验证会让你在某种程度上学习这些数据,因为你选择它们来最大化你的测试分数。它可能导致对未来新数据的过度拟合。