Tensorflow CNN(Conv1D)文本分类模型中减少误报的方法
我在Tensorflow CNN(Conv1D)文本分类模型中减少误报的方法,tensorflow,machine-learning,nlp,keras,convolution,Tensorflow,Machine Learning,Nlp,Keras,Convolution,我在keras+tensorflow-主要使用Conv1D创建了一个基于字符的CNN文本分类模型,主要基于: 该模型在测试数据集上的精度达到80%以上,表现非常好。但是我有假阳性的问题。其中一个原因可能是最后一层是具有softmax激活功能的density层 为了了解模型的性能,我使用31个类1021个样本的数据集对模型进行训练,在25%的测试数据集上,性能约为85% 但是,如果包含假阴性,则性能相当差(我没有运行另一个带有假阴性的测试数据,因为很明显,仅通过手工测试即可)-每个输入都有相应的
keras
+tensorflow
-主要使用Conv1D创建了一个基于字符的CNN文本分类模型,主要基于:
该模型在测试数据集上的精度达到80%以上,表现非常好。但是我有假阳性的问题。其中一个原因可能是最后一层是具有softmax
激活功能的density
层
为了了解模型的性能,我使用31个类1021个样本的数据集对模型进行训练,在25%的测试数据集上,性能约为85%
但是,如果包含假阴性,则性能相当差(我没有运行另一个带有假阴性的测试数据,因为很明显,仅通过手工测试即可)-每个输入都有相应的预测。例如,一个句子acasklncasdjsandjas
可能导致班级ask\u提升
在这种情况下,有没有处理假阳性的最佳实践?
我的想法是:
noise
类,其中示例只是一组完全随机的文本。但是,这似乎没有帮助,因为噪声不包含任何模式,因此很难训练模型这听起来像是数据不平衡的问题,两个类具有完全不同的支持(每个类中的实例数量)。在层次分类任务中,这个问题尤其重要,在这个任务中,一些层次较深的类往往比其他类拥有更多的实例 无论如何,让我们把这个问题简单地说成是二进制分类,将支持度更高的类命名为class-A,将支持度更低的类命名为class-B。一般来说,有两种流行的方法可以避免这个问题
希望这有帮助P你能发布混淆矩阵或提供更多关于类别数量、类别平衡以及哪些类别存在误报(如果不是全部)的详细信息吗?@Ahmed我根据要求在问题中添加了更多细节。在进行分层数据拆分之前,我已经进行了过度抽样,因此数据已经很好地平衡了。