2016-01-09 28 views
2

我正在運行NaiveBayes模型進行文本分析,其中包含大約2000多個變量和30000多個觀察值。這是非常稀疏的數據,但沒有任何零或不變的列。使用klaR的錯誤NaiveBayes

model <- NaiveBayes(nation~., data=data_train) 

我越來越:

"Zero variances for at least one class in variables: " 

和50個變量的列表。 該錯誤類似於下面的錯誤,但是我的類變量是一個因素。 https://stats.stackexchange.com/questions/35694/naive-bayes-fails-with-a-perfect-predictor

我也在相同的數據上運行e1071的樸素貝葉斯。它運行,但準確性低得可笑(7%)。我用SVM得到了85%。 有什麼建議嗎? 謝謝。

回答

2

據我的理解,你必須有一些變量對於你的數據中的某個類來說都是零。它不是整個列的那個變量是零,但是這個向量data_train[data_train$Class=="ClassA",](假設你的一個類被稱爲「ClassA」)是全零。

在這種情況下,klaR會給您一個錯誤,告知您這種情況。但e1071不會,並且它會在A類中爲該變量生成條件概率0。因此,當您嘗試計算未知樣本時,會導致「錯誤」的最終概率。

但是SVM不使用這種計算測試樣本概率的策略。因此零方差幾乎不影響其精度。