Skip to content

数据预处理与分析方法 #1

Description

@Nomikfk1215

数据预处理与分析方法

一、数据质量:论文的基石

核心原则: 论文方法严重依赖数据集质量,好的分析结果依赖高数据质量。处理数据可能要占整个项目三分之一甚至更多的时间。

神经网络 vs 机器学习对数据质量的依赖

  • 神经网络: 对数据质量依赖更高,"Garbage In, Garbage Out" 效应更明显
  • 某些场景下: 脏数据先用传统机器学习方法做预处理,可能比直接用神经网络效果更好

二、缺失值处理(NaN/空值)

2.1 根据数据特征选择方法

数据特征 处理方法 说明
线性有规律 均值填充、上下均值、前向/后向填充 时间序列优先使用插值法(线性插值、样条插值)
非线性杂乱无规律 机器学习方法预测填充 KNN填充、MICE、MissForest、IterativeImputer

2.2 ML预测填充的约束条件

必须做边界约束: 预测值不能超过原始数据的最大/最小值,或物理意义上的极大/极小值。

# 示例:填充后做裁剪
filled_values = model.predict(X_missing)
filled_values = np.clip(filled_values, min_val, max_val)  # 边界约束

三、数据归一化与标准化

3.1 常用方法

方法 公式 适用场景
Min-Max归一化(比率百分比规划) (x - min) / (max - min) 数据有明确边界、需要统一量纲
Z-score标准化 (x - μ) / σ 数据近似正态分布
Robust标准化 (x - median) / IQR 数据存在异常值
目的:统一量纲,让神经网络知道输入的大概范围,便于发现模式和收敛。

3.2 特征工程策略选择

  • 原始数据计算(不增加特征列)+ 强模型(Transformer等)
    • 适用于:数据列之间关系复杂、难以人工构造有效特征。
  • 原始数据 + 外部特征工程(增加特征列)
    • 适用于:领域知识丰富、能构造明确物理意义的特征。
      最佳特征状态:若干列之间无强相关性,每列有独立的物理意义。
      避免:太多高度相关的列(给神经网络引入噪声,导致梯度忽上忽下)。

四、正则化与过拟合控制

4.1 正则化方法

  • L1正则(Lasso):产生稀疏解,自动特征选择。
  • L2正则(Ridge):权重衰减,防止权重过大。

4.2 过拟合判断标准

判断核心:训练误差和评估误差是否在同一量级上。

现象 判断 处理
训练误差 << 验证误差 过拟合 增加正则化、减少模型复杂度、增加数据
训练误差 ≈ 验证误差(但都高) 欠拟合 增加模型复杂度、减少正则化

4.3 样本比例建议

核心原则:正样本比例控制在 30% - 70% 之间。

  • 低于 30%:模型性能不足,难以学习正样本模式。
  • 高于 70%:容易过拟合,且神经网络并非完全不需要负样本(噪音样本有助于提升泛化能力)。
    处理方法:SMOTE、欠采样、类别权重调整、Focal Loss。

五、数据分析方法

5.1 因子分析(本质即特征工程)

核心定义:因子即函数。通过构造函数将若干自变量(X)进行打包聚合,转化为具有更高层级物理意义的变量再参与计算。

  • 核心难点:在极高维空间(如 2000+ 维)中剔除干扰项,识别影响目标变量的决定性因子,即区分“因果关系”与“表面相关”。

5.1.1 识别内生性相关变量的两种路径

方法一:长期观测法(本质法)

  • 逻辑:在数据的整个生命周期中进行纵向观察。
  • 判定标准:只有持续产生影响的特征才具备内生性,短期出现的强相关往往是随机波动的“伪相关”。

方法二:诞生-消亡尺度图法(数论/拓扑方法)

  • 核心思想:利用**持久同调(Persistent Homology)**原理区分统计相关与因果相关。
  • 识别逻辑
    • 伪相关:变量随外部环境“同生同灭”,其时间尺度特征高度一致。
    • 真实因果:因果变量在时间或空间尺度上存在显著差异(不对称性)。

诞生-消亡图解读:

      消亡尺度 (Death) ↑
                      │  ●                    ○
                      │    ●                ○
      左上角区域      │      ●            ○    ← 真实因果 (尺度差异大)
      (内生性强)      │        ●        ○
                      │          ●    ○
                      │            ●○──────── 对角线 (Persistence=0)
                      │          ○    ●        [表面相关/伪相关: 同生同灭]
                      │        ○        ●
      右下角区域      │      ◌            ●    ← 真实因果 (尺度差异大)
      (内生性强)      │    ○                ●
                      │  ○                    ●
                      └────────────────────────────→ 诞生尺度 (Birth)
位置 含义 相关性性质
对角线附近 同时诞生、同时消亡 表面相关(可能受共同外部环境影响)
远离对角线(左上/右下) 时间/尺度不一致 内生相关(可能为真实因果)

数学基础:持久同调(Persistent Homology)、生存分析(Survival Analysis)


5.2 相关性分析方法对比

方法 原理 用途 局限
斯皮尔曼 (Spearman) 秩次相关 检测单调关系 仅数值相关,无法识别因果
皮尔逊 (Pearson) 线性相关 检测线性关系 对异常值敏感
SHAP 博弈论计算特征贡献 解释模型预测 事后解释,依赖模型质量

关键区别:

  • 斯皮尔曼/皮尔逊:研究数值上的相关性(非内生性的相关性)。
  • 诞生-消亡图:识别时间尺度上的内生性(更接近因果关系)。

5.3 主成分分析(PCA)

适用场景:当因果变量分析做不出来时,作为自动化降维的替代方案。

特点

  • 无监督方法,不依赖目标变量。
  • 通过方差最大化找到主成分。
  • 可能丢失与目标相关的弱信号。

六、可视化与工具

6.1 推荐工具

  • Matplotlib / Seaborn:科研标准,可导出EPS/PDF。
  • Streamlit:交互式展示。
  • SVG代码化:向量图可用AI辅助生成代码,保证论文质量。

6.2 完整数据预处理流程图

┌─────────────────────────────────────────────────────────────┐
│                    数据预处理流程                           │
├─────────────────────────────────────────────────────────────┤
│  1. 数据清洗                                                │
│     ├── 缺失值处理 → 删除/填充/预测(带边界约束)           │
│     ├── 异常值检测 → 3σ/IQR/孤立森林                        │
│     └── 重复值处理 → 去重                                   │
├─────────────────────────────────────────────────────────────┤
│  2. 数据变换                                                │
│     ├── 归一化/标准化 → 统一量纲                            │
│     ├── 编码处理 → One-hot/Label/Ordinal                    │
│     └── 样本平衡 → SMOTE/权重调整(保持30%-70%)            │
├─────────────────────────────────────────────────────────────┤
│  3. 特征工程与因果发现                                      │
│     ├── 长期观测 → 识别持续性关系                           │
│     ├── 诞生-消亡图 → 区分真实因果与伪相关                  │
│     ├── 因子构造 → 领域知识打包相关变量                     │
│     └── 特征降维 → PCA(备选方案)                          │
├─────────────────────────────────────────────────────────────┤
│  4. 模型训练与验证                                          │
│     ├── 数据集划分 → 训练/验证/测试(分层抽样)             │
│     ├── 交叉验证 → K-Fold/Stratified K-Fold                 │
│     ├── 正则化 → L1/L2防止过拟合                            │
│     └── 误差分析 → 训练误差vs验证误差对比                   │
└─────────────────────────────────────────────────────────────┘

七、关键要点总结

  1. 数据质量是第一优先级:预处理时间可能占项目三分之一,投入产出比极高。
  2. 缺失值填充必须加边界约束:ML预测填充后要做 clip(min, max),防止产生物理上不合理的值。
  3. 归一化让神经网络"有数":统一量纲后模型更容易发现问题和收敛。
  4. 特征工程策略取决于模型强度
    • 强模型(Transformer):可减少人工特征工程,直接输入原始数据。
    • 弱模型(传统ML):必须精心构造特征。
  5. 正样本比例控制在30%-70%:神经网络也需要负样本提升泛化能力,并非完全不需要"噪音"。
  6. 相关性 ≠ 因果性
    • 斯皮尔曼/皮尔逊:只能检测数值相关。
    • 长期观测 + 诞生-消亡图:更接近识别内生因果关系。
  7. 因子分析的本质是特征工程:难在找到决定性因素,而非构造函数本身。
  8. PCA是退而求其次的选择:当做不出因果分析时的自动化替代方案。
  9. 不要过度信任AI做特征工程:领域知识和物理意义比自动化工具更可靠。

八、常见问题与误区

误区 正确认识
"神经网络不需要任何预处理" 错误。神经网络对数据质量更敏感,归一化、缺失值处理必不可少。
"相关性高就是因果性强" 错误。斯皮尔曼高可能是伪相关,需用诞生-消亡图等方法验证。
"正样本越多越好" 错误。>70%正样本容易过拟合,且会丧失负样本信息。
"PCA能代替因果分析" 错误。PCA是无监督降维,可能丢失与目标相关的关键信号。
"特征越多越好" 错误。高度相关的列会引入噪声,应追求列间独立性。

九、Python工具包速查

任务 推荐库/函数
缺失值填充 sklearn.impute.SimpleImputer, KNNImputer, IterativeImputer
归一化/标准化 sklearn.preprocessing.StandardScaler, MinMaxScaler, RobustScaler
异常值检测 sklearn.ensemble.IsolationForest, sklearn.neighbors.LocalOutlierFactor
样本平衡 imbalanced-learn.SMOTE, RandomUnderSampler
特征选择 sklearn.feature_selection.SelectKBest, RFE, SelectFromModel
因果推断 dowhy, causalml, econml
持久同调 ripser, gudhi
可视化 matplotlib, seaborn, plotly

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions