这个分类模型是不是过拟合?

Posted

技术标签:

【中文标题】这个分类模型是不是过拟合?【英文标题】:Is this classification model overfitting?这个分类模型是否过拟合? 【发布时间】:2020-02-01 21:51:45 【问题描述】:

我正在执行 url 分类(网络钓鱼 - 非网络钓鱼),并为我的模型(梯度提升)绘制了学习曲线(训练与交叉验证分数)。

我的观点

这两条曲线似乎收敛并且差异不显着。 Tt 是正常的,训练集的准确度略高)。 (图一)

问题

我在机器学习方面的经验有限,因此我想征求您的意见。我处理问题的方式正确吗?这个模型好还是过拟合?

注意:类是平衡的,特征选择得很好

相关代码

from yellowbrick.model_selection import LearningCurve

def plot_learning_curves(Χ, y, model):

       # Create the learning curve visualizer
       cv = StratifiedKFold(n_splits=5)
       sizes = np.linspace(0.1, 1.0, 8)
       visualizer = LearningCurve(model, cv=cv, train_sizes=sizes, n_jobs=4)
       visualizer.fit(Χ, y)  # Fit the data to the visualizer
       visualizer.poof()

【问题讨论】:

这是关于偏差与方差权衡的主题,请查看它以获取更多信息。此外,您可以通过增加示例来增加偏差而不是方差(过度拟合),这并不是过度拟合。 “训练实例”是您用于训练的点数吗? @FlorianMutel 是的。 作为对您现在deleted question 的最后评论的回应,请尝试Data Scince SE,但我建议您尝试使您的问题更加集中。 @desertnaut 非常感谢您的建议。非常感谢。 【参考方案1】:

首先,您的图表中有 8 个不同的模型。

很难判断其中一个是否过拟合,因为可以使用“时期与性能(训练/有效)”图检测过拟合(在您的情况下将有 8 个)。

过拟合是指,经过一定数量的 epoch 后,随着 epoch 数量的增加,训练准确率上升,而验证准确率下降。例如,当关于问题复杂性的数据点太少时,可能会出现这种情况,因此您的模型使用了虚假相关性。

通过您的图表,我们可以说您的问题的复杂性似乎需要“高”数量或训练实例,因为您的验证性能会随着您添加更多训练实例而不断提高。 50000 也可能过度拟合,我们没有看到,因为您使用了提前停止!

希望对你有帮助

【讨论】:

您能否进一步解释一下为什么我的学习曲线中有 8 个模型?我只看到一个,随着数据点的增加,图表会显示其准确性。 我在主要问题中添加了代码,这可能会有所帮助。 图表的每个点都是一个模型,该模型使用 N 个数据点进行训练,参数由您的“模型”对象定义 感谢您的宝贵帮助。你知道如何在 python sklearn 上打印“epoch vs performance (train / valid)”图吗? 无法在 sklearn API 中快速找到某些内容,但它存储在您的估算器属性中。你可以看看这个问题***.com/questions/46912557/…即使它是一个不同的估计器API应该是相似的。

以上是关于这个分类模型是不是过拟合?的主要内容,如果未能解决你的问题,请参考以下文章

ML——神经网络

神经网络DNN ——正则化

Keras:过拟合模型?

AdaBoostClassifier参数

如何解决基于 NLP 的 CNN 模型中的过度拟合问题,以使用词嵌入进行多类文本分类?

机器学习模型评估