You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

基于自动编码器的逐特征重构误差计算及特征重要性分析求助

问题解决:自编码器逐特征重构误差计算与特征重要性分析

问题原因

你遇到的维度不匹配问题,是因为误将encoder模型用于生成重构输出:encoder的输出是10维的编码向量(对应你定义的encoded = Dense(10, ...)),而你的输入x_test是17维,二者维度自然无法对齐。真正能生成与输入同维度重构结果的是你已经定义好的autoencoder模型。

解决方案步骤

1. 完成自编码器的训练

你的代码已经定义了完整的autoencoder,但缺少训练步骤,需要先训练模型:

# 假设你已准备好训练数据x_train、测试数据x_test(自编码器为无监督学习,训练输入输出均为x_train)
autoencoder.fit(x_train, x_train,
                epochs=50,
                batch_size=256,
                shuffle=True,
                validation_data=(x_test, x_test))

2. 生成重构输出并计算逐特征MSE

使用训练好的autoencoder生成与输入同维度的重构结果,再计算每个特征的均方误差:

# 生成与输入维度一致的重构输出
reconstructed_output = autoencoder.predict(x_test)

# 计算逐特征MSE:对每个特征维度,计算所有样本的平方误差均值
mse_per_feature = ((x_test - reconstructed_output) ** 2).mean(axis=0)

# 输出结果:误差越高的特征,对聚类任务的重要性通常越高
print("逐特征重构MSE:")
print(mse_per_feature)

额外说明

  • 你之前自定义的mse_per_feature损失函数返回的是逐特征MSE数组,但Keras默认要求损失函数返回标量(用于梯度下降),因此训练时无需替换默认的mean_squared_error,训练后单独计算逐特征误差即可。
  • 特征重要性判断逻辑:重构误差越高的特征,说明自编码器越难学习到该特征的规律,这类特征往往包含更多独特信息,对聚类任务的重要性更高。

内容的提问来源于stack exchange,提问作者user3490622

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.22 09:37:19