我最近使用 Bag-of-Words 分类器制作了一个包含 96% 术语的文档矩阵。然后我使用决策树对输入的词袋进行模型训练,以预测句子是否重要。该模型在测试数据集上表现得非常好,但是当我使用样本外的数据集时,它无法预测。相反,它给出了错误。
这是我在 R 中制作的模型
library('caTools')
library('tm')
library('rpart')
library(rpart.plot)
library(ROCR)
data= read.csv('comments.csv', stringsAsFactors = FALSE)
corpus = Corpus(VectorSource(data$Word))
# Pre-process data
corpus <- tm_map(corpus, tolower)
corpus <- tm_map(corpus, stemDocument)
# Create matrix
dtm = DocumentTermMatrix(corpus)
# Remove sparse terms
#dtm = removeSparseTerms(dtm, 0.96)
# Create data frame
labeledTerms = as.data.frame(as.matrix(dtm))
# Add in the outcome variable
labeledTerms$IsImp = data$IsImp
#Splitting into train and test data using caTools
set.seed(144)
spl = sample.split(labeledTerms$IsImp , 0.60)
train = subset(labeledTerms, spl == TRUE)
test = subset(labeledTerms, spl == FALSE)
#Build CART Model
CART = rpart(IsImp ~., data=train, method="class")
这在测试数据集上工作得很好,准确率约为 83%。但是,当我使用此购物车模型对样本外的数据集进行预测时,它给了我错误。
head(train)
terms A B C D E F..............(n terms)
Freqs 0 1 2 1 3 0..............(n terms)
head(test)
terms A B C D E F..............(n terms)
Freqs 0 0 1 1 1 0..............(n terms)
data_random = read.csv('comments_random.csv', stringsAsFactors = FALSE)
head(data_random)
terms A B D E F H..............(n terms)
Freqs 0 0 1 1 1 0..............(n terms)
我得到的错误是 data_random 中的“找不到 C”。我不知道我应该怎么做才能完成这项工作。拉普拉斯平滑在这里是一种方式吗?