Scikit NLP SGDClassifier修改的 huber给出 100% 的置信度预测,这是错误的

问题描述

我使用 TfidfVectorizer 和 SGDClassifier 将文本分类为如下类别(体育、商业等):

text_clf = Pipeline([
      ('tfidf',TfidfVectorizer(preprocessor=preprocess_text,max_df=0.1,min_df=1,max_features=n_features,stop_words=stop_words,ngram_range=(1,3))),('clf',SGDClassifier(loss='modified_huber',penalty='l2',alpha=1e-4,random_state=random_state,max_iter=5,tol=None)),])

我选择了改进的 huber,因为该算法还能够提供预测类别的置信度,例如:Sport 70% 等。

现在的问题是,它以 100% 的置信度将某些文档分类为 X,但是如果我查看特定文档的 TF IDF 矩阵的顶部单词(权重最大的单词)并将它们与目标类别,它根本不适合。

我如何调整模型以阻止这种情况发生。

如果预测在低置信度时出错(这也会发生),这不是问题,但我不想在高置信度下发生错误

顺便说一句,n_features = 10k,所以唯一的解释可能是,虽然目标文档的顶级词不适合标记类别的顶级词,但可能有很多低分词适合,或者有些词是随机的权重拟合,然后拟合整个矩阵。

我该如何调试或微调模型以阻止这种情况发生?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)