神经网络中的分类特征值

categorical feature value in Neural Networks

假设一个神经网络 (NN),其中每个训练示例都有一堆特征,其中一个特征是性别信息(男性或女性)。

因为它是一个分类数据,所以我经常看到类似的东西:

If male, gender = 0
If female, gender = 1

当 NN 由输入特征提供时,如果性别 = 男性,(gender x any_weight) 的结果将始终为 0。而(gender x any_weight) 如果gender = female,则等于weight的值。

在我看来,反向传播更新权重的能力会受到某种限制,因为无论你如何改变权重,如果性别 = 男性,(gender x any_weight) 将继续给出 0。

从这个角度来看,这样说似乎是个更好的主意:

If male, gender = 1
If female, gender = 2

通过这种方式,我们可以确保(性别 x any_weight)的结果不会是 0。

但我可能在这里遗漏了某事,因为我一直看到分类(在大多数情况下)似乎是从 0 开始的。 也许在这里有更多经验的人可以更好地澄清它并解释我在这里的误解?

使用 0 和 1 与使用 1 和 2 是一样的吗?或者,如果不是,我们应该选择哪一个?

分类数据通常使用单热编码进行编码。因此,在您的情况 [1,0] if male else [0,1] 中,您可以想到在给定索引处只有 1 的零向量。由于如此不同 "paths",权重将根据您拥有的功能激活,从而使网络相对更容易使用这些功能。另一种方法是使用 -1 和 1 对其进行编码,还有其他方法 standardising data.

为了回答你的问题,就多层感知器而言,这无关紧要,当输入为 0 时,权重确实不会更新,但隐藏层会被调整以识别,通过识别我的意思是你仍然有可以补偿 0 输入的偏差(感谢评论)。同样,当输入为 1,2 时,权重将调整以区分它们。对于二进制数据,-1,1 工作得很好,因为它对任何权重都起着开关的作用。我会建议你尝试你的想法,看看会发生什么,有很好的 demos online