大数据的SVM和NN模型过度拟合

时间:2019-02-22 09:50:20

标签: python machine-learning scikit-learn neural-network text-classification

我已经使用sklearn训练了SVM和NN模型两个课程。一类具有24000条推文,另一类具有32000条推文。

当我进行验证时,它会显示如下

对于-

text_clf = Pipeline([('vect', CountVectorizer(stop_words='english')), ('tfidf',TfidfTransformer(use_idf=True)),('clf',MLPClassifier(activation="relu", solver='adam', alpha=0.001, hidden_layer_sizes=(5, 2), random_state=1)),])

              precision    recall  f1-score   support

    disaster       1.00      1.00      1.00     12862
 nondisaster       1.00      1.00      1.00      9543

   micro avg       1.00      1.00      1.00     22405
   macro avg       1.00      1.00      1.00     22405
weighted avg       1.00      1.00      1.00     22405

对于

text_clf = Pipeline([('vect', CountVectorizer(stop_words='english')), ('tfidf',TfidfTransformer(use_idf=True)),('clf',SGDClassifier(loss='hinge', penalty='l2', alpha=1e-3, random_state=42, verbose=1)),])
            text_clf.fit(X_train, y_train)

              precision    recall  f1-score   support

    disaster       1.00      1.00      1.00      6360
 nondisaster       1.00      1.00      1.00      4842

   micro avg       1.00      1.00      1.00     11202
   macro avg       1.00      1.00      1.00     11202
weighted avg       1.00      1.00      1.00     11202

当我在NN模型中将alpha的值从0.001更改为0.00001

              precision    recall  f1-score   support

    disaster       1.00      0.99      0.99     12739
 nondisaster       0.98      1.00      0.99      9666

   micro avg       0.99      0.99      0.99     22405
   macro avg       0.99      0.99      0.99     22405
weighted avg       0.99      0.99      0.99     22405

当我测试很少的记录时,它总是偏向一类。例如,SVM正在预测非灾难的每个输入,而NN将其输入到灾难类别。

任何想法或建议如何微调此模型?

1 个答案:

答案 0 :(得分:0)

据我所知,这是在数据集有偏差时发生的。我相信垃圾回收的概念-垃圾回收。

可视化火车测试数据对您来说是个好习惯。我相信这会有偏见。

话虽如此,假设您的用例是根据推文进行的灾难预测,可以理解的是,如果您随机抽取一组推文,那么即使千分之一都不会造成灾难。

因此,明智的做法是将查询范围缩小到精炼的主题和用户,以便获得足够好的数据集。

有想法吗?

谢谢 阿伦