如何解决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 举报,一经查实,本站将立刻删除。