我正在使用sklearn实现一个逻辑回归模型,用于Kaggle的文本分类竞赛。
当我使用unigram时,有23,617个功能。最好的mean_test_score
交叉验证搜索(sklearn的GridSearchCV
)给了我类似于我从Kaggle获得的分数,使用最好的模型。
如果我使用bigram,有1,046,524个功能。与unigram相比,GridSearchCV
给了我一个更好的mean_test_score
,但是使用这个新模型我在Kaggle得分低得多。
我想原因可能是过度拟合,因为我的功能太多了。我试图将GridSearchCV
设置为5倍甚至2倍,但分数仍然不一致。
它是否真的表明我的第二个模型过度拟合,即使在验证阶段?如果是这样,我如何使用sklearn调整逻辑模型的正则化项?任何建议都表示赞赏!
答案 0 :(得分:1)
假设您正在使用sklearn。您可以尝试使用调整参数max_df
,min_df
和max_features
。将这些投入GridSearch可能需要很长时间,但您可能会得到一些有趣的结果。我知道这些功能是在sklearn.feature_extraction.text.TfidfVectorizer中实现的,但我相信他们也会在其他地方使用它们。基本上这个想法是,包括太多的克可能导致过度拟合,同样的事情是具有太多克具有低或高文档频率。