如何改进朴素贝叶斯?

数据挖掘 分类 朴素贝叶斯分类器 ngram
2022-02-23 03:06:42

我正在解决一个解决这个问题的问题“导致高分或低分的操作是什么?”

我有以下由 text 和 score 组成的数据,我想从导致高/低分的文本中得出单词或动作

我有大量数据,文本长度可以是一个段落,示例数据如下

+----------------------+-------+
|         Text         | Score |
+----------------------+-------+
| Support Team Goal    |    90 |
| Generate Lead        |    80 |
| Contact 30 customers |    30 |
| Support Team Goal    |    30 |
+----------------------+-------+

方法遵循:我遵循朴素贝叶斯方法。

  1. 首先,我将我的数据分为高(分数(75 及以上))和低(分数低于 75)
  2. 我也将 High 转换为 Term Document Matrix 和 Low
  3. 我发现单词只出现在低分并判断它们导致低分(如果频率大于 7 则包括单词让我们说)
  4. 我发现单词只出现在 high 中并判断它们会导致高分(如果频率大于 7 则包括单词让我们说 high)
  5. 我发现了常见单词的概率,对于出现在高或低的单词,我计算了单词出现在低/高的概率(如果概率大于 75%,则包括单词)

注意:我使用二元组。不确定这是否是分析我的问题的正确方法,还是有更好的技术。请指教

1个回答

在不查看实际数据的情况下,我们真正能做的只是猜测并提出最佳实践。以下是您可以追求的一些指示 -

  • 收集更多数据- 如果可以做到,那就没有比这更好的了。
  • 提高数据质量——算法将永远和数据一样好尝试广泛的清洁方法,例如 -
  • 小写(基本),因此您的所有数据都是标准化的
  • Stemming / Lemmatization - 这些技术将单词简化为其根形式
  • 尝试词性标注 (POS)并保留重要的词性(如名词)并查看它们的整体重要性
  • 去除停用词——就像你尝试做词频一样,有一些流行的词集,比如 the 词并没有多大帮助。他们被过滤掉了
  • 纠正拼写错误- 如果您预计会有拼写错误,纠正它们可能是个好主意
  • 转换非结构化数据- 我看到您使用了二元组。也可以尝试使用一元和三元,或者组合使用,运行你的算法,看看哪一个效果更好。尝试CountVectorizerTfidfVectorizer以及其他技术,如词嵌入
  • 算法- 最后关注算法本身。对于朴素贝叶斯,关注MultinomialNB尝试RandomForestClassifier和其他集成家族算法。尝试使用keras的深度学习技术。根据验证结果微调超参数

当然,还有其他最佳实践,例如将数据拆分为traintestcross validation集合。评估正确的指标,例如accuracyprecisionrecallconfusion matrix

希望这可以帮助!