选择嵌入特征维度

数据挖掘 神经网络 嵌入
2021-10-04 04:02:30

我正在尝试使用流处理神经网络张量的分类问题。我有一些连续变量特征和一些分类特征。使用 sklearn 的 StandardScaler 对连续特征进行归一化。对于分类特征,我使用了一系列嵌入特征,这些特征与我的连续特征连接在一起。

嵌入特征是这样创建的:

 airline = tf.feature_column.categorical_column_with_hash_bucket(
        'AIRLINE', hash_bucket_size=10)  

然后 :

 tf.feature_column.embedding_column(airline, 8)

但是,我在选择嵌入功能输出大小时遇到了麻烦。我知道这会将我稀疏的一个热编码“航空公司”功能转换为大小为 8 的浮点向量。

我可以使用启发式方法来选择嵌入特征大小吗?

我的神经网络的准确率仍然停留在 31%。即使在 100 个 epoch 之后,它似乎也没有在学习。嵌入特征的大小是否会导致这种行为?

1个回答

我认为下面的帖子是一个很好的资源。

https://developers.googleblog.com/2017/11/introducing-tensorflow-feature-columns.html

基本上,所有分类变量最初都转换为 one-hot 编码,然后由dimension参数定义的层大小堆叠在 one-hot 编码之上;从而学习基于指定维度的分类变量的最佳表示。

博客文章中的一般规则是取类别数的 4 次方根。

另一种方法是执行 MDS 来检查您的分类变量以确定维度。