-1

我有以下练习:

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

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

对于给定的数据:

在此处输入图像描述

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

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

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

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

在神经网络中规范化和使用哪些领域是有意义的?我可以对所有这些进行归一化并使用神经网络中的所有字段吗?

4

1 回答 1

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 的表格学习,即使对于没有太多经验的人来说,这也确实使所有这些都非常容易上手。

于 2020-06-10T13:09:43.403 回答