在神经网络分析中使用什么值?

What values to use on a neural network analysis?

我有以下练习:

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

对于给定的数据:

我必须规范化这些值,而且我能够规范化它们。但问题是,像这样更改 race 字段中的值是否有意义:

然后将值标准化(0 到 1),或者我应该只使用字段 "age"、"salary" 和 "academic level"?

因变量将是一个新列,将薪水分为"high"和"low"。

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

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

选项 1 最差:仅使用数字属性(标准化)。

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

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

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

语言的问题和你自己的问题类似:如何将输入的单词数值化。第一种方法是将字符串中的每个单词翻译成一个向量,向量的长度是词汇表中单词的个数,除了当前单词的索引外,其他都是0。这称为单热编码。想象一下我们的词汇量是 "Russia, Apple, Lake, Pear"。然后单词 "Apple" 将被编码为 [0, 1, 0, 0]。很好,但这会抹去很多信息。例如,Apple 与 Pear 的相似度比与 Russia 的相似度更高,但 [0, 1, 0, 0] 与 [0, 0, 0, 1] 的相似度与 [1, 0, 0, 0] 的相似度一样高。

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

所以...为什么不对有问题的属性做同样的事情呢?像您建议的那样对比赛输入进行排序是没有意义的,并且可能会混淆算法。为什么 "Asian" 是最高值?为什么 "Black" 在 "Hispanic" 和 "White" 之间? (使用像种族这样的社会建构突出了为什么这是有问题的。)

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