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

问题描述 投票:-1回答:1

我已经使用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将其用于灾难类。

任何想法或建议我如何微调这个模型?

python machine-learning scikit-learn neural-network text-classification
1个回答
0
投票

据我所知,当数据集有偏差时会发生这种情况。我相信Garbage in-Garbage out的概念。

您可以将您的列车测试数据可视化。我相信这会有偏见。

话虽如此,假设您的用例是通过推文进行灾难预测,可以理解的是,如果您随机发送一组推文,那么千分之一甚至不会发生灾难。

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

思考?

谢谢阿伦

© www.soinside.com 2019 - 2024. All rights reserved.