




基于 MATLAB 实现的数据清洗与修复模型,旨在通过多种异常检测与协同填补方法,提升数据质量。以下是对该代码的全面梳理:
一、研究背景
在实际数据采集过程中,数据常因设备故障、人为误差、环境干扰等原因出现缺失值 和异常值。这些问题会严重影响后续建模与分析结果的可靠性。因此,构建一套能够自动识别异常并合理填补缺失值的数据清洗方法,具有重要的工程与科研价值。
二、主要功能
- 四类异常检测:3σ、滑动窗口 Z-score、IQR、一阶差分,并通过组合策略提高异常识别的鲁棒性。
- 异常验证与修复:基于邻域一致性判断,减少误判。
- K-means 聚类辅助清洗:在聚类簇内剔除离群点,增强清洗效果。
- 协同填补机制:融合 KNN、LSTM、随机森林三种模型的预测结果,加权得到最终填补值。
- 四类可视化图表:数据质量视图、异常分析视图、填补效果视图、性能评估视图。
- 自适应距离度量、动态聚类数、多重启动等鲁棒性设计。
三、算法步骤
- 数据读取与预处理:读取 Excel 数据,初步用列均值填补缺失值以支持异常检测。
- 异常检测 :
- 四种方法逐列计算异常标记。
- 组合策略:至少两种方法同时判定为异常才最终标记。
- 异常验证与修复:对每个异常点,若其邻域内异常比例不足 50%,则修正为正常。
- 异常转缺失:将最终认定的异常点置为 NaN,准备填补。
- K-means 聚类辅助清洗 :
- 使用完整行进行聚类,动态确定最优 k。
- 在每个簇内,基于到簇中心的距离剔除离群点(3σ),并置为缺失。
- 协同填补 :
- 对每一列的缺失位置,依次使用 KNN、随机森林、LSTM 进行预测。
- 加权融合三个模型的预测值。
- 若融合结果异常,则降级为线性插值。
- 结果保存:输出清洗后的数据至 Excel。
四、技术路线
- 异常检测:结合全局统计(3σ、IQR)与局部特征(滑动窗口 Z-score、差分),通过组合策略提升可靠性。
- 聚类辅助清洗:利用 K-means 在特征空间中对数据进行分组,在组内进一步剔除离群点。
- 填补模型 :
- KNN:基于样本间相似性,使用欧氏距离进行回归。
- 随机森林:集成学习方法,适用于非线性关系。
- LSTM:捕捉时间序列中的长期依赖,适合有前后顺序的数据。
- 融合策略:固定权重(0.4, 0.3, 0.3),兼顾局部相似性、时序性与非线性拟合能力。
五、公式原理
- 3σ 准则 :
∣x−μ∣>3σ⇒异常 |x - \mu| > 3\sigma \quad \Rightarrow \quad \text{异常} ∣x−μ∣>3σ⇒异常 - 滑动窗口 Z-score :
∣xi−μwin∣>zth⋅σwin |x_i - \mu_{\text{win}}| > z_{\text{th}} \cdot \sigma_{\text{win}} ∣xi−μwin∣>zth⋅σwin - IQR 法 :
x<Q1−1.5⋅IQR或x>Q3+1.5⋅IQR x < Q_1 - 1.5 \cdot IQR \quad \text{或} \quad x > Q_3 + 1.5 \cdot IQR x<Q1−1.5⋅IQR或x>Q3+1.5⋅IQR - 一阶差分法 :
∣Δxi−μΔ∣>dth⋅σΔ |\Delta x_i - \mu_{\Delta}| > d_{\text{th}} \cdot \sigma_{\Delta} ∣Δxi−μΔ∣>dth⋅σΔ - KNN 预测:基于特征空间中最近的 (k) 个样本的均值/加权值。
- LSTM 预测:通过门控机制学习时序依赖,输出下一时刻的预测值。
- 加权融合 :
yfusion=wKNN⋅yKNN+wLSTM⋅yLSTM+wRF⋅yRF y_{\text{fusion}} = w_{\text{KNN}} \cdot y_{\text{KNN}} + w_{\text{LSTM}} \cdot y_{\text{LSTM}} + w_{\text{RF}} \cdot y_{\text{RF}} yfusion=wKNN⋅yKNN+wLSTM⋅yLSTM+wRF⋅yRF
六、参数设定
| 参数 | 值 | 说明 |
|---|---|---|
window_size |
5 | 滑动窗口长度 |
z_threshold |
2.5 | Z-score 异常阈值 |
iqr_factor |
1.5 | IQR 倍数 |
diff_threshold |
3 | 差分异常倍数 |
optimalK |
动态(Calinski-Harabasz 准则) | 聚类数 |
distance_metric |
'euclidean' | KNN 距离度量 |
w_knn / w_lstm / w_rf |
0.4 / 0.3 / 0.3 | 模型权重 |
七、运行环境
- 软件:MATLAB R2020b
- 输入文件 :
测试数据.xlsx - 输出文件 :
测试数据_清洗后.xlsx
八、应用场景
- 工业传感器数据清洗:设备监测数据常含异常波动与缺失。
- 金融时间序列预处理:股价、交易量等数据的异常检测与填补。
- 环境监测数据:气象、水质等监测站点的数据质量控制。
- 医疗数据分析:患者监测记录中的缺失值与异常值处理。
- 智能运维:设备状态监测中的异常检测与数据修复。