purvanshjoshi/Fault-Detection-Ensemble-Pipeline

GitHub: purvanshjoshi/Fault-Detection-Ensemble-Pipeline

基于动态特征工程的三算法集成学习流水线,用于高精度传感器数据的硬件故障二分类检测。

Stars: 0 | Forks: 1

Status Badge Python Badge Scikit-Learn Badge IEEE Badge

🏭 故障诊断集成流水线

一种用于高精度硬件异常检测的高级机器学习架构


## 📌 项目概述 本仓库专为 **IEEE SB, GEHU ML Challenge** 开发,包含一个高度健壮的机器学习流水线,旨在监控和诊断嵌入式子系统的健康状况。 核心目标是二分类:基于包含 47 个数值传感器读数的匿名数据集,判断设备是在 **正常 (0)** 还是 **故障 (1)** 条件下运行。这些读数捕获了实时性能指标、内部状态和环境交互。 面对严重的类别不平衡和孤立的传感器噪声等挑战,本解决方案超越了标准分类方法。通过深度工程化构建上下文元特征,并部署三重梯度提升模型组合,该流水线最大化了预测稳定性和召回率。 ## 🧠 核心方法论与架构 我们的方法建立在两个截然不同的支柱之上:**动态特征上下文化** 和 **多算法方差缩减**。 ### 1. 动态特征工程 标准决策树在精确阈值下评估单个传感器。然而,子系统故障通常表现为跨越多个传感器的细微漂移。为了捕获这些级联异常,我们动态扩展了数据集: * 📊 **行级统计特征**: 对于记录的每一个操作周期,流水线计算所有 47 个原始传感器的 `mean`(均值)、`standard deviation`(标准差)、`minimum`(最小值)、`maximum`(最大值)、`skewness`(偏度)和 `kurtosis`(峰度)。这创建了一个“全局行为指纹”,允许模型立即检测硬件的整体振动、温度或电压方差是否激增,而不管单个传感器的数值如何。 * 📉 **降维处理 (PCA & ICA)**: 通过主成分分析 (PCA) 和独立成分分析 (ICA) 传递标准化特征集,我们隔离了宏观级别的方差。这将 47 个传感器压缩为 10 个高度独特的元信号。PCA 突出显示了最大系统性压力的轴线,而 ICA 则将独立的噪声源(如环境干扰)与真实的机械故障信号分离开来。 ### 2. 5折分层集成 传感器数据以噪声大著称,且提供的数据集存在显著的类别不平衡(约 60% 正常 vs 40% 故障)。为了防止我们的模型偏向多数“正常”类,我们实施了一个结构严谨的集成方案: * 🔄 **分层 K折交叉验证 (K=5)**: 训练数据被划分为 5 个独立的分割。每个分割中正常与故障行的比例都得到严格保留。模型在 4 个折上进行训练,并在第 5 个折上进行验证,确保它们仅在从未见过的数据上进行评估。这防止了数据泄漏,并保证了高度准确的性能指标。 * ⚙️ **三算法融合**: 没有单一算法是完美的。我们同时训练三种不同的、最先进的树架构,以相互弥补各自的盲点: 1. **XGBoost (Extreme Gradient Boosting)**:经过重度正则化(深度=6)并配置了显式的 `scale_pos_weight`,以在模型错误分类少数类故障事件时对其进行严厉惩罚。 2. **LightGBM**:因其高效的叶式生长而被利用,擅长在纯统计性的 PCA/ICA 特征密集矩阵中寻找最佳分割。 3. **CatBoost**:作为集成的稳定锚点。其对称树结构和基于目标的自动加权使其异常抵抗传统梯度提升器所遭受的过拟合。 * 🤝 **软投票机制**: 模型在评估期间不输出硬性的 0 和 1。相反,它们输出发生故障的精确数学*概率*。流水线在做出最终的 0/1 决策之前,将 XGBoost、LightGBM 和 CatBoost 的概率进行平均。 ## 📂 仓库结构 | File | Type | Description | | :--- | :--- | :--- | | `solution.py` | `` | 完整的自主机器学习流水线(预处理 -> PCA/ICA -> K折训练 -> 融合 -> 推理)。 | | `readme.txt` | `` | 官方 ML Challenge 数据集说明和问题背景指南。 | | `FINAL.csv` | `` | 成功生成的预测矩阵,格式精确符合竞赛评估要求 (`ID, CLASS`)。 | | `.gitignore` | `` | 防止追踪庞大的 `TRAIN.csv` 和 `TEST.csv` 文件,以保持仓库轻量化。 | ## 🚀 执行说明 要在本地执行流水线并复现最终预测指标,请确保你的 Python 环境配置了必要的机器学习库: ``` # 1. 安装依赖 pip install pandas numpy scikit-learn xgboost lightgbm catboost # 2. 放置数据集 # 确保 TRAIN.csv 和 TEST.csv 已安全放置在 repository 的根目录下。 # 3. 执行 Ensemble python solution.py ``` 该脚本是完全自主的。它将系统地输出每个折的训练损失,计算最终的袋外 (OOF) 评估指标(Accuracy, ROC AUC, F1),并即时生成合规的 `FINAL.csv` 文件。
标签:IEEE竞赛, Python, Scikit-Learn, 二元分类, 传感器数据分析, 信号处理, 嵌入式系统, 工业物联网, 异常检测, 故障诊断, 数据科学, 无后门, 智能制造, 机器学习管道, 梯度提升, 特征工程, 硬件健康监测, 类别不平衡处理, 资源验证, 逆向工具, 集成学习, 预测性维护