swi*_*fty 5 machine-learning autoencoder deep-learning keras
我有一个项目,在其中使用表格数据使用Gradient Boosted Trees进行回归。我想看看是否对数据使用去噪自动编码器可以更好地表示原始数据并提高原始GBT分数。灵感来自受欢迎的Kaggle获奖者。
AFAIK对于提取DAE的激活,我有两个主要选择-创建瓶颈结构并采用单个中间层激活或将每一层的激活串联在一起作为表示。
假设我要从下面的3x 512节点层激活所有层:
inputs = Input(shape=(31,))
encoded = Dense(512, activation='relu')(inputs)
encoded = Dense(512, activation='relu')(encoded)
decoded = Dense(512, activation='relu')(encoded)
decoded = Dense(31, activation='linear')(decoded)
autoencoder = Model(inputs, decoded)
autoencoder.compile(optimizer='Adam', loss='mse')
history = autoencoder.fit(x_train_noisy, x_train_clean,
epochs=100,
batch_size=128,
shuffle=True,
validation_data=(x_test_noisy, x_test_clean),
callbacks=[reduce_lr])
Run Code Online (Sandbox Code Playgroud)
我的问题是:
进行上述激活会给我x_train的新表示,对吗?我应该为x_test重复此过程吗?我都需要训练我的GBT模型。
我该如何推断?每个新数据点都需要“转换”为这种新的表示形式。我如何用Keras做到这一点?
我是不是真的需要提供validation_data=给.fit在这种情况呢?
采用上述激活将为我提供 x_train 的新表示,对吗?我应该对 x_test 重复这个过程吗?我需要两者来训练我的 GBT 模型。
当然,您需要对训练数据和测试数据进行去噪表示,因为您稍后训练的 GBT 模型仅接受去噪特征。
我该如何进行推理?每个新数据点都需要“转换”为这种新的表示格式。我怎样才能用 Keras 做到这一点?
如果想使用去噪/重构后的特征,可以直接使用autoencoder.predict( X_feat )提取特征。如果要使用中间层,需要encoder_only=Model(inputs, encoded)先建立一个新模型,并用它来进行特征提取。
在这种情况下,我实际上需要向 .fit 提供validation_data= 吗?
你最好分离一些训练数据进行验证,以防止过度拟合。但是,您始终可以训练多个模型,例如以留一法的方式,以集成的方式充分使用所有数据。
附加说明:
DropOut| 归档时间: |
|
| 查看次数: |
1843 次 |
| 最近记录: |