引言
本期推出12种排列熵(排列熵Permutation entropy-加权排列熵Weighted-Permutation entropy及其多尺度)结合7种机器学习方法进行时序分类。并以时序分类中的机械设备的状态识别/故障诊断为例。
排列熵(Permutation entropy,翻译可能不准确哈,请谅解)于2002年发表在物理学顶级期刊 Physical Review Letters(简称PRL,中科院1区)。
针对排列熵的问题,加权排列熵(Weighted-Permutation entropy,翻译可能不准确哈,请谅解)被提出,于2013年发表在物理学顶级期刊 Physical Review E,简称PRE,和PRL为同一家族。
排列熵首次提出并运用于评估时间序列复杂性。那么排列熵可用于分析一切时间序列中,如:电能质量数据、振动数据、风速、功率、声音、温度、交通、水流、地震波、心率、脑电、肌电、金融等等,您能想到的时间序列皆有可能。
基于熵值理论的分析方法可以不经过数据的分解或变换,直接度量数据的复杂度,可完成不同时间序列的分类。解决时间序列分类问题主要有两步:
1.利用熵的方法从信号中提取信息,即信号的熵值为特征;
2.基于提取的熵值,利用机器学习方法作为分类器进行识别。
12种排列熵。5种多尺度的理论知识在中、英文期刊都有很多,可以参考其他论文,本期不在赘述。
排列熵(Permutation Entropy)
多尺度排列熵(Multiscale Permutation Entropy)
层次排列熵(Hierarchical Permutation Entropy)
复合多尺度排列熵(composite multiscale Permutation entropy)
精细复合多尺度排列熵(refined composite multiscale Permutation entropy)
时移多尺度排列熵(time-shift multiscale Permutation entropy)
加权排列熵(Weighted Permutation Entropy),
多尺度加权排列熵(Multiscale Weighted Permutation Entropy),
层次加权排列熵(Hierarchical Weighted Permutation Entropy),
复合多尺度加权排列熵(composite multiscale Weighted Permutation entropy),
精细复合多尺度加权排列熵(refined composite multiscale Weighted Permutation entropy),
时移多尺度加权排列熵(time-shift multiscale Weighted Permutation entropy)
7种机器学习方法:
极限学习机(Extreme Learning Machine,ELM)
支持向量机(Support Vector Machine, SVM)
决策树(Decision Tree,DT)
长短时记忆网络 LSTM
双向长短时记忆网络 BiLSTM
门控循环网络 GRU
概率神经网络 PNN
数据集
本文使用故障识别和诊断任务中经典的凯斯西储大学CWRU数据集。随机选择了5类状态(当然可以加入更多的状态),选用DE端的振动数据,暂且命名为正常,故障1,故障2,故障3,故障4。设置每个样本长度为1024,每类状态共100个样本,总样本大小为:500*1024。即样本数*样本长度。
样本分割设置了重叠个数,可以随意选择重叠个数进行样本划分。非重叠即为重叠个数为0的情况,具体的原理如下:
非重叠:
重叠:
特征提取
计算每个样本的熵值(以上6种熵可随意切换),形成500*n的特征空间,将特征输入到后续的分类器中。对于单个熵而言,n=1,对于多尺度熵而言,n=你设置的时间尺度。
分类器
将上述特征空间以一定的比例,划分了训练集、测试集,可非常方便地输入到任何分类器中。
暂时集成了7种常用的分类器(可随意切换,也可自行添加其他分类器):
多尺度排列熵MPE-决策树DT
结果展示:
不同状态对比
混淆矩阵及分类结果图
特征值 和 多次运行结果保存在mat中。可以方便使用matlab,python调用和查看这里考虑快速验证代码和算法,仅运行了2次,可根据实际需要修改。可以看到各状态的特征类间分离明显,类内高度聚合。分类结果还是挺好的。
层次加权排列熵MWPE-支持向量机SVM
结果展示:
友情提示
1.理论上,该代码可适用于所有时间序列分类数据集,仅需将数据格式转换成:样本数N x 特征个数M。因此,可以浅显的理解:多分类问题实质是一个数据格式转换过程;
2.理论上,该代码可替换的部分只有:数据加载和参数设置。好处是:代码修改量极少,复用率高;
3.如有matlab基础语法和代码bug问题,请多看资料,百度或者GPT解决;
Matlab代码下载
微信搜索并关注-优化算法侠,或扫描下方二维码关注,以算法名字搜索历史文章即可下载。
【时序分类-源自一区】12种排列熵Permutation entropy+7种分类器的状态识别/故障诊断-Matlab代码