package を使用Quanteda
して dfm および dfm-tfidf オブジェクトを作成しました。まばらな機能を削除し、トリムされた dfm を作成する 2 つの方法に従いました。1 つは、関数sparsity
に引数を直接適用することでした。dfm()
2 つ目は、 を使用してスパース性を減らすことでした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 のカッパは 1 です。アプローチ 2 では、異なる (tfidf と非 tfidf) 予測が得られましたが、予測の精度は低くなりました。私は困惑しています。正しいアプローチはどれですか?