前言
样本熵是一个衡量复杂度的指标,如果没有一系列熵的概念做基础的话,要理解样本熵是一件非常困难的事情。在我刚开始接触这个概念的时候,也是四处寻找相关的教程与介绍,但是都没能让我很好的理解并使用它,这使得我非常的苦恼,但是皇天不负有心人,通过长时间高频率的努力,我终于攻克了样本熵这个难关,进入了应用样本熵的入门阶段,为了避免遗忘和帮助刚刚接触样本熵的人减少一点苦恼,我开了这么一个博客用来介绍记录样本熵,如果有不足的地方还希望大家不吝赐教。
理论分析
概念
样本熵是一种用于度量时间序列复杂性的方法,通常用于时间序列复杂行分析和故障病理诊断。也就是你这个时间序列复杂不复杂,前后复杂度是不是一致的。
算法表述
- 通过测量提取一个等频信号,组成一个N维的时间序列u(1),u(2),……,u(N).
- 假设向量长度为m,将时间序列重构为m维的向量X(1),X(2),…,X(N-m+1),其中X ( i ) = [ u ( i ) , u ( i + 1 ) , . . . , u ( i + m − 1 ) ] 。
- 对于1 ≤ i ≤ N − m + 1 ,统计满足d [ X ( i ) , X ( j ) ] ≤ r ) 的向量个数,其中r为相似度的度量值。
其中,d [ X ( i ) , X ( j ) ]为两个向量之间对应元素之间距离的最大值,记 B m B^m Bm=满足条件的向量个数除以N-M。
将所有的向量X ( i ) 都计算一遍 B m B^m Bm,并且除以N-M+1进行归一化。 - 将向量长度加1,重复步骤3计算得到 B m + 1 B^{m+1} Bm+1
- 样本熵就等于-ln( B m + 1 B^{m+1} Bm+1/ B m B^m Bm)
个人见解
样本熵能够用来判断复杂度的关键是取得一个合理的向量长度m和相似度度量值r。其中m是决定样本熵范围的一个变量,而r是决定能否度量出复杂度的一个变量。
代码实现
代码是使用python实现的,感兴趣的可以下载交流。
代码链接: https://download.csdn.net/download/qq_42784992/13944128.