【涡扇发动机RUL专题】:分段退化标签,测试集可视化、评价指标

常用的数据处理技术

一直以为涡扇发动机的RUL不会有太多人关注,没想到最近有不少粉丝问我,涡扇发动的RUL预测没怎么做单台发动机的可视化。之前由于很早之前也卡在这有一段时间,后来折腾了一下解决了这个问题,然后就基本上没有对该数据集的RUL预测有过较深入的研究。目前,主要是研究滚动轴承的RUL预测,这也是我大论文的使用的主要数据集。

分段线性退化标签处理

在这篇博客 RUL论文复现:深度卷积神经网络在预测学剩余寿命估计中的应用1 中,我主要是将的模型的简单复现,其中的这种图单台发动机可视化的图,首先要做的就是对标签进行, 分段新型标签是目前该数据集提升RUL“所谓的预测精度”的一种方法。
具体的核心代码在RUL论文复现:深度卷积神经网络在预测学剩余寿命估计中的应用-代码里也有,这里就简单贴出来一段

"""
采用分段线性退化假说:参照相关的文献,其分段的RUL认为>=130的RUL值,均标记为RUL=130
    注意:部分文献的分段RUL=125
"""
#pandas读取数据/True:以,为分割符/names:指定列名
df_train = pd.read_csv('../../dataset/train_FD001.txt',delim_whitespace=True,names=input_file_column_names)

rul = pd.DataFrame(df_train.groupby('UnitNumber')['Cycle'].max()).reset_index()
rul.columns = ['UnitNumber', 'max']
#将每一Unitnumber中最大的Cycle找到,并在原来的df_train中添加新的colum,位置为Unitnumber的左边,也即在最右端
df_train = df_train.merge(rul, on=['UnitNumber'], how='left')
#计算出RUL对应的各个值
df_train['RUL'] = df_train['max'] - df_train['Cycle']
#然后在把最大的max去掉
df_train.drop('max', axis=1, inplace=True)

df_train
def fun(x):

    if x >= 125:
        return 125
    else:
        return x

df_train['RUL']=df_train['RUL'].apply(lambda x: fun(x))

评价指标

对于评价指标,一般常用的就是RMSE和Scoring 2008的得分函数。同时也有一部分文献采用一种新的评价指标叫做:准确率。例如对于FD001的测试集,
(1)我可以计算每一台发动机的RUL预测值与真实值之间的误差,error
(2)并判断其是否在区间[-13,10]之间。
(3)如果在区间内,则计算引入计数环节。有多少error在区间内,则计数多少(M)
(4)最后计算accuracy = M/N(FD001测试集发动机的数目)×100%
具体的文件可以参考

方法 年份 作者及文献
BiLSTM-ED 2019 Yu 等 2
RULCLIPPER 2014 Ramasso 等3
import keras.backend as K
from sklearn.metrics import mean_squared_error
import numpy as np
import pandas as pd

#1.自定义评价指标RMSE
def RMSE(y_true, y_pred):
    return K.sqrt(K.mean(K.square(y_pred -y_true)))

#2.自定义PHM2008评价函数
def Scoring_2008(Y_true, Y_pred):
    h = Y_pred - Y_true
    g = (-(h-K.abs(h))/2.0)
    f = ((K.abs(h)+h)/2.0)
    return K.sum(K.exp(g/13.0)-1)+K.sum(K.exp(f/10.0)-1)
#3.[-13.0,10]之间的相对准确率
def Function_Accuracy(x):
    i=0
    for j in range(len(x)):
        if x[j]+13>=0 and x[j]<=10:
             i = i+1
    precent_acc = i/len(x)
    return precent_acc

单台发动机可视化

单台发动机的可视化,对于丰富文章的内容还是挺有必要的。此外,由于发动机有100来台,不同于公开的轴承数据集只有十几个轴承。因此,单台发动机的RUL预测还可以用于迁移学习做RUL预测,之前就看到郭一篇用该数据集做迁移学习的。文章如下Transfer learning for Remaining Useful Life Prediction Based on Consensus Self-Organizing Models4

单独可视化的效果

基本上文献上对比的单独可视化的发动机id基本上是固定,就是只有那几个发动机的整个RUL的预测效果是最好,因此,才会进行可视化展示。例如FD001#21、FD002#24、FD003#34和FD004#81等,这四台发动机 本身就很很容易预测。
但是如果要去找到表现更好的RUL预测效果,就需要了解每一台发动的具体可视化情况、因此就需要进行单台发动机的可视化。

Alt

查看任意一台发动机的RUL预测情况

为了能够找到预测效果较好的额发动机,就需要查看每一台的情况,具体如下。
可以看出102、110和111这三台的RUL预测效果很理想,因此就可以拿过来做可视化,而不用局限于其他文献。

在这里插入图片描述

总结

涡扇发动机的RUL预测上手很容易,但是想要做到较好的RMSE和Score还是很有难度的,这主要在于侯建的神经网络模型。


  1. RUL论文复现:深度卷积神经网络在预测学剩余寿命估计中的应用 ↩︎

  2. Remaining useful life estimation using a bidirectional recurrent neural network based autoencoder scheme. Mechanical Systems and Signal Processing ↩︎

  3. Investigating computational geometry for failure prognostics. International Journal of prognostics and health management, 2014 ↩︎

  4. Transfer learning for remaining useful life prediction based on consensus self-organizing models. Reliability Engineering & System Safety, 2020, ↩︎

猜你喜欢

转载自blog.csdn.net/weixin_45279187/article/details/124126195
今日推荐