我使用Quanteda
包来创建 dfm 和 dfm-tfidf 对象。我遵循了两种方法来删除稀疏特征并创建修剪的 dfms。一种是直接sparsity
在函数上应用参数dfm()
。第二个是通过使用dfm_trim()
.
方法 1:我首先从训练和测试令牌创建了 dfm 和 dfm_tfidf 对象。然后我应用 dfm_tfidf 如下。
dfmat_train <- dfm(traintokens)
dfmat_train_tfidf<- dfm_tfidf(dfmat_train)
dfmat_test <- dfm(traintokens)
dfmat_test_tfidf <- dfm(dfmat_test)
然后,我只是用来dfm_trim
删除稀疏特征。
dfmat_train_trimmed <- dfm_trim(dfmat_train, sparsity=0.98)
dfmat_train_trimmed _tfidf <- dfm_trim(dfmat_train_tfidf, sparsity=0.98)
dfmat_test_trimmed <- dfm_trim(dfmat_test, sparsity=0.98)
dfmat_test_trimmed_tfidf <- dfm_trim(dfmat_test_tfidf, sparsity=0.98)
方法 2 更短。tfdif 权重在修剪后完成。
dfmat_train <- dfm(traintokens, sparsity = 0.98)
dfmat_train_tfidf <- dfm_tfidf(dfmat_train)
dfmat_test <- dfm_tfidf(testtokens, sparsity = 0.98)
dfmat_test_tfidf <- dfm_tfidf(dfmat_test )
在使用上述两种方法训练模型并预测测试数据集后,方法 1 导致 tfidf 和非 tfidf 测试数据的预测性能指标相同。Cohen 的 Kappa 为 1。方法 2 导致不同(tfidf 和非 tfidf)但不太准确的预测。我很困惑。哪一个是正确的方法?