如何识别Python中的过拟合和欠拟合

时间:2018-09-03 16:33:37

标签: python machine-learning

我有一个回归模型。我编写了该算法的代码:

将训练数据随机分为10个训练和验证数据。从以下组中选择最佳的alpha值:{0.1、1、3、10、33、100、333、1000、3333、10000、33333}。

要选择最佳的alpha超参数值,您必须执行以下操作:

•对于超参数的每个值,如上所述将训练数据随机分为10个训练和验证数据。

•对于每个超参数值,使用其10个随机分割,并找到平均训练和验证准确性。

•在图表上,绘制平均训练准确度(红色)和平均验证准确度(蓝色)w.r.t。每个超参数设置。通过确定过度拟合和欠拟合的区域对此图进行评论。

•打印出最佳的alpha超参数值。

2-评估测试数据的预测性能并报告以下内容: •最终模型中非零要素的总数。 •混淆矩阵 •每个班级的准确性,召回率和准确性。

最后,讨论是否有使用适当推理的不足或过度拟合的迹象

我写这段代码:

print('Accuracy of logistic regression classifier on test set: {:.2f}'.format(Newclassifier.score(X_test, y_test)))
from sklearn.metrics import classification_report
print(classification_report(y_test, y_pred))        

我的问题是: 1-为什么每次迭代的精度都会降低? 2-我的模特身材过大还是不足? 3-我的模型正常吗?

1 个答案:

答案 0 :(得分:2)

没有正式/绝对的度量标准来确定您是否不合适,是否都过拟合。在实践中

  • 欠拟合:您的建模太简单了。训练和验证集之间不会有太大区别,但是它们的准确性会很低
  • 过度拟合:您的模型过于复杂。它不学习基本模式,而是记住您的训练集。因此,训练误差将减少,但是验证误差将在某个点之后开始增加

在这种情况下,您的训练和测试错误似乎是并行的,因此您似乎没有过拟合的问题。您的模型可能不适合,因此您可以尝试使用更复杂的模型。但是,这可能是此算法在此特定训练集上能获得的效果。在大多数实际问题中,没有算法可以使误差达到零。

关于您的错误增加的原因,我不知道这种特定算法的工作原理,但是由于它似乎依赖于随机方法,因此似乎是合理的行为。它会上下波动,但不会稳定增加,因此似乎没有问题。