如何结合分类和连续输入特征进行神经网络训练


16

假设我们有两种输入功能,即分类输入和连续输入。分类数据可以表示为单热码A,而连续数据只是N维空间中的向量B。似乎仅使用concat(A,B)并不是一个好选择,因为A,B是完全不同的数据。例如,与B不同,A中没有数字顺序。因此,我的问题是如何组合这两种数据,或者是否有任何常规方法来处理它们。

实际上,我提出了一个朴素的结构,如图所示

在此处输入图片说明

如您所见,前几层用于将数据A更改(或映射)到连续空间中的某个中间输出,然后将其与数据B合并,形成连续空间中新的输入要素,供以后的层使用。我不知道这是合理的还是仅仅是“试错”的游戏。谢谢。

Answers:


5

解决此问题的方法主要有以下三种:

  1. 分别构建两个模型,然后训练一个集成算法,该算法接收两个模型的输出作为输入
  2. 将所有数据汇总到单个矢量/张量中作为预处理步骤,然后训练一个简单的单输入NN
  3. 您提出的多输入NN架构

集成方法是最直接的选择,并且会产生不错的结果,但是,它不能像您建议的那样工作,因为集成网络仅从两个网络接收类概率作为输入,并且与您的选择相比这种方法错过了数据类型之间更复杂的关系。

从理论上讲,第二种方法与您提出的方法没有什么不同,不同之处在于它假定网络将自行确定输入由两种类型的数据组成(因为它们都在相同的矢量/张量中) )。网络要花费大量的培训时间才能知道这一点,并且您甚至可能在陷入局限之前就陷入困境。

根据我的个人经验,您建议的网络是最佳选择,因为它可能具有最短的培训时间,一旦您掌握了正确的体系结构,就可以很容易地对生产中的网络进行培训和维护(再培训),以及您将只需要重新训练一个模型即可。



0

到目前为止,我已经使用了您提出的幼稚结构。在框架合理且数据充足的情况下,这种类型的体系结构可以很好地工作。但是,我学到了一些东西:

  1. 基于树的算法(RF,XGB)通常在混合类中表现良好,除非您具有一些特定的输出要求或损失函数,而这些函数更易于通过神经网络实现。
  2. 如果决定使用神经网络,则与其他类型的字符串编码方式相比,该架构的性能更好。
  3. 这种方法也适用于混合输入时间序列数据-比任何经典的时间序列方法都要好得多。

关键设计将是连接层,以及您要将其放置在体系结构中的何处。此外,使用嵌入层还为您提供了在其他一些任务/可视化中使用这些学习到的嵌入的其他好处。

这些类型的体系结构已在Kaggle竞赛中使用[1],并且在Jeremy Howard教授的Fast.ai课程中也有讲授[2]。

  1. https://yashuseth.blog/2018/07/22/pytorch-neural-network-for-tabular-data-with-categorical-embeddings/
  2. https://www.fast.ai/2019/01/24/course-v3/
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.