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

CTU-13数据集S11场景下PCA输出重复重要特征原因排查

问题原因

  • PCA的主成分仅要求彼此正交,没有要求各主成分的最大贡献特征必须不同。你观测到的重复特征,本质是这些特征在不同正交维度上都贡献了独立的可解释方差,理论上是允许出现的,但你代码里的疏漏放大了该现象。
  • 核心疏漏是没有做特征标准化:PCA是基于方差计算的无监督算法,数值量级大的特征(比如流量字节类字段)天然方差更大,会在所有主成分中都占据更高的权重,自然会反复出现在最大贡献特征的位置。
  • 次要疏漏是特征选择逻辑设计问题:你当前的逻辑是为每个主成分单独取权重最大的单个特征,没有全局去重逻辑,自然会输出重复结果。

调试方案

  1. 新增特征标准化步骤,消除数值量级对PCA结果的干扰:
from sklearn.preprocessing import StandardScaler

# 原代码取完特征矩阵arr之后新增
scaler = StandardScaler()
arr_scaled = scaler.fit_transform(arr)
# 用标准化后的矩阵做PCA拟合
pca=PCA(n_components=10)
x_pca=pca.fit_transform(arr_scaled)
  1. 替换特征选择逻辑,改为计算全局特征重要性,避免重复:
# 计算每个特征在所有主成分上的权重绝对值之和作为全局重要性
feature_total_importance = np.sum(np.abs(pca.components_), axis=0)
# 按重要性从高到低排序取前10
top_10_idx = np.argsort(feature_total_importance)[::-1][:10]
top_10_feature_names = [initial_feature_names[i] for i in top_10_idx]
print("全局Top10重要特征:", top_10_feature_names)
  1. 可选优化:跑PCA之前先计算特征相关性矩阵,删除相关系数高于0.9的冗余特征,减少共线性对结果的干扰。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.18 09:15:01