我正在使用TFIDF和朴素贝叶斯建立情感分类模型。但是该模型不断对第二类进行错误分类。尽管我将TFIDf与其他模型(例如SVM和随机森林)一起使用,但效果很好。下面,我将描述我的数据和使用的步骤:我有2000条评论(1000条肯定,1000条否定)。我做了以下步骤: 1)数据预处理
cleanTextData = erasePunctuation(textData);
cleanTextData = lower(cleanTextData);
words = stopWords;
cleanDocuments = tokenizedDocument(cleanTextData);
cleanDocuments = removeWords(cleanDocuments,words);
cleanDocuments = normalizeWords(cleanDocuments);
cleanDocuments(1:10)
%% Bag of Words
cleanBag = bagOfWords(cleanDocuments)
cleanBag = removeInfrequentWords(cleanBag,2) % remove words with frequency less than or equal 2
%% remove emplty documents caused by preprocessing
[cleanBag,idx] = removeEmptyDocuments(cleanBag);
然后我使用了TFIDF
predictors = tfidf(cleanBag,'Normalized',true,'TFWeight','log','IDFWeight','smooth');
然后将结果传递给我的朴素贝叶斯模型
t = templateNaiveBayes('DistributionNames','mvmn');
CVMdl = fitcecoc(predictors,response,'KFold',10,'Learners',t,'FitPosterior',true,'Coding','onevsone','ResponseName','response');
但是混淆矩阵将给出以下结果:
C1 C2
____ __
990 10
1000 0
似乎几乎将所有2000个观测值仅分类为一个类。请注意,我尝试更改K折叠值,还尝试了不同的分布类型,例如多元多项式分布,多项式分布,核和正态(高斯)分布,还尝试对数据进行规范化。但是我所有的尝试都没有对模型的增强产生影响。 使用没有TFIDF的朴素贝叶斯将给出0.7536 F值,这在某种程度上被认为是不错的。 我担心的是,我是否以正确的方式将TF-IDF与朴素的贝叶斯配合使用。因为对第二类的所有观察结果进行了错误分类。