修改--修改文档

This commit is contained in:
haotian 2025-04-10 16:45:11 +08:00
parent ab6b147486
commit 98b2b755a0
3 changed files with 216 additions and 19 deletions

View File

@ -6,7 +6,7 @@
#### 1.1.1 数据集概述
NASA Turbofan Engine Degradation Simulation数据集通常称为C-MAPSS数据集是一个广泛应用于预测性维护和剩余使用寿命Remaining Useful Life, RUL预测的基准数据集。它由NASA的Prognostics Center of Excellence (PCoE)开发,旨在模拟航空发动机在运行过程中的性能退化,帮助研究人员开发和验证故障预测与健康管理PHM算法。
NASA Turbofan Engine Degradation Simulation数据集通常称为C-MAPSS数据集是一个广泛应用于预测性维护和剩余使用寿命Remaining Useful Life, RUL预测的基准数据集。它由NASA的Prognostics Center of Excellence (PCoE)开发,旨在模拟航空发动机在运行过程中的性能退化,帮助研究人员开发和验证故障预测算法。
**数据集背景**
- **目标**预测涡轮发动机的剩余使用寿命RUL即在发生故障前还能正常运行的时间周期
@ -28,9 +28,9 @@ NASA Turbofan Engine Degradation Simulation数据集通常称为C-MAPSS数据
### 1.2 数据集处理流程
1. **剩余寿命计算**:根据`RUL_FD001.txt`中每个发动机最后时刻的剩余寿命,反推前一时刻的寿命值
2. **数据格式转换**将原始txt数据转换为csv格式便于处理
3. **冗余移除**观察发现第2、3、7、8、12、19、22列数据值相同移除这些冗余列保留17列有效特征
1. **特征生成(剩余寿命计算)**:原始数据集中只存在每个发动机模拟运行后最终的剩余寿命,可以通过最终寿命和两个时刻的时间差,反推前一时刻的寿命值.
2. **数据格式转换**将原始txt数据转换为csv格式便于处理.共8个txt文件(4特征,4结果),共80000多数据.
3. **冗余数据移除**观察发现第2、3、7、8、12、19、22列数据值相同移除这些冗余列保留17列有效特征
4. **异常值检测**采用IsolationForest方法识别并移除异常值
5. **数据标准化**使用StandardScaler方法将特征缩放到[-1, 1]区间
6. **数据集划分**按照8:2的比例划分训练集和验证集
@ -68,7 +68,28 @@ NASA Turbofan Engine Degradation Simulation数据集通常称为C-MAPSS数据
#### 1.3.1 算法选择
剩余寿命预测属于回归任务,我们从以下常用回归算法中选择了四种代表性方法:
剩余寿命预测属于回归任务,我们的平台共存在以下可选的方法:
```json
{
"method": [
"LinearRegression", // 线性回归,适用于线性关系明确,且数据量适中的问题。
"PolynomialRegression", // 多项式回归,适用于非线性数据拟合,但需避免过拟合。
"Ridge", //岭回归,适用于特征多且存在共线性的线性回归问题
"Lasso", // Lasso回归,适用于需要特征选择或特征较多的线性回归问题
"ElasticNet",// 弹性网络回归, 适用于高维数据,且特征间存在线性相关的情况。
"SVR", // 支持向量回归,适用于数据具有非线性关系且数据量适中的问题。
"DecisionTreeRegressor", // 决策树回归, 适用于非线性回归,且对数据的复杂性有较高的容忍度。
"RandomForestRegressor",// 随机森林回归,适用于复杂的回归问题,尤其是特征维度较高的场景。
"XGBRegressor",// XGBoost回归,适用于大规模数据集且对预测精度要求较高的问题。
"AdaBoostRegressor",// AdaBoost回归, 适用于弱学习器的组合优化问题,特别是样本不平衡的场景。
"CatBoostRegressor",// CatBoost回归, 适用于包含大量类别特征的数据集,且数据量较大的问题。
"LGBMRegressor",// LightGBM回归,适用于大规模数据集,尤其是处理海量数据时效果优越。
"MLPRegressor"// 多层感知机,适用于需要捕捉复杂非线性关系的回归问题,尤其在数据量大时效果较好
]
}
```
现实中,结果(寿命)和特征(传感器数据)一般不是简单的线性关系.所以,我们采用以下四种适用于非线性数据的回归方法.
- RandomForestRegressor
- XGBRegressor
- LGBMRegressor
@ -76,7 +97,7 @@ NASA Turbofan Engine Degradation Simulation数据集通常称为C-MAPSS数据
#### 1.3.2 RandomForestRegressor模型
**初始参数设置**
**模型初始参数**
```json
{
"algorithm": "RandomForestRegressor",
@ -89,15 +110,15 @@ NASA Turbofan Engine Degradation Simulation数据集通常称为C-MAPSS数据
}
```
**初始训练结果**
**模型初始训练结果**
```json
{
"metrics": {
"mae": 44.86,
"mse": 3357.92,
"rmse": 57.95,
"r2": 0.445,
"explained_variance": 0.445
"mae": 44.86,// 平均绝对误差,表示预测值与真实值之差的绝对值的均值。
"mse": 3357.92,// 均方误差,表示预测值与真实值之差的平方的均值。
"rmse": 57.95, // 均方根误差,上一个数开根号
"r2": 0.445, // 决定系数,表示模型解释数据方差的能力
"explained_variance": 0.445 // 解释方差,衡量预测数据与真实数据的方差相似程度。
}
}
```
@ -107,6 +128,7 @@ NASA Turbofan Engine Degradation Simulation数据集通常称为C-MAPSS数据
- 超过55%的变异性未被模型捕获,说明初始模型拟合效果不佳
**模型优化方法**
- 实际过程中,我们往往需要调整参数进行多次实验,才能得到更好的结果.每次手动调整参数太过繁琐,平台提供了自动优化方法.只要事先指定参数搜索范围和评价指标,平台会自动搜索最优模型并保存最优参数.以下是实现的模型优化方法.
```json
{
"status": "success",
@ -160,7 +182,7 @@ NASA Turbofan Engine Degradation Simulation数据集通常称为C-MAPSS数据
```
**参数优化**
RandomForestRegressor使用GridSearchCV进行超参数调优探索以下参数组合共1296种组合
GridSearchCV 会穷举我们设定的每一种组合,来寻找最优模型.我们的参数可选值如下所示.共需要探索3x4x3x3x3x2x2=1296参数组合.
| 参数名称 | 可选值 |
|----------|--------|
@ -172,14 +194,14 @@ RandomForestRegressor使用GridSearchCV进行超参数调优探索以下参
| bootstrap | true, false |
| criterion | "squared_error", "absolute_error" |
**计算机配置**
**实验计算机配置**
- CPU: 12th Gen Intel(R) Core(TM) i5-12600KF
- 内存: 32G ddr4 3200
- GPU: NVIDIA GeForce RTX 3060 12G
**优化结果**:
- 共计1296种优化组合,每种组合耗时越30s,共耗时越11小时.随着搜索项数的增多,模型优化的时间成倍数增长.建议只在网格数较少时使用网格搜索.
- 共计1296种优化组合,每种组合约耗时32s,共耗时约11小时.随着搜索项数的增多,模型优化的时间成倍数增长.建议只在网格数较少时使用网格搜索.
```json
{
"metrics": {
@ -241,9 +263,9 @@ RandomForestRegressor使用GridSearchCV进行超参数调优探索以下参
}
```
### 1.5 研究意义与工业应用
### 1.5 工业应用价值
研究在以下几个方面具有重要意义:
案例在以下几个方面具有重要意义:
1. **预测性维护革新**:准确预测发动机剩余寿命可显著减少计划外停机时间,优化维护计划,节省维护成本
2. **安全性提升**:提前预知潜在故障风险,避免灾难性故障,特别是在航空等高风险领域
@ -348,7 +370,7 @@ Concrete Strength Prediction数据集包含1030个样本涵盖混凝土配比
- R²高达0.92,表明模型捕捉到了混凝土配方与强度之间的复杂关系
- 训练时间虽然比RandomForest长但比LGBM快得多在性能和效率之间达到良好平衡
**研究意义与行业应用**
**行业应用价值**
1. **材料设计优化**
- 减少实验室试验次数,降低材料研发成本
@ -443,6 +465,26 @@ TEP数据集共包含53个特征列
### 3.3 模型开发与评估
平台实现的分类方法
```json
"method": [
"LogisticRegression", // 逻辑回归是一种线性分类模型,使用 Sigmoid 函数将线性回归的输出映射到 [0,1] 之间,适用于二分类问题。
"SVC", // 支持向量机SVM通过寻找最大化类别间隔的超平面进行分类支持线性和非线性分类通过核函数
"SVDD",// 支持向量数据描述SVDD是一种基于支持向量机的单类分类方法通过寻找最小球面来包围正常数据点从而检测异常值。
"DecisionTreeClassifier", // 决策树基于特征的划分规则构建一棵树,通过树结构进行分类
"RandomForestClassifier", // 随机森林是一种集成学习方法,通过构建多个决策树并投票或平均进行分类,提高模型的稳定性和准确性。
"XGBClassifier", // XGBoostExtreme Gradient Boosting是一种基于梯度提升树GBDT的改进算法具有更强的正则化和并行处理能力。
"AdaBoostClassifier", // AdaBoost 是一种提升方法,它通过组合多个弱分类器来提高整体分类精度,赋予错误分类样本更高的权重。
"CatBoostClassifier", // CatBoost 是一种专为类别特征优化的梯度提升决策树方法,适用于处理高维稀疏数据。
"LGBMClassifier", // LightGBM 是一种基于直方图优化的梯度提升树方法,优化了计算效率,适用于大规模数据。
"GaussianNB", // 高斯朴素贝叶斯基于贝叶斯定理,假设特征服从高斯分布进行分类。
"KNeighborsClassifier", // K 近邻KNN是一种基于距离度量的分类算法通过找到最近的 K 个邻居来进行分类。
"MLPClassifier", // 多层感知机MLP是一种前馈神经网络通过多个隐藏层和非线性激活函数实现复杂分类任务。
"GradientBoostingClassifier", // 梯度提升决策树GBDT是一种集成学习方法通过迭代训练多个决策树使模型不断优化误差。
"DNN" // 深度神经网络DNN是一种多层神经网络通过多层非线性变换提取数据的复杂特征。
]
```
异常检测任务属于多分类问题(正常+21种故障类型我们选择了以下五种分类算法进行评估
1. SVC (Support Vector Classification)
@ -495,7 +537,7 @@ TEP数据集共包含53个特征列
| 反应物比例异常(8) | 0.84 | 0.81 | 0.82 | 原料流量比例变化 |
| 多参数异常(15) | 0.78 | 0.75 | 0.76 | 多项指标同时变化 |
#### 3.4.3 研究意义与工业价值
#### 3.4.3 工业价值
**安全生产与事故预防**
- 提前识别设备或工艺异常,防止事故发生

View File

@ -158,6 +158,35 @@ classification_algorithms:
- "自动驾驶。"
- "自然语言处理。"
CNN:
principle: "全卷积网络CNN是一种专为序列数据设计的深度学习模型通过一维卷积层提取时序特征适用于时间序列分类任务。"
advantages:
- "能够自动提取时序特征,无需手动特征工程。"
- "对序列长度不敏感,可处理变长序列。"
- "计算效率高,训练速度快。"
disadvantages:
- "需要大量数据进行训练。"
- "对超参数选择较为敏感。"
applicable_scenarios:
- "工业设备故障分类。"
- "传感器数据异常检测。"
- "时序信号分类。"
FCNN:
principle: "全连接神经网络FCNN是一种基础的前馈神经网络通过多层全连接层和非线性激活函数实现复杂分类任务。"
advantages:
- "结构简单,易于理解和实现。"
- "能够学习复杂的非线性关系。"
- "适用于各种类型的输入数据。"
disadvantages:
- "参数量大,容易过拟合。"
- "对高维数据的处理效率较低。"
- "需要大量数据进行训练。"
applicable_scenarios:
- "图像分类。"
- "文本分类。"
- "特征维度适中的分类问题。"
regression_algorithms:
LinearRegression:
@ -290,6 +319,35 @@ regression_algorithms:
- "容易过拟合,特别是在数据较少时"
applicable_scenarios: "适用于需要捕捉复杂非线性关系的回归问题,尤其在数据量大时效果较好。"
CNN:
principle: "全卷积网络回归CNN是一种专为时间序列回归设计的深度学习模型通过一维卷积层提取时序特征预测连续值。"
advantages:
- "能够自动提取时序特征,无需手动特征工程。"
- "对序列长度不敏感,可处理变长序列。"
- "计算效率高,训练速度快。"
disadvantages:
- "需要大量数据进行训练。"
- "对超参数选择较为敏感。"
applicable_scenarios:
- "设备剩余寿命预测。"
- "能源消耗预测。"
- "金融市场趋势预测。"
FCNNRegressor:
principle: "全连接神经网络回归器FCNN是一种基于多层感知机的回归模型通过多层全连接层和非线性激活函数实现连续值预测。"
advantages:
- "能够学习复杂的非线性关系。"
- "结构灵活,可根据问题复杂度调整网络深度和宽度。"
- "适用于各种类型的回归问题。"
disadvantages:
- "容易过拟合,需要适当的正则化。"
- "训练时间较长,尤其是数据量大时。"
- "对超参数选择较为敏感。"
applicable_scenarios:
- "房价预测。"
- "股票价格预测。"
- "能源消耗预测。"
clustering_algorithms:
KMeans:
principle: "K均值聚类通过最小化样本点到其最近簇中心的距离来将数据分为K个簇。"

View File

@ -199,6 +199,64 @@ classification_algorithms:
default: "3"
description: "每棵树的最大深度。"
DNN:
parameters:
- name: "hidden_layer_sizes"
type: "tuple"
default: "(100, 50)"
description: "隐藏层的神经元数量和层数。"
- name: "activation"
type: "str"
default: "relu"
description: "激活函数,可选 'identity', 'logistic', 'tanh', 'relu'。"
- name: "solver"
type: "str"
default: "adam"
description: "优化算法,可选 'lbfgs', 'sgd', 'adam'。"
- name: "alpha"
type: "float"
default: "0.0001"
description: "L2正则化参数。"
- name: "max_iter"
type: "int"
default: "200"
description: "最大迭代次数。"
FCNN:
parameters:
- name: "hidden_layers"
type: "list"
default: "[512, 256, 128]"
description: "隐藏层的神经元数量列表,列表长度决定了网络深度。"
- name: "activation"
type: "str"
default: "relu"
description: "激活函数,可选 'relu', 'tanh', 'sigmoid'等。"
- name: "dropout_rate"
type: "float"
default: "0.3"
description: "Dropout层的丢弃率用于防止过拟合。"
- name: "batch_size"
type: "int"
default: "32"
description: "训练批次大小,影响训练速度和内存使用。"
- name: "learning_rate"
type: "float"
default: "0.001"
description: "学习率,控制参数更新步长。"
- name: "epochs"
type: "int"
default: "100"
description: "训练轮数,控制模型训练的总迭代次数。"
- name: "optimizer"
type: "str"
default: "adam"
description: "优化器,可选 'adam', 'sgd', 'rmsprop'等。"
- name: "batch_normalization"
type: "bool"
default: "True"
description: "是否使用批量归一化,有助于加速训练和提高模型稳定性。"
regression_algorithms:
LinearRegression:
@ -480,6 +538,45 @@ regression_algorithms:
default: "200"
description: "最大迭代次数。"
FCNNRegressor:
parameters:
- name: "hidden_layers"
type: "list"
default: "[512, 256, 128]"
description: "隐藏层的神经元数量列表,列表长度决定了网络深度。"
- name: "activation"
type: "str"
default: "relu"
description: "激活函数,可选 'relu', 'tanh', 'sigmoid'等。"
- name: "dropout_rate"
type: "float"
default: "0.3"
description: "Dropout层的丢弃率用于防止过拟合。"
- name: "batch_size"
type: "int"
default: "32"
description: "训练批次大小,影响训练速度和内存使用。"
- name: "learning_rate"
type: "float"
default: "0.001"
description: "学习率,控制参数更新步长。"
- name: "epochs"
type: "int"
default: "100"
description: "训练轮数,控制模型训练的总迭代次数。"
- name: "optimizer"
type: "str"
default: "adam"
description: "优化器,可选 'adam', 'sgd', 'rmsprop'等。"
- name: "batch_normalization"
type: "bool"
default: "True"
description: "是否使用批量归一化,有助于加速训练和提高模型稳定性。"
- name: "loss_function"
type: "str"
default: "mse"
description: "损失函数,可选 'mse'(均方误差), 'mae'(平均绝对误差), 'huber'Huber损失等。"
clustering_algorithms:
KMeans: