我有 2 个“性质”的数据(如果我计算图像数据,则更实际):
- 文本(我用特殊标记化和 TfIdfVectorizer 处理)~ 5000 个特征
- 非文本(如句子长度、我句子中的字符数等):只有数字特征
- 图像数据(文档中的图像中存在特殊标签):非常罕见,因此此处不需要
有了所有这些数据,我应该能够区分垃圾邮件和非垃圾邮件(这里有不同的语言)。
现在我的模型确实有很好的性能,但我正在考虑一种方法来更“正确地”混合这种数据以提高性能。
现在我只是在同一级别处理所有这些特征(使用 RandomForest 分类器),但我想知道使用神经网络,特别是具有多输入和多输出的神经网络是否是一个好主意:我的想法是首先处理数据的每种性质,然后合并所有数据以查看不同类型特征之间的交互。我正在使用 Keras 中的 MultiInput MultiOutput 架构:
事实上,对于 Main_Input 部分(对我来说是文本特征),我只是使用一个简单的 NN,它只有一个隐藏层(只有 64 个节点),然后是一个带有激活函数的输出层。
我的 Aux_Input 是我的“数字”特征,在合并所有这些之后,我只需添加一个具有 64 个节点的密集层,然后添加一个具有激活函数的输出层。
Keras 中的实现非常好,性能比我简单地同时处理所有功能并将其扔到输出层(所以只是一个逻辑回归)时最差......而且有点令人困惑我:对我来说,这种架构更适合我的现象(我有两种数据,我先分别处理,然后合并以获得交互)。
- 是因为我通过仅针对文本特征的隐藏层而丢失了初始文本特征 (TFIDF) 和“数字”特征之间的信息吗?
- 如何处理“高维”数据(此处为 TFIDF 特征)并可能在不损失性能的情况下执行降维?
- 当我只处理文本特征时,我会获得更好的性能,而当我只处理数字特征时,我会再次获得更好的性能,但两者都比使用所有特征一起进行逻辑回归要差一些......这里有什么线索吗?
- 您对我的架构有什么建议或意见吗?
事实上,只要写下这个问题,我就意识到也许我可以做多个分类器(每种一个),然后“用一个新的分类器对它们进行平均”......但我不知道如何^^(我在想类似于 ML 模型的输出的东西将是我最终模型的输入)。我很确定单独我可以提高性能(例如尝试对文本部分进行不同的嵌入)。
你怎么看 ?
提前感谢您的任何评论、线索或任何可以让我清醒或可以参考一篇好文章/书籍/教程/示例的内容:)