提高文本分类的朴素贝叶斯精度

数据挖掘 机器学习 分类 准确性 朴素贝叶斯分类器
2022-03-01 07:17:53

我正在对网站类别执行文档(文本)分类,并使用网站内容(标记化、词干化和小写)。

我的问题是我有一个过度代表的类别,它的数据点比其他任何类别都多(我的数据点中大约 70% 或 4000~ 属于他的一个类别,而大约 20 个其他类别占最后 30%,有些其中有少于 50 个数据点)。

我的第一个问题:

在某些标签的数据稀疏的情况下,我能做些什么来提高分类器的准确性?我是否应该简单地丢弃被过度代表的类别中的一定比例的数据点?我应该在 tf-idf 中使用高斯朴素贝叶斯以外的东西吗?

我的第二个问题:

执行分类后,我将 tfidf 向量以及分类器保存到磁盘。但是,当我对相同的数据重新运行分类时,有时会得到与最初得到的结果不同的结果(例如,如果以前的数据点被分类为“娱乐”,它现在可能会收到“新闻”)。这是否表明我的实施中有错误,还是预期的?

2个回答

关于你的第一个问题...

您是否预计大多数类别在现实世界数据中的表现与在您的训练数据中一样多?如果是这样,也许您可​​以执行两步分类:

  1. 训练一个二元分类器(在所有训练数据上)以预测多数类中的成员资格(是/否)。
  2. 训练一个多类分类器(在其余的训练数据上)以预测其余少数类的成员资格。

您在此处描述的正确术语是“类不平衡”或“类不平衡问题”。如果您可以将其包含在标题中以获得更有意义的标题,那就太好了。

关于你的第一个问题:

您是否绘制了结果分类的混淆矩阵?准确率不令人满意的原因真的是实例被错误地归类为最常见的类吗?

鉴于您的应用程序上下文,您似乎可以使用一定程度的过采样。这可以应用到何种程度应取决于每个代表性不足的班级的频率。

如果代表性不足的类实例的值分布存在相当大的变化,那么人们可能会争辩说,在应用过采样时应该考虑这一点。

此外,可以考虑查理在他的回答中建议的方法,因为代表性不足的类的实例将形成一个适合分类的数据集。

编辑:我还没有使用朴素贝叶斯进行文本分类,所以我不太确定你的属性到底是什么样子。您是否只使用在 tfidf 中得分最高的术语的频率?更一般地说,您是否具有离散或连续有价值的属性?

如果是后者,您应该考虑使用某种离散化。

关于你的第二个问题:

您是否以任何方式拆分数据集?通常,假设分类器已经在相同的数据上进行了训练,相同实例的结果也应该是相同的。