我正在使用sklearn logistic回归函数对文本执行二进制分类任务。
我使用三种不同的方法来完成任务:单词袋,TF-IDF,Doc2vec。
输入是:CountVectorizer
代表单词袋,TfidfVectorizer
代表TF-IDF,fixed-length numeric document embedding
代表Doc2vec。
我发现我使用的正则化术语很奇怪。
C: float, default=1.0
Inverse of regularization strength; must be a positive float. Like in support vector machines, smaller values specify stronger regularization.
我使用1、5、10、30作为C值来进行每种方法的实验。
对于Bag-Of-Words
,随着C值的增加,测试集上模型的性能会降低,这就是我的期望。
但是,对于TF-IDF
和Doc2vec
方法,情况并非如此,随着C值的增加,测试集上模型的性能不会降低。
例如,对于TF-IDF
方法,结果如下
C = 1
accuracy: 0.9160459183673471
f1: 0.9146393123068315
C = 5
accuracy: 0.924234693877551
f1: 0.9231332586487735
C = 10
accuracy: 0.9234948979591836
f1: 0.9224169897397203
C = 30
accuracy: 0.921045918367347
f1: 0.919948362201867
为什么会这样?
简而言之,为什么更强的正则化功能不能提高TF-IDF和Doc2vec的测试性能,却可以提高Bag-Of-Words的性能?