1

我使用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)但不太准确的预测。我很困惑。哪一个是正确的方法?

4

0 回答 0