数据预处理与分析方法
一、数据质量:论文的基石
核心原则: 论文方法严重依赖数据集质量,好的分析结果依赖高数据质量。处理数据可能要占整个项目三分之一甚至更多的时间。
神经网络 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验证误差对比 │
└─────────────────────────────────────────────────────────────┘
七、关键要点总结
- 数据质量是第一优先级:预处理时间可能占项目三分之一,投入产出比极高。
- 缺失值填充必须加边界约束:ML预测填充后要做
clip(min, max),防止产生物理上不合理的值。
- 归一化让神经网络"有数":统一量纲后模型更容易发现问题和收敛。
- 特征工程策略取决于模型强度:
- 强模型(Transformer):可减少人工特征工程,直接输入原始数据。
- 弱模型(传统ML):必须精心构造特征。
- 正样本比例控制在30%-70%:神经网络也需要负样本提升泛化能力,并非完全不需要"噪音"。
- 相关性 ≠ 因果性:
- 斯皮尔曼/皮尔逊:只能检测数值相关。
- 长期观测 + 诞生-消亡图:更接近识别内生因果关系。
- 因子分析的本质是特征工程:难在找到决定性因素,而非构造函数本身。
- PCA是退而求其次的选择:当做不出因果分析时的自动化替代方案。
- 不要过度信任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 |
数据预处理与分析方法
一、数据质量:论文的基石
核心原则: 论文方法严重依赖数据集质量,好的分析结果依赖高数据质量。处理数据可能要占整个项目三分之一甚至更多的时间。
神经网络 vs 机器学习对数据质量的依赖
二、缺失值处理(NaN/空值)
2.1 根据数据特征选择方法
2.2 ML预测填充的约束条件
必须做边界约束: 预测值不能超过原始数据的最大/最小值,或物理意义上的极大/极小值。
三、数据归一化与标准化
3.1 常用方法
(x - min) / (max - min)(x - μ) / σ(x - median) / IQR3.2 特征工程策略选择
最佳特征状态:若干列之间无强相关性,每列有独立的物理意义。
避免:太多高度相关的列(给神经网络引入噪声,导致梯度忽上忽下)。
四、正则化与过拟合控制
4.1 正则化方法
4.2 过拟合判断标准
4.3 样本比例建议
处理方法:SMOTE、欠采样、类别权重调整、Focal Loss。
五、数据分析方法
5.1 因子分析(本质即特征工程)
5.1.1 识别内生性相关变量的两种路径
方法一:长期观测法(本质法)
方法二:诞生-消亡尺度图法(数论/拓扑方法)
诞生-消亡图解读:
数学基础:持久同调(Persistent Homology)、生存分析(Survival Analysis)
5.2 相关性分析方法对比
关键区别:
5.3 主成分分析(PCA)
适用场景:当因果变量分析做不出来时,作为自动化降维的替代方案。
特点:
六、可视化与工具
6.1 推荐工具
6.2 完整数据预处理流程图
七、关键要点总结
clip(min, max),防止产生物理上不合理的值。八、常见问题与误区
九、Python工具包速查
sklearn.impute.SimpleImputer,KNNImputer,IterativeImputersklearn.preprocessing.StandardScaler,MinMaxScaler,RobustScalersklearn.ensemble.IsolationForest,sklearn.neighbors.LocalOutlierFactorimbalanced-learn.SMOTE,RandomUnderSamplersklearn.feature_selection.SelectKBest,RFE,SelectFromModeldowhy,causalml,econmlripser,gudhimatplotlib,seaborn,plotly