混合文本数据和数值数据(神经网络)

数据挖掘 神经网络 喀拉斯 tfidf
2022-02-20 02:56:55

我有 2 个“性质”的数据(如果我计算图像数据,则更实际):

  • 文本(我用特殊标记化和 TfIdfVectorizer 处理)~ 5000 个特征
  • 非文本(如句子长度、我句子中的字符数等):只有数字特征
  • 图像数据(文档中的图像中存在特殊标签):非常罕见,因此此处不需要

有了所有这些数据,我应该能够区分垃圾邮件和非垃圾邮件(这里有不同的语言)。

现在我的模型确实有很好的性能,但我正在考虑一种方法来更“正确地”混合这种数据以提高性能。

现在我只是在同一级别处理所有这些特征(使用 RandomForest 分类器),但我想知道使用神经网络,特别是具有多输入和多输出的神经网络是否是一个好主意:我的想法是首先处理数据的每种性质,然后合并所有数据以查看不同类型特征之间的交互。我正在使用 Keras 中的 MultiInput MultiOutput 架构: 在此处输入图像描述

事实上,对于 Main_Input 部分(对我来说是文本特征),我只是使用一个简单的 NN,它只有一个隐藏层(只有 64 个节点),然后是一个带有激活函数的输出层。sigmoid

我的 Aux_Input 是我的“数字”特征,在合并所有这些之后,我只需添加一个具有 64 个节点的密集层,然后添加一个具有激活函数的输出层。sigmoid

Keras 中的实现非常好,性能比我简单地同时处理所有功能并将其扔到输出层(所以只是一个逻辑回归)时最差......而且有点令人困惑我:对我来说,这种架构更适合我的现象(我有两种数据,我先分别处理,然后合并以获得交互)。

  • 是因为我通过仅针对文本特征的隐藏层而丢失了初始文本特征 (TFIDF) 和“数字”特征之间的信息吗?
  • 如何处理“高维”数据(此处为 TFIDF 特征)并可能在不损失性能的情况下执行降维?
  • 当我只处理文本特征时,我会获得更好的性能,而当我只处理数字特征时,我会再次获得更好的性能,但两者都比使用所有特征一起进行逻辑回归要差一些......这里有什么线索吗?
  • 您对我的架构有什么建议或意见吗?

事实上,只要写下这个问题,我就意识到也许我可以做多个分类器(每种一个),然后“用一个新的分类器对它们进行平均”......但我不知道如何^^(我在想类似于 ML 模型的输出的东西将是我最终模型的输入)。我很确定单独我可以提高性能(例如尝试对文本部分进行不同的嵌入)。

你怎么看 ?

提前感谢您的任何评论、线索或任何可以让我清醒或可以参考一篇好文章/书籍/教程/示例的内容:)

0个回答
没有发现任何回复~