Naive Bayes Classifierをドキュメント用語行列と連携させるのは非常に厄介な問題です。私は非常に単純な間違いをしていると確信していますが、それが何であるか把握することはできません。私のデータはアカウントスプレッドシートからのものです。私はどのカテゴリ(テキスト形式:主に部門名や予算名)が慈善団体に費やす可能性が高く、民間企業に費やすのはどれだけ(または唯一の)ものなのかを尋ねられました。彼らはNaive Bayes分類器を使ってこれを行うことを提案しました。私はモデルを訓練するために何千ものデータ行とモデルをテストするために数十万行を持っています。私は文字列を準備し、スペースをアンダースコアとands/&の+に置き換えて、それぞれのカテゴリを1つの用語として扱いました。したがって、 'アルコールと薬物中毒'は、アルコール+薬物_addictionになります。Naive Bayesのドキュメント用語行列classfier:予期せぬ結果R
いくつかの例行:
"environment+housing strategy+commissioning third_party_payments supporting_ppl_block_gross_chargeable" -> This row went to a charity
"west_north_west customer+tenancy premises h.r.a._special_maintenance" -> This row went to a private company.
テンプレートとしてthis exampleを使用して、私は、両方のトレーニングとテストデータのために(TMを使用して)私の文書の用語行列を思い付くするには、次の関数を書きました。
library(tm)
library(e1071)
getMatrix <- function(chrVect){
testsource <- VectorSource(chrVect)
testcorpus <- Corpus(testsource)
testcorpus <- tm_map(testcorpus,stripWhitespace)
testcorpus <- tm_map(testcorpus, removeWords,stopwords("english"))
testmatrix <- t(TermDocumentMatrix(testcorpus))
}
trainmatrix <- getMatrix(traindata$cats)
testmatrix <- getMatrix(testdata$cats)
これまでのところ、とても良いです。問題は、a)Naive Bayesモデルを適用し、b)そのモデルから予測しようとするときです。 klarパッケージを使用する - 多くの用語には1つのカテゴリのインスタンスがゼロであり、laplace用語での再生はこれを修正していないようだから、確率エラーはゼロになります。一つ一つのアイテムが、彼らはほぼ同じであるべきにもかかわらず、同じカテゴリを予測...
model <- naiveBayes(as.matrix(trainmatrix),as.factor(traindata$Code))
rs<- predict(model, as.matrix(testdata$cats))
:e1071中を使用して、モデルが働いていたが、その後、私は使用してモデルをテストしたとき。モデル内の何かが明らかに機能していません。モデル$表の用語のいくつかを見ると、多くの人がプライベートの価値が高く、慈善団体の価値が高いことが分かります。コードとしてas.factorを使用しました。
output:
rs 1 2
1 0 0
2 19 17
何が問題になるのでしょうか? dtmの行列はnaivebayesとうまく連動しませんか?私はデータを準備する際に一歩踏み出したことはありませんか?私は完全にアイデアがありません。これがすべて晴れたことを願っています。そうでない場合は明確にしてください。どんな提案も大歓迎です。
を私は多項単純ベイズ分類器と同じ問題を抱えています。一部のデータは正しく割り当てられますが、大部分は1つのクラスで終わります。間違って入力されたクラスは、入力データのサイズに応じて切り替わります。私も[この](http://stackoverflow.com/questions/17904190/why-does-naivebayes-return-all-nas-for-multiclass-classification-in-r)の問題を避けるためにデータを繰り返してみましたが、大部分はまだ1つのクラスで終わる – christopherlovell