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

时间:2013-09-16 09:59:41

标签: enums neural-network

我正在尝试使用神经网络来解决一些机器学习问题,主要是使用NEAT进化(增强拓扑的NeuroEvolution)。

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

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

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

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

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

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

1 个答案:

答案 0 :(得分:18)

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

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

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