【问题标题】:How does one identify if the ML model is overfitting the dataset or not?如何识别 ML 模型是否过度拟合数据集?
【发布时间】:2019-09-14 13:28:01
【问题描述】:

我一直在比较来自 sklearn 的不同回归模型,这样做时我对我得到的模型的得分值感到困惑。 在下面的代码中,您可以看到我同时使用了线性回归和岭回归,但是训练和测试数据集的得分值差异很大。

using Linear Regression

from sklearn.linear_model import LinearRegression as lr
model = lr()
model.fit(X_train, y_train)
model.predict(X_test)
print("LINEAR REGRESSION")
print("Training Score", end = "\t")
print(model.score(X_train, y_train))
print("Test Score", end = "\t")
print(model.score(X_test, y_test))

------------------------------------------------------------
O/P
LINEAR REGRESSION
Training Score  0.7147120015665793
Test Score  0.4242120003778227


Using Ridge Regression

from sklearn.linear_model import Ridge as r
model = r(alpha = 20).fit(X_train, y_train)
model.predict(X_test)
print("RIDGE REGRESSION")
print("Training Score", end = "\t")
print(model.score(X_train, y_train))
print("Test Score", end = "\t")
print(model.score(X_test, y_test))

-----------------------------------------------------------
O/P
RIDGE REGRESSION
Training Score  0.4991610348613835
Test Score  0.32642156452579363

我的问题是,训练数据集和测试数据集的得分值之间的较小差异是否意味着我的模型是通用的,并且对于测试和训练数据都同样适合(不是过度拟合),还是意味着其他什么。 如果它确实意味着其他东西,请解释一下。

“alpha”值如何影响岭回归模型? 我是初学者,所以请尽可能简单地解释一下。

谢谢。

【问题讨论】:

    标签: python machine-learning machine-learning-model


    【解决方案1】:

    也许你可以给你添加一个单独的验证集model.fit 或者你像keras docs of the fit method 那样设置validation_split 参数,我不知道sklearn kit 中是否有类似的东西。

    但一般来说,验证集或测试集的分数与训练集的分数应该几乎相等,否则模型往往会过拟合。

    您还可以使用一系列指标来评估您的模型。我会推荐book Oreilly Deep Learning Page 39。有一个很好的解释。

    或者看看herehere

    或者看here chapter 5.2

    请随时提出其他问题。

    【讨论】:

      【解决方案2】:

      扩展 Max 的答案,当训练模型对训练数据的建模过于出色时,过度拟合是一种建模错误。现在,这通常发生在模型足够复杂(高 VC 维度)以至于它学习到非常复杂的细节和噪声时会对最终性能产生负面影响。 VC DimensionCaltech Lecture on VC Overfitting观察过拟合的一个简单方法是查看训练和测试结果之间的差异。

      回到您的示例,线性回归的测试数据和训练数据之间的分数差异为 0.290。而岭回归的差异为 0.179。仅从这个单一的实验中,很难判断一个模型是否过拟合,因为通常在实践中总会存在一些差异。但是在这里,我们可以说岭回归倾向于减少该数据集的过度拟合。

      现在在决定选择哪个模型时,我们还必须考虑除了过度拟合本身之外的其他因素。在这种情况下,与岭回归相比,线性回归在测试数据集上的性能往往高出 10%,因此您也必须考虑到这一点。也许下一步应该使用不同的验证技术和微调不同的超参数进行进一步的实验。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-08-24
        • 1970-01-01
        • 2020-11-12
        • 2021-11-03
        • 2021-03-02
        • 1970-01-01
        • 1970-01-01
        • 2020-05-11
        相关资源
        最近更新 更多