自然NPM包中的BayesClassifier和LogisticRegressionClassifier之间的区别

时间:2016-05-04 20:45:30

标签: nlp logistic-regression naivebayes

我正在使用Natural NPM package进行一些相当简单的文本分析。当我使用LogisticRegressionClassifier和BayesClassifier处理相同的样本文本(600-2000字的文章)时,我是如何找到结果之间的巨大差距。

BayesClassifier结果:

mlb 
// classifier.getClassifications(data)
[ { label: 'mlb', value: 5.056332563372173e-139 },
  { label: 'nba', value: 5.589251687911356e-164 },
  { label: 'nhl', value: 1.2887446397232257e-165 },
  { label: 'nfl', value: 1.4562872037319007e-167 } ]
mlb // result of classifier.classify(data)

LogisticRegressionClassifier结果:

mlb 
//classifier.getClassifications(data)
[ { label: 'mlb', value: 0.9984418828983803 },
  { label: 'nhl', value: 0.008472129523116049 },
  { label: 'nfl', value: 0.0005530225293869185 },
  { label: 'nba', value: 9.776621359081668e-18 } ]
mlb // result of classifier.classify(data)

显然,LogisticRegressionClassifier给了我更好的结果,但处理每篇文章需要更长的时间。在某些情况下几分钟。我为每个类别使用了50种手工选择的文章。

我的问题是,这两种处理方法之间的根本区别是什么?有一种方法可以更好地为BayesClassifier准备我的样本(看起来更快),即。在处理文章之前阻止文章是否有益?还有其他任何提示或技巧吗?

另外,我知道有一堆试验和错误,但根据经验,有很多文章用于训练算法?我已经尝试了每个10-400的范围,并且无论样本大小如何,似乎都得到相对类似的结果。

1 个答案:

答案 0 :(得分:0)

您可能误解了getClassifications函数的输出。对于贝叶斯分类器,这些数字代表给定标签的文本的概率。对于逻辑回归,数字表示给定文本的每个类的概率。在这两种情况下,您应该预测具有最高概率的类。这就是这些分类器的工作方式。

根据您在此处显示的内容,哪种方法可以更好地处理您的数据并不明显。