【问题标题】:Logistic regression overfits even using cross validation in sklearn?即使在 sklearn 中使用交叉验证,逻辑回归也会过拟合?
【发布时间】:2017-09-13 10:49:09
【问题描述】:

我正在使用 sklearn 实现逻辑回归模型,用于 Kaggle 上的文本分类比赛。

  1. 当我使用 unigram 时,有 23,617 个特征。最好的mean_test_score 交叉验证搜索(sklearn 的GridSearchCV)给我的分数与我从 Kaggle 得到的分数相似,使用的是最好的模型。

  2. 如果我使用二元组,则有 1,046,524 个特征。与 unigram 相比,GridSearchCV 给了我更好的mean_test_score,但使用这个新模型,我在 Kaggle 上的得分要低得多。

我猜原因可能是过度拟合,因为我的特征太多了。我曾尝试将GridSearchCV 设置为5 倍,甚至2 倍,但分数仍然不一致。

这是否真的表明我的第二个模型过度拟合,即使在验证阶段也是如此?如果是这样,我如何使用 sklearn 调整我的逻辑模型的正则化项?任何建议表示赞赏!

【问题讨论】:

  • 谁反对,请添加您的评论。这样我以后可以提出更好的问题。

标签: python-3.x machine-learning scikit-learn nlp logistic-regression


【解决方案1】:

假设您使用的是 sklearn。您可以尝试使用调整参数max_dfmin_dfmax_features。将这些放入 GridSearch 可能需要很长时间,但您可能会得到一些有趣的结果。我知道这些功能是在sklearn.feature_extraction.text.TfidfVectorizer 中实现的,但我相信他们也会在其他地方使用它们。本质上,这个想法是包含太多的克数会导致过度拟合,这与具有太多克数的文档频率低或高的情况相同。

【讨论】:

  • 您知道为什么mean_test_score 在交叉验证搜索中非常出色吗?那是因为在进入验证子集之前发生过拟合吗?
猜你喜欢
  • 2017-07-07
  • 2017-01-02
  • 2017-10-17
  • 1970-01-01
  • 1970-01-01
  • 2019-04-20
  • 2016-11-20
  • 2017-11-24
  • 2017-01-25
相关资源
最近更新 更多