0

我一直在比较来自 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”值如何影响岭回归模型?我是初学者,所以请尽可能简单地解释任何事情。

谢谢你。

4

2 回答 2

0

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

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

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

于 2019-05-15T16:09:19.807 回答
0

也许您可以为您添加一个单独的验证集,model.fit或者您在 fit 方法的 keras 文档中validation_split设置参数,我不知道 sklearn 套件中是否有类似的东西。

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

您还可以使用许多指标来评估您的模型。我会推荐这本书 Oreilly Deep Learning Page 39。有一个很好的解释。

或者看看这里这里

或者看这里第 5.2 章

随意问其他问题。

于 2019-04-25T07:30:59.803 回答