赛题 A 工业机械设备故障预测 分析、代码、预测结果 | 2022年第二届中国高校大数据挑战赛
一、题目
关键词: 工业机械设备故障预测、影响因素分析、分类任务(二分类/多分类)、标签类别不平衡、数据挖掘
二、数据预处理和分析
赛题所给数据包括机械设备使用环境和工作强度的相关指标,先进行数据查看/熟悉和预处理,分析可知数据没有重复值和缺失值。
接下来注意,训练集其实存在两个异常值,如下所示:
是否发生故障为 1,可具体故障类别却为 Normal,选择删除这两条数据,避免引入噪声。下面说一下变量和预测目标的含义:
变量:
- 机器编号: 此设备的标识
- 统一规范代码: 机械设备的统一规范代码
- 机器质量等级: 质量等级分为高、中、低(HML)三个等级
- 室温(K): 设备所处厂房的室温(单位为开尔文 K)
- 机器温度(K): 工作时的机器温度(单位为开尔文 K)
- 转速(rpm): 转速(单位为每分钟的旋转次数 rpm)
- 扭矩(Nm): 扭矩(单位为牛米 Nm)
- 使用时长(min): 机器运转时长(单位为分钟 min)
预测目标:
- 是否发生故障: 取值为 0/1,0 代表设备正常运转,1 代表设备发生故障。8697:301(说明标签类别不平衡)
- 具体故障类别: 包含 6 种情况,分别是 NORMAL、HDF、OSF、PWF、TWF、RNF。HDF 代表散热故障;OSF 代表过载故障;PWF 代表电力故障;TWF 代表磨损故障;RNF 代表其他故障。8697:95:85:74:41:6(同样也标签类别不平衡)
分析发现机器编号和统一规范代码在训练集与预测集无交集,建模预测时无须用这两个变量。
机器质量等级分为高、中、低(HML)三个等级,重新编码处理。查阅资料和文献,可以构造一些新的合理的特征,比如转速(rpm)× 扭矩(Nm)、转速(rpm)× 使用时长(min)。工业机械设备故障预测这样实际的工程问题比较复杂,简单的模型(Logistic 回归、KNN 可能表现不佳),主要还是用树模型和神经网络。根据实际情况做归一化/标准化(树模型不需要)。
分类任务,处理标签类别不平衡问题:
- 数据层面的方法:欠采样/重采样/组合采样(SMOTETomelink,imblearn)技术。这个题目的数据的特征较少,少数类别占比很小,推荐做一下组合采样(但注意:建模时对训练集!测试集不要一起处理)。
- 算法层面的方法:集成学习(随机森林、XGBoost)、代价敏感学习(其实就是设置少数类别权重更大一些)
- 当做无监督学习异常检测任务,用异常检测的方法(孤立随机森林、AutoEncoder)。
熟悉数据后,对解决问题明确了思路,根据关键词找相关文献,对着问题分析开始编程建模,选择合适的方法解决问题。
三、问题分析
任务 1: 观察数据 “train data.xlsx”,自主进行数据预处理,选择合适的指标用于机械设备故障的预测并说明原因。
- 数据熟悉和预处理已经做了,任务 1 就很简单。选择合适的指标用于机械设备故障的预测,其实是个特征选择任务,综合多种方法和分析即可!
- 统计的方法(model-free):相关性分析【但要注意预测目标是分类变量,别乱套 pearson 什么的】、最大互信息系数(MIC,Python 有 minepy 库)、模型预测的方法(因为数据量为 9000,而特征数小于 10 ,因此可以这么干):递归特征消除 RFE、Boruta 方法(有新意!)、随机森林/XGBoost 等的特征重要性分数【这时候不用调参优化和评估,能建模预测,筛选出特征就行】、SHAP 可解释性。
任务 2: 设计开发模型用于判别机械设备是否发生故障,自主选取评价方式和评价指标评估模型表现。
- 预测机械设备是否发生故障,标签类别不平衡的二分类任务。评价方式可以打印那个 classification_report 和可视化混淆矩阵,评价指标推荐计算 F1-Score 和 AUC(因为标签类别不平衡),多个模型的结果用三线表展示。模型训练时注意用分层交叉验证划分训练集和测试集(不同 Fold 里保持类别的分布一致,因为少数类别挺少的,推荐使用 3 折)。调参优化,这个数据量不大,可以用网格搜索/随机搜索,但要有点特色的话,推荐用 Optuna 的贝叶斯优化,论文也能吹。
- 看见评论区小白问 A 题第二问的开发模型是什么意思?软件开发模型嘛,这个可以解答一下么。emmm,这个就是机器学习建模预测嘛,针对标签类别不平衡的二分类任务。
- 总之,前面数据处理、探索性分析、特征筛选已经做好啦,这里是机器学习建模预测(针对标签类别不平衡的二分类任务,以及选择合适的评价指标),多用几个方法和对比!(随机森林、XGBoost、LightGBM、CatBoost、AdaBoost、神经网络、DeepForest、LCE【这个比较新】),基础模型作为 Basline 看你最后补个啥的吧(如果需要,KNN、Logistic 回归啥的,对比也能看出,通常集成学习效果更好,泛化性能通常也强,对于解决实际问题)。
任务 3: 设计开发模型用于判别机械设备发生故障的具体类别(TWF/HDF/PWF/OSF/RNF),自主选取评价方式和评价指标评估模型表现。
任务 4: 利用任务 2 和任务 3 开发的模型预测 “forecast.xlsx” 中是否发生故障以及故障类别。数据 “forecast.xlsx” 与数据 “train data.xlsx” 格式类似,要求在 “forecast.xlsx” 第 8 列说明设备是否发生故障(0 或 1),在第 9 列标识出具体的故障类型(TWF/HDF/PWF/OSF/RNF)。
- 任务 3 跟任务 2 是类似的,扩展到了多分类预测。评价方式可以打印那个 classification_report。评价指标仍可以使用 F1-Score 和 AUC。
- 任务 4 其实就是任务 2 和任务 3 的模型交叉验证和调参优化达到最佳,预测输出 “forecast.xlsx” 对应的结果,填进表里。仔细一些。
任务 5:探究每类故障(TWF/HDF/PWF/OSF/RNF)的主要成因,找出与其相关的特征属性,进行量化分析,挖掘可能存在的模式/规则。
- 作为最后一个问题,量化分析和挖掘与每类故障相关的特征属性(主要成因)。
- 首先统计分析(分组、对比)看一下差异,做可视化,直观了解。结合之前的模型预测,特征重要性分数和 SHAP 可解释性。尝试一下关联分析/规则。
- 相关参考文献的分析和结果可以借鉴,解决这样的实际问题。合理即可,论文包装得好。
需要指导、代码/建模辅助、好的预测结果、精美可视化、论文完善的可以私信我,以赛促学,收获更多,不仅仅是拿个奖(降低信息差,拿个二等奖很简单,而不是只能拿个成功交钱奖)。名额有限、先到先到!有意的小伙伴可以抓紧,带你降维打击这个比赛!