如何在密集的自动编码器中指定特征权重?

问题描述

我有一系列功能,每个功能都有一个权重(重要性值),我想使用“密集”构建自动编码器,在输入层中,我将每个功能的重要性设置为权重。假设我具有以下功能及其重要性值:

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

如果可行的话,关于如何实现此目标的任何提示?谢谢。

解决方法

一种解决方案是拥有第二个输入层,并在其中输入重要性信息。在学习过程中,模型可能会学习权重值与特征值之间的相关性。