使用klaR NaiveBayes时出错

时间:2016-01-09 03:07:29

标签: r text-mining naivebayes

我正在使用NaiveBayes模型进行文本分析,其中包含大约2000多个变量和超过30000个观测值。它实际上是稀疏数据,但没有任何零或常数列。

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的naiveBayes。它运行,但准确性非常低(7%)。我用SVM得到85%。 有什么建议吗? 感谢。

1 个答案:

答案 0 :(得分:2)

据我所知,对于数据中的某个类,必须有一些全部为零的变量。这个变量的整个列不是零,但是这个向量data_train[data_train$Class=="ClassA",](假设你的一个类称为“ClassA”)是全零。

在这种情况下,klaR会向您发出错误警告您这种情况。但是e1071没有,并且它会在A类中为该变量生成条件概率为0。因此,当您尝试计算未知样本时,会导致“错误”的最终概率。

然而SVM不使用这种计算测试样本概率的策略。因此,零方差对其准确性几乎没有影响。