问题描述
我有一系列功能,每个功能都有一个权重(重要性值),我想使用“密集”构建自动编码器,在输入层中,我将每个功能的重要性设置为权重。假设我具有以下功能及其重要性值:
feature importance
feature_1 0.3
feature_2 0.2
feature_3 0.15
feature_4 0.05
我的自动编码器外观如下
def generate_autoencoder(features_importance_dataframe):
input_layer = Input(shape=(len(features_importance_dataframe.feature.unique().tolist()),))
encoder = Dense(128)(input_layer)
encoder = Dropout(0.2)(encoder)
encoder = Dense(64)(encoder)
encoder = Dropout(0.2)(encoder)
bottleneck = Dense(32)(encoder)
bottleneck = Dropout(0.2)
decoder = Dense(64)(bottleneck)
decoder = Dropout(0.2)(decoder)
decoder = Dense(128)(decoder)
decoder = Dropout(0.2)(decoder)
output_layer = Dense(len(features_importance_dataframe.feature.unique().tolist(),activation='sigmoid')(decoder)
autoencoder = Model(input_layer,output_layer)
autoencoder.compile(loss='mse',optimizer='rmsprop')
return autoencoder
如果可行的话,关于如何实现此目标的任何提示?谢谢。
解决方法
一种解决方案是拥有第二个输入层,并在其中输入重要性信息。在学习过程中,模型可能会学习权重值与特征值之间的相关性。