[Special Topic on Turbofan Engine RUL]: Segmented degradation labels, test set visualization, and evaluation indicators

Commonly used data processing techniques

I always thought that not many people would pay attention to the RUL of turbofan engines. Unexpectedly, many fans recently asked me that the RUL prediction of turbofan engines has not been visualized for a single engine. I was stuck here for a while before, and then I solved the problem after a lot of trouble. Then I basically didn’t do any in-depth research on the RUL prediction of this data set. At present, I mainly study the RUL prediction of rolling bearings, which is also the main data set used in my big thesis.

Piecewise linear degradation label processing

In this blogReappearance of RUL paper: Application of deep convolutional neural network in predictive remaining life estimation1It’s also there, so I’ll simply post a paragraph hereRUL paper: Application of deep convolutional neural networks in predictive remaining life estimation - code
The specific core code is reproduced in , I mainly reproduce the model in a simple way. In this figure, a single engine is visualized. The first thing to do is to label. The segmented new label is the current improvement of this data set. RUL is a method of "so-called prediction accuracy".

"""
采用分段线性退化假说:参照相关的文献,其分段的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))

Evaluation index

For evaluation indicators, the scoring functions of RMSE and Scoring 2008 are commonly used. At the same time, some literature uses a new evaluation index called: accuracy. For example, for the test set of FD001,
(1) I can calculate the error between the RUL predicted value and the true value of each engine, error
(2 ) and determine whether it is between the interval [-13, 10].
(3) If it is within the interval, the calculation will introduce a counting link. How many errors are within the interval, count (M)
(4) Finally calculate accuracy = M/N (number of engines in the FD001 test set) × 100%
Please refer to the specific documents

method years Authors and documents
BiLSTM-ED 2019 Yu etc. 2
RULCLIPPER 2014 Ramasso et al3
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

Single engine visualization

The visualization of a single engine is quite necessary to enrich the content of the article. In addition, since there are about 100 engines, it is different from the public bearing data set which only has a dozen bearings. Therefore, the RUL prediction of a single engine can also be used for transfer learning to make RUL prediction. I have seen Guo Yiyi use this data set for transfer learning before. The article is as followsTransfer learning for Remaining Useful Life Prediction Based on Consensus Self-Organizing Models4

The effect of separate visualization

Basically, the individually visualized engine IDs compared in the literature are basically fixed, that is, only those engines have the best prediction effect of the entire RUL, so they will be visually displayed. For example, FD001#21, FD002#24, FD003#34 and FD004#81, etc. These four engines are very easy to predict.
However, if you want to find a better RUL prediction effect, you need to understand the specific visualization situation of each engine, so you need to visualize a single engine.

Everything

Check the RUL prediction of any engine

In order to find an engine with better prediction effect, you need to check the situation of each engine, as detailed below.
It can be seen that the RUL prediction results of the three stations 102, 110 and 111 are very ideal, so they can be used for visualization without being limited to other literature.

Insert image description here

Summarize

It is easy to get started with the RUL prediction of turbofan engines, but it is still very difficult to achieve better RMSE and Score. This mainly depends on Hou Jian's neural network model.


  1. Reappearance of RUL paper: Application of deep convolutional neural network in predictive remaining life estimation ↩︎

  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, ↩︎

Guess you like

Origin blog.csdn.net/weixin_45279187/article/details/124126195