【问题标题】:How to specify features weights in a dense autoencoder?如何在密集的自动编码器中指定特征权重?
【发布时间】:2021-01-07 15:07:28
【问题描述】:

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

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

如果可行的话,有任何关于如何实现这一点的提示吗?谢谢。

【问题讨论】:

  • 这里的“重要性”对你意味着什么?
  • 我使用 RandomForest 分类器生成特征的重要性值;使用熵作为信息增益度量。

标签: keras feature-selection autoencoder


【解决方案1】:

一种解决方案是使用第二个输入层,该层接收重要性信息。在学习过程中,模型可能会学习到权重值和特征值之间的相关性。

【讨论】:

    猜你喜欢
    • 2019-05-14
    • 2017-06-20
    • 1970-01-01
    • 1970-01-01
    • 2016-08-21
    • 1970-01-01
    • 1970-01-01
    • 2018-09-17
    • 1970-01-01
    相关资源
    最近更新 更多