熵这个概念最早是用于热力学中,毕竟这个字是火字旁,用于衡量一个系统能量的不可用程度,熵越大,能量的不可用程度就越大;越小能量的不可用程度越低。它的物理意义是体系中混乱程度或者复杂程度的度量。
关于熵的应用也在不断拓展,从热力学到生物学、物理学,以及在时间序列分析上都有应用。
一、近似熵(Approximate Entropy, ApEn)
概念
近似熵是一种用于量化时间序列的不规则性或者复杂性的度量方式,它反映了时间序列中新的子序列产生的概率,也就是以一种条件概率的方式来衡量时间序列中新信息发生的可能性,因此越复杂的时间序列对应的近似熵就越大。
近似熵求法
1、设有长度为
N
N
N的时间序列
u
(
1
)
,
u
(
2
)
,
u
(
3
)
,
.
.
.
,
u
(
N
)
u(1),u(2),u(3),...,u(N)
u(1),u(2),u(3),...,u(N),规定一个表示相似度比较的阈值
r
r
r,再确定一个划分子序列长度的度量
m
m
m。
2、通过将原序列进行重构,这样就可以得到
(
N
−
m
+
1
)
(N - m + 1)
(N−m+1)个子序列
X
(
1
)
,
X
(
2
)
,
X
(
3
)
,
.
.
.
,
X
(
N
−
m
+
1
)
X(1),X(2),X(3),...,X(N-m+1)
X(1),X(2),X(3),...,X(N−m+1)。将每个子序列以
X
(
i
)
X(i)
X(i)表示,其中
X
(
i
)
=
u
(
i
)
,
u
(
i
+
1
)
,
u
(
i
+
2
)
,
.
.
.
,
u
(
i
+
m
−
1
)
X(i)=u(i),u(i+1),u(i+2),...,u(i+m-1)
X(i)=u(i),u(i+1),u(i+2),...,u(i+m−1)。
3、计算任意两个重构向量
X
(
i
)
X(i)
X(i)和
X
(
j
)
X(j)
X(j)之间的距离
d
m
[
X
(
i
)
,
X
(
j
)
]
d_{m}[X(i), X(j)]
dm[X(i),X(j)],其中
d
m
d_{m}
dm表示两个重构向量
X
(
j
)
X(j)
X(j)(
1
⩽
j
⩽
N
−
m
+
1
1\leqslant j \leqslant N-m+1
1⩽j⩽N−m+1)与
X
(
i
)
X(i)
X(i)之间的距离,距离
d
m
d_{m}
dm由两个向量中对应位置元素的最大差值决定。这里包括
i
=
j
i=j
i=j的距离。
4、然后统计满足以下条件的向量个数,并求出与总的统计数目之间的比值:
C
i
m
(
r
)
=
n
u
m
[
d
m
(
X
(
i
)
,
X
(
j
)
)
<
r
]
N
−
m
+
1
C_{i}^{m}(r) = \frac{num[d_{m}(X(i), X(j))<r]}{N-m+1}
Cim(r)=N−m+1num[dm(X(i),X(j))<r]这个过程称作
X
(
i
)
X(i)
X(i)的模版匹配过程,
C
i
m
(
r
)
C_{i}^{m}(r)
Cim(r)表示任意一个
X
(
j
)
X(j)
X(j)与模版之间的匹配概率。
5、定义在划分子序列个数为
m
m
m时的平均相似率:
Φ
m
(
r
)
=
∑
i
=
1
N
−
m
+
1
l
o
g
(
C
i
m
(
r
)
)
N
−
m
+
1
\Phi_{m}(r) = \frac{ \sum_{i=1}^{N-m+1}log(C_{i}^{m}(r))}{N-m+1}
Φm(r)=N−m+1∑i=1N−m+1log(Cim(r))6、按照上面1~5再计算当划分子序列个数为
m
+
1
m+1
m+1时的平均相似率
Φ
m
+
1
(
r
)
\Phi_{m+1}(r)
Φm+1(r)。
7、得近似熵:
A
p
E
n
=
Φ
m
(
r
)
−
Φ
m
+
1
(
r
)
ApEn=\Phi_{m}(r)-\Phi_{m+1}(r)
ApEn=Φm(r)−Φm+1(r)
注:关于
m
m
m和
r
r
r的选取,
m
m
m通常选择为2或者3;
r
r
r则根据实际应用的场景选择,通常选择
r
=
0.2
∗
s
t
d
r=0.2*std
r=0.2∗std,
s
t
d
std
std是原时间序列的标准差。从信息熵的角度来看,近似熵的思想是通过判断每个子序列中元素与全局子序列中每个元素之间的差异的大小来决定信息熵的大小,如果一个子序列与其他子序列之间的差异都很大,那么它满足
d
m
[
X
(
i
)
,
X
(
j
)
]
≤
r
d_{m}[X(i), X(j)]\leq r
dm[X(i),X(j)]≤r的数量就会很少,相对应它的信息量就大,因而它的信息熵就会很大。
二、样本熵(Sample Entropy, SampEn)
概念
样本熵同样也是用于衡量时间序列在单一尺度上的复杂度,与近似熵相比,具有更高的精度。样本熵是在近似熵的基础上的改进,所以求法也很类似。
样本熵的求法
1、设有长度为
N
N
N的时间序列
u
(
1
)
,
u
(
2
)
,
u
(
3
)
,
.
.
.
,
u
(
N
)
u(1),u(2),u(3),...,u(N)
u(1),u(2),u(3),...,u(N),规定一个表示相似度比较的阈值
r
r
r,再确定一个划分子序列长度的度量
m
m
m。
2、通过将原序列进行重构,这样就可以得到
(
N
−
m
+
1
)
(N - m + 1)
(N−m+1)个子序列
X
(
1
)
,
X
(
2
)
,
X
(
3
)
,
.
.
.
,
X
(
N
−
m
+
1
)
X(1),X(2),X(3),...,X(N-m+1)
X(1),X(2),X(3),...,X(N−m+1)。将每个子序列以
X
(
i
)
X(i)
X(i)表示,其中
X
(
i
)
=
u
(
i
)
,
u
(
i
+
1
)
,
u
(
i
+
2
)
,
.
.
.
,
u
(
i
+
m
−
1
)
X(i)=u(i),u(i+1),u(i+2),...,u(i+m-1)
X(i)=u(i),u(i+1),u(i+2),...,u(i+m−1)。
3、计算任意两个重构向量
X
(
i
)
X(i)
X(i)和
X
(
j
)
X(j)
X(j)之间的距离
d
m
[
X
(
i
)
,
X
(
j
)
]
d_{m}[X(i), X(j)]
dm[X(i),X(j)],其中
d
m
d_{m}
dm表示两个重构向量
X
(
j
)
X(j)
X(j)(
1
⩽
j
⩽
N
−
m
+
1
1\leqslant j \leqslant N-m+1
1⩽j⩽N−m+1)与
X
(
i
)
X(i)
X(i)之间的距离,距离
d
m
d_{m}
dm由两个向量中对应位置元素的最大差值决定。这里的
i
≠
j
i \neq j
i̸=j。
4、然后统计满足以下条件的向量个数,并求出与总的统计数目之间的比值:
B
i
m
(
r
)
=
n
u
m
[
d
m
(
X
(
i
)
,
X
(
j
)
)
<
r
]
N
−
m
B_{i}^{m}(r) = \frac{num[d_{m}(X(i), X(j))<r]}{N-m}
Bim(r)=N−mnum[dm(X(i),X(j))<r]这个过程称作
X
(
i
)
X(i)
X(i)的模版匹配过程,
B
i
m
(
r
)
B_{i}^{m}(r)
Bim(r)表示任意一个
X
(
j
)
X(j)
X(j)与模版之间的匹配概率。这里的
X
(
i
)
≠
X
(
j
)
X(i) \neq X(j)
X(i)̸=X(j),所以总的统计数就是
N
−
m
N-m
N−m。
5、求
B
i
m
(
r
)
B_{i}^{m}(r)
Bim(r)对于每个
i
i
i的平均值,也就是平均相似率,记为
B
m
(
r
)
B^{m}(r)
Bm(r):
B
m
(
r
)
=
∑
i
=
1
N
−
m
+
1
B
i
m
(
r
)
N
−
m
+
1
B^{m}(r)= \frac{ \sum_{i=1}^{N-m+1}B_{i}^{m}(r)}{N-m+1}
Bm(r)=N−m+1∑i=1N−m+1Bim(r)注意,这里的近似平均率没有取对数,这里也是和近似熵的区别。
6、按照上面的1~5步骤计算
m
+
1
m+1
m+1时的平均相似率
B
m
+
1
(
r
)
B^{m+1}(r)
Bm+1(r)。
7、这样就可以得到
N
N
N取有限值时,样本熵为:
S
a
m
p
E
n
(
N
,
m
,
r
)
=
−
l
n
[
B
m
+
1
(
r
)
B
m
(
r
)
]
SampEn(N,m,r) = -ln[\frac{B^{m+1}(r)}{B^{m}(r)}]
SampEn(N,m,r)=−ln[Bm(r)Bm+1(r)]
注:关于
m
m
m和
r
r
r的选取,
m
m
m通常选择为1或者2;
r
r
r则根据实际应用的场景选择,通常选择
r
=
0.1
∗
s
t
d
∼
0.25
∗
s
t
d
r=0.1*std \sim 0.25*std
r=0.1∗std∼0.25∗std,
s
t
d
std
std是原时间序列的标准差。近似熵是以
−
l
n
(
C
P
)
-ln(CP)
−ln(CP)为模型,为了避免出现
l
n
(
0
)
ln(0)
ln(0)的情况,所以在计算重构向量距离的时候,剔除了与自身的比较。
三、模糊熵(Fuzzy Entropy,FsEn)
概念
模糊熵是在样本熵的基础上改进得到的,模糊熵引入了模糊隶属度函数,它是一种指数函数。它的主要特点是其参数的改变对复杂性度量的结果影响很小。
模糊熵的求法
1、设有长度为
N
N
N的时间序列
u
(
1
)
,
u
(
2
)
,
u
(
3
)
,
.
.
.
,
u
(
N
)
u(1),u(2),u(3),...,u(N)
u(1),u(2),u(3),...,u(N),规定一个表示相似度比较的阈值
r
r
r,再确定一个划分子序列长度的度量
m
(
m
⩽
N
−
2
)
m\space (m\leqslant N-2)
m (m⩽N−2)。
2、通过将原序列进行重构,这样就可以得到
(
N
−
m
+
1
)
(N - m + 1)
(N−m+1)个子序列
X
(
1
)
,
X
(
2
)
,
X
(
3
)
,
.
.
.
,
X
(
N
−
m
+
1
)
X(1),X(2),X(3),...,X(N-m+1)
X(1),X(2),X(3),...,X(N−m+1)。将每个子序列以
X
(
i
)
X(i)
X(i)表示,其中
X
(
i
)
=
[
u
(
i
)
,
u
(
i
+
1
)
,
u
(
i
+
2
)
,
.
.
.
,
u
(
i
+
m
−
1
)
]
−
u
0
(
i
)
X(i)=[u(i),u(i+1),u(i+2),...,u(i+m-1)]-u_{0}(i)
X(i)=[u(i),u(i+1),u(i+2),...,u(i+m−1)]−u0(i)。这里的操作有点类似去中心化。其中
u
0
(
i
)
=
1
m
∑
j
=
0
m
−
1
u
(
i
+
j
)
u_{0}(i) = \frac{1}{m}\sum_{j=0}^{m-1}u(i+j)
u0(i)=m1j=0∑m−1u(i+j)3、计算任意两个重构向量
X
(
i
)
X(i)
X(i)和
X
(
j
)
X(j)
X(j)之间的距离
d
i
j
m
[
X
(
i
)
,
X
(
j
)
]
d^{m}_{ij}[X(i), X(j)]
dijm[X(i),X(j)],其中
d
i
j
m
d^{m}_{ij}
dijm表示两个重构向量
X
(
j
)
X(j)
X(j)(
1
⩽
j
⩽
N
−
m
+
1
1\leqslant j \leqslant N-m+1
1⩽j⩽N−m+1)与
X
(
i
)
X(i)
X(i)之间的距离,距离
d
m
d_{m}
dm由两个向量中对应位置元素的最大差值决定。这里同样
i
≠
j
i \neq j
i̸=j。
4、引入模糊隶属度函数:
A
i
j
m
=
e
x
p
[
−
(
d
i
j
m
r
)
n
]
A^{m}_{ij} = exp[-(\frac{d^{m}_{ij}}{r})^{n}]
Aijm=exp[−(rdijm)n]5、计算针对于每个
i
i
i的平均值:
C
i
m
(
r
)
=
∑
j
=
1
,
j
≠
i
N
−
m
+
1
A
i
j
m
N
−
m
C_{i}^{m}(r) = \frac{\sum^{N-m+1}_{j=1,j \neq i}A_{ij}^{m}}{N-m}
Cim(r)=N−m∑j=1,j̸=iN−m+1Aijm6、定义
Φ
m
(
r
)
=
∑
i
=
1
N
−
m
+
1
C
i
m
(
r
)
N
−
m
+
1
\Phi^{m}(r)= \frac{\sum^{N-m+1}_{i=1}C_{i}^{m}(r)}{N-m+1}
Φm(r)=N−m+1∑i=1N−m+1Cim(r)7、按照1~6步骤,求
m
+
1
m+1
m+1时的
Φ
m
+
1
(
r
)
\Phi^{m+1}(r)
Φm+1(r)。
8、模糊熵:
F
s
E
n
(
N
,
m
,
r
)
=
l
n
Φ
m
+
1
(
r
)
−
l
n
Φ
m
(
r
)
FsEn(N,m,r)=ln\Phi^{m+1}(r)-ln\Phi^{m}(r)
FsEn(N,m,r)=lnΦm+1(r)−lnΦm(r)
四、总结
关于重构向量的大小
m
m
m和相似度
r
r
r的选择都是要考虑的事情,过大的相似度会导致信息丢失,太小则会增加对噪声的敏感性。
上面几种熵,都是衡量时间序列在单一尺度上的复杂性。后面也有多尺度熵来衡量时间序列在不同尺度因子上的复杂性和自相似性。
REF
《基于 EEMD 和多尺度模糊熵的电机轴承故障特征提取方法研究 》
时间序列复杂性的度量—近似熵和样本熵
近似熵理论相关知识与代码实现
样本熵理论相关知识与代码实现
模糊熵理论相关知识与代码实现