【问题标题】:What values to use on a neural network analysis?在神经网络分析中使用什么值?
【发布时间】:2020-06-10 10:50:24
【问题描述】:

我有以下练习:

  • 使用 k 折交叉验证创建神经网络。评估不同配置的性能。

在此之后,我应该将这些值与使用决策树模型获得的值进行比较,以获得相同的数据。

对于给定的数据:

我必须规范化这些值,并且我能够规范化它们。但问题是,改变比赛字段中的值是否有意义:

  • 亚洲 - 0
  • 白色 - 1
  • 其他 - 2

然后将值标准化(0 到 1),还是应该只使用“年龄”、“薪水”和“学历”字段?

因变量将是一个新列,将薪水分为“高”和“低”。

在神经网络中归一化和使用哪些字段有意义?我可以将它们全部归一化并使用神经网络中的所有字段吗?

【问题讨论】:

    标签: r neural-network decision-tree k-fold


    【解决方案1】:

    这是一个有趣的问题。在使用神经网络时(从现代角度来看),通常最好使用尽可能多的数据,并尽量减少手动预处理的数量。

    选项 1 是最糟糕的:只使用数字属性(标准化)。

    选项 2 更进一步:在顺序明显的地方也使用分类属性。我想这就是你打算用“学术水平”做的事情。在这些情况下,您可以尝试将这些值转换为标准化数字。不理想,但总比不使用它们好。

    选项 3:对于顺序没有意义的分类属性,您可以为每个选项创建一个布尔属性!这看起来很可怕,因为它会迅速增加维度,但这通常是一个好方法。例如,如果您有 4 个工作类别,您可以尝试使用 4 列,每个工作选项一列。

    选项 4:到目前为止,最好的方法(但也是最难实现的)是使用嵌入。这类似于在自然语言处理中彻底改变深度学习使用的想法。

    语言的问题与你自己的问题类似:如何将输入的单词数字化。第一种方法是将字符串中的每个单词翻译成一个向量,其中向量的长度为词汇表中单词的个数,除当前单词的索引外,其余均为0。这称为单热编码。想象一下我们的词汇是“俄罗斯、苹果、湖、梨”。那么“Apple”这个词将被编码为 [0, 1, 0, 0]。很好,但这会删除很多信息。例如,Apple 与 Pear 比与俄罗斯更相似,但 [0, 1, 0, 0] 与 [0, 0, 0, 1] 与 [1, 0, 0, 0] 相似。

    但是我们可以使用密集向量! (如 [0.12, 0.42, -0.01, 0.9]。)例如,通常将字典中的任何单词编码为 300 维向量。语义相似性和意义的细微差别将被编码在向量的不同维度中。

    那么...为什么不对有问题的属性做同样的事情呢?像您建议的那样排序比赛输入是没有意义的,并且可能会混淆算法。为什么“亚洲”价值最高?为什么是“西班牙裔”和“白人”之间的“黑人”? (使用种族之类的社会结构突出了为什么这是有问题的。)

    现在,词嵌入通常经过预训练并可以重复使用。在您的情况下,您需要将这些向量作为模型参数的一部分进行训练(查找“嵌入层”)。从头开始实现它可能不是一件容易的事,但你至少知道这些可能性是件好事。如果您想尝试一下这个想法,我建议您研究一下 Fastai 的表格学习,即使对于没有太多经验的人来说,这也确实让所有这些都变得非常平易近人。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-01-17
      • 2010-10-15
      • 2015-09-22
      • 1970-01-01
      • 2019-07-17
      • 1970-01-01
      • 2019-09-13
      相关资源
      最近更新 更多