多尺度
在说明多尺度排列熵之前,我先说以下多尺度,通俗地讲多尺度就是对信号进行不同粒度的采样,比如有一个序列X{1,2,3,4,5,6,7,8,9,10}如果对这个序列进行二尺度分析可以将它看作五个平均值组成的序列y{1/2(1+2),1/2(3+4),1/2(5+6),1/2(7+8),1/2(9+10)},就是对原来的序列进行粗粒化处理,假设进行s尺度分析,原序列长度N除以尺度s得到新序列所包含元素的个数(floor(N/s))即向下取整。这样一来我们就可以通过不同的尺度来发现所包含的特征。这是我在看论文的时候自己的一点理解
多尺度排列熵
关于排列熵,论坛中已经有博主 ‘敲代码的quant’ 分析过了,具体排列熵算法可以参考上面那位博主的排列熵 假设原一维时间序列为X,长度为N,先将其进行粗粒化处理,进行s尺度分析,得到包含**floor(N/s)**元素的粗粒化序列,对这个粗粒化序列计算其排列熵:
- 相空间重构 ,根据hankel原理进行重构,因为我使用的matlab,在matlab中,使用hankel函数进行操作,重构出的矩阵N/s-(m+1)*t行,m列,其中m是嵌入维数嵌入维数就是将原一维序列嵌入到m维序列,t是延迟系数,通常取1,hankel矩阵的第一列与最后一行组合构成原序列。
- 计算排列熵,相空间重构之后,对每一行进行升序排列,记录它们在来位置处的索引得到索引矩阵,每一行有m个元素,那么它们共有m!种排列方式,使用matlab种perms(1:m)产生m!种组合方式的矩阵m!行m列,统计出组合矩阵中每一行在索引矩阵中出现的次数得到频数矩阵m!行1列,然后每一行除以相空间重构矩阵行数得到每种排列出现的概率,再通过求排列熵公式得出该尺度下的排列熵值。
3.重复上面的步骤可以得出不同尺度下的排列熵,每个尺度下对应一个排列熵值,如果进行s尺度的话就有s个排列熵值,在处理分析机器学习的问题时,可以将这s个值组成一个行向量作为一个特征。
一个小白,若有不对的地方,请各位多多包涵,指出错误!!