Machine learning 深度学习中的大量虚拟变量

Machine learning 深度学习中的大量虚拟变量,machine-learning,deep-learning,dummy-variable,Machine Learning,Deep Learning,Dummy Variable,我试图为回归问题训练一个深度学习模型。我有2000个重要的分类输入,每个输入有3个类别。如果我将它们转换为虚拟变量,那么我将有6000个虚拟变量作为深度学习模型的输入,这使得优化非常困难,因为我的输入(6000个虚拟变量)不是以零为中心的。此外,每个虚拟变量的方差很小,因此6000个虚拟变量将很难解释输出中的方差。我想知道我是否需要使用虚拟变量的z分数来帮助优化?另外,有没有更好的解决方案来处理这2000个分类输入?您应该使用,它将大型稀疏向量转换为一个低维空间,从而保留语义关系。因此,对于每个

我试图为回归问题训练一个深度学习模型。我有2000个重要的分类输入,每个输入有3个类别。如果我将它们转换为虚拟变量,那么我将有6000个虚拟变量作为深度学习模型的输入,这使得优化非常困难,因为我的输入(6000个虚拟变量)不是以零为中心的。此外,每个虚拟变量的方差很小,因此6000个虚拟变量将很难解释输出中的方差。我想知道我是否需要使用虚拟变量的z分数来帮助优化?另外,有没有更好的解决方案来处理这2000个分类输入?

您应该使用,它将大型稀疏向量转换为一个低维空间,从而保留语义关系。因此,对于每个分类特征,都有密集向量表示

下面是使用TensorFlow的伪代码:

unique_amount_1 = np.unique(col1)
input_1 = tf.keras.layers.Input(shape=(1,), name='input_1')
embedding_1 = tf.keras.layers.Embedding(unique_amount_1, 50, trainable=True)(input_1)
col1_embedding = tf.keras.layers.Flatten()(embedding_1)

unique_amount_2 = np.unique(col2)
input_2 = tf.keras.layers.Input(shape=(1,), name='input_2')
embedding_2 = tf.keras.layers.Embedding(unique_amount_2, 50, trainable=True)(input_2)
col2_embedding = tf.keras.layers.Flatten()(embedding_2)

combined = tf.keras.layers.concatenate([col1_embedding, col2_embedding])
result = tf.keras.layers.Dense()(combined)

model = tf.keras.Model(inputs=[col1, col2], outputs=result)

其中
50
-嵌入向量的大小。

谢谢。所以,如果我的pandas数据框有100000行和2000列(我有2000个分类变量,每个变量取3个值(0,1,2)),那么1-嵌入层后数据的形状是什么?2-嵌入向量的大小应该是多少?3-如何确保嵌入层后的数据以零为中心,以解决更简单的优化问题?