具有分类变量(枚举)作为输入的神经网络

che*_*ica 10 enums neural-network

我正在尝试使用神经网络解决一些机器学习问题,主要是NEAT演化(NeuroEvolution of Augmented Topologies).

我的一些输入变量是连续的,但其中一些是绝对的,如:

  • 物种:{Lion,Leopard,Tiger,Jaguar}
  • 贸易分支:{医疗保健,保险,金融,IT,广告}

起初我想通过将类别映射到离散数字来建模这样的变量,例如:

{Lion:1,Leopard:2,Tiger:3,Jaguar:4}

但我担心这会在变量上添加某种任意拓扑.老虎不是狮子和豹子的总和.

通常采用什么方法解决这个问题?

lej*_*lot 18

不幸的是,没有好的解决方案,每个都会导致某些问题:

  • 正如您所提到的,您的解决方案是添加拓扑; 它可能不是那么糟糕,因为NN可以适应任意函数并代表"ifs",但在很多情况下它会(因为NN经常落入某些局部最小值).
  • 您可以以数据的形式对数据进行编码is_categorical_feature_i_equal_j,这不会导致任何其他拓扑,但会以指数方式增加要素的数量.因此,你可以获得"物种"的特征"is_lion","is_leopard"等,1当时只有其中一个是相同的
  • 如果与可能的分类值相比有大量数据(例如,您有10000个od数据点,并且只有10个可能的分类值),则还可以将问题拆分为10个独立的问题,每个问题都针对一个特定值进行训练(所以我们有"狮子神经网络","美洲虎神经网络"等)

这两种第一种方法是"极端"情况 - 一种是计算上非常便宜,但可能导致高偏差,而这种情况引入了很多复杂性,但不应影响分类过程本身.最后一个很少可用(由于假设分类值很少),但在机器学习方面却相当合理.