这是个有趣的问题。在使用神经网络(从现代视角)时,通常最好使用尽可能多的数据,并尽量减少手动预处理的数量。
选项 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 的表格学习,即使对于没有太多经验的人来说,这也确实使所有这些都非常容易上手。