代码之家  ›  专栏  ›  技术社区  ›  edn

神经网络中的分类特征值

  •  1
  • edn  · 技术社区  · 7 年前

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

    由于这是一个分类数据,我经常看到这样的情况:

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

    当NN由输入特征馈送时,如果性别=男性,则(性别x any\u权重)的结果将始终为0。如果性别=女性,则(性别x any\u体重)将等于体重值。

    在我看来,反向传播更新权重的能力在某种程度上会受到限制,因为无论你如何更改权重,(gender x any\u weight)如果性别=男性,都会一直给0。

    从这个角度来看,说:

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

    这样,我们可以确保(gender x any\u weight)的结果不会为0。

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

    使用0和1是否与使用1和2相同?如果没有,我们应该选择哪一个?

    1 回复  |  直到 7 年前
        1
  •  3
  •   nuric    7 年前

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

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