神经网络:一个热门变量压倒性连续吗?


13

我有大约20列(20个功能)的原始数据。其中有10个是连续数据,有10个是分类数据。某些分类数据可能具有50个不同的值(美国各州)。在我对数据进行预处理之后,连续的10列变成了10列准备好的列,而10个分类值变得像200个一键编码变量。我担心如果将所有这些200 + 10 = 210个特征都放入神经网络,那么200个热门特征(10个分类列)将完全占据10个连续特征。

也许一种方法是将列“分组”或类似的东西。这是一个有效的问题吗?有没有标准的方法可以解决这个问题?

(尽管我认为这没什么大不了,但我正在使用Keras。)


您是否考虑过使用两个(或多个)顺序模型,然后将它们合并?每个模型都有输入,可以更好地匹配输入的数据(而不是像香肠那样将其捣碎。)目标是相同的,但是您要制作两组训练数据,每组训练数据在拟合过程中都是独立供给的。合并之后立即出现最终输出层,因此最终层将决定哪种模型最适合特定样本。来自keras.io:keras.io/入门/ 顺序模型指南
photox

正是我想要的。感谢您的贡献。
user1367204

我尝试过此操作,并且合奏(模型_1,模型_2)的val_loss高于模型_1的val_loss且高于模型_2的val_loss。
user1367204

您是否实际尝试过此操作,并确定确实发生了此问题?您做了什么测试来检查这一点?结果如何?
休·珀金斯

Answers:


5

您可以使用不同于一站式的方法对分类变量进行编码。二进制或哈希编码器可能适合这种情况。散列特别好,因为您将所有类别编码为每个特征向量一个单一的表示形式,因此,没有一个主宰另一个。您还可以指定最终表示形式的大小,因此可以将所有分类变量散列为10个要素,最后得到20个数字要素(半连续,半分类)。

两者都在https://github.com/scikit-learn-contrib/categorical-encoding中实现,或者相当直接地实现了自己。


4

您可以使用嵌入将大量分类变量转换为单个向量。该压缩向量将是分类特征的分布式表示。分类输入将转换为长度为N的相对较小的向量,该向量具有N个实数,该实数以某种方式表示描述所有输入的N个潜在特征。

考虑一下英语词典中的大量单词。如果此数字为N,则我们可以将每个单词表示为长度为N的一个热编码矢量。但是,单词到vec能够捕获长度为200-300的矢量中的几乎所有信息。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.