当前位置: 首页 > news >正文

熵特征提取算法对比详解:从原理到实战

一、熵的概念与特征提取基础

1.1 信息熵的起源与定义

信息熵的概念最早由克劳德·香农于1948年在其开创性论文《通信的数学理论》中提出,用于解决信息量化问题。熵本质上是对系统不确定性或混乱程度的度量。在信息论中,熵表示信息的不确定性,即信息量的期望值。

信息熵的数学定义如下:对于离散随机变量X,其概率分布为P(X=xi) = pi,则信息熵H(X)定义为:

H(X) = -Σpi * log(pi)

其中对数通常以2为底,单位是比特(bit),也可以以e为底,单位是奈特(nats)。

从特征提取的角度看,信息熵提供了一个重要洞察:熵值越大,系统的不确定性越高,包含的信息量越少;反之,熵值越小,系统的确定性越强,可能包含更多有意义的信息。这一原理成为各种熵特征提取算法的基础。

1.2 熵特征提取的基本思想

在信号处理领域,熵特征提取的基本思想是:通过计算信号在不同变换域或特征空间的熵值,来量化信号的复杂性、随机性或规律性。不同类型的熵从不同角度揭示信号特性,从而适用于各种应用场景。

传统的时域特征(如均值、方差)和频域特征(如频谱重心)虽然有用,但难以捕捉信号的复杂动态特性。而熵特征能够有效表征信号的非线性动态特性,在机械设备故障诊断、生物医学信号分析、金融时间序列预测等领域展现出独特优势。

表1:熵特征与传统特征的比较

特征类型描述重点计算复杂度适用场景
时域特征信号幅值统计特性简单振动分析、基本信号分析
频域特征信号频率分布特性周期性分析、频谱分析
熵特征信号复杂度和不确定性非线性系统、复杂动态分析

二、单变量熵特征算法

2.1 近似熵(Approximate Entropy, ApEn)

近似熵是由Pincus于1991年提出,用于度量时间序列的复杂性和规律性。其核心思想是:通过比较信号中模式重复出现的概率来评估序列的复杂性

2.1.1 算法原理

近似熵的计算步骤如下:

  1. 序列重构:给定长度为N的时间序列{u(i), i=1,2,…,N},重构m维向量:X(i) = [u(i), u(i+1), …, u(i+m-1)],其中m为嵌入维数。
  2. 距离计算:计算向量X(i)与X(j)之间的距离d[X(i), X(j)],通常使用切比雪夫距离。
  3. 相似度判断:对于每个i,统计d[X(i), X(j)] ≤ r的个数,并计算其与总数N-m+1的比值,记为Cᵢᵐ®。
  4. 概率计算:取所有Cᵢᵐ( r )的对数,并求平均值:φᵐ ( r ) = (N-m+1)⁻¹ × Σln[Cᵢᵐ( r )]。
  5. 近似熵计算:ApEn(m, r, N) = φᵐ( r ) - φᵐ⁺¹( r )。
2.1.2 参数选择与MATLAB实现

近似熵计算中,嵌入维数m通常取1或2,阈值r一般取0.1-0.25倍信号标准差。MATLAB实现代码如下:

functionApEn=approximateEntropy(data,m,r)% 近似熵计算函数% 输入:data - 输入信号,m - 嵌入维数,r - 阈值% 输出:ApEn - 近似熵值N=length(data);phi_m=0;phi_m1=0;% 计算m维情况下的φ值fori=1:N-m+1pattern_m=data(i:i+m-1);count=0;forj=1:N-m+1pattern_j=data(j:j+m-1);ifmax(abs(pattern_m-pattern_j))<=r count=count+1;endendC_i=count/(N-m+1);phi_m=phi_m+log(C_i);endphi_m=phi_m/(N-m+1);% 计算m+1维情况下的φ值fori=1:N-m pattern_m1=data(i:i+m);count=0;forj=1:N-m pattern_j=data(j:j+m);ifmax(abs(pattern_m1-pattern_j))<=r count=count+1;endendC_i=count/(N-m);phi_m1=phi_m1+log(C_i);endphi_m1=phi_m1/(N-m);ApEn=phi_m-phi_m1;end
2.1.3 优缺点与应用场景

近似熵的主要优点是算法相对简单,对数据量要求不高。但也存在明显缺点:结果缺乏一致性,对参数选择敏感,且容易产生偏差

近似熵广泛应用于生物医学信号处理,如心电图(ECG)分析、脑电图(EEG)复杂度评估,以及机械设备振动信号监测。

2.2 样本熵(Sample Entropy)

样本熵是Richman和Moorman于2000年对近似熵的改进算法,解决了近似熵的两个主要问题:偏差性和不一致性

2.2.1 算法原理与改进

样本熵的改进主要体现在:

  1. 排除自匹配:在计算相似模式时,排除向量与自身的比较,消除偏差。
  2. 一致性计算:在m维和m+1维空间中使用相同的阈值条件,确保结果一致性。

样本熵计算公式为:

SampleEn(m, r, N) = -ln[Aᵐ(r)/Bᵐ(r)]

其中Bᵐ®是m维空间中的模板匹配数,Aᵐ®是m+1维空间中的模板匹配数。

2.2.2 MATLAB实现代码
functionSampEn=sampleEntropy(data,m,r)% 样本熵计算函数% 输入:data - 输入信号,m - 嵌入维数,r - 阈值% 输出:SampEn - 样本熵值N=length(data);% 数据标准化(可选,使r与标准差相关)% data = (data - mean(data)) / std(data);B=0;A=0;% 计算m维情况下的匹配数fori=1:N-m pattern_i=data(i:i+m-1);forj=1:N-mifi==jcontinue;% 排除自匹配endpattern_j=data(j:j+m-1);ifmax(abs(pattern_i-pattern_j))<=r B=B+1;endendend% 计算m+1维情况下的匹配数fori=1:N-m-1pattern_i=data(i:i+m)
http://www.jsqmd.com/news/116167/

相关文章:

  • 全球股市估值与海洋微生物能源技术的关系
  • LLMs之RL:《LightSearcher: Efficient DeepSearch via Experiential Memory》翻译与解读
  • OncePower文件批量重命名工具
  • 高性能AI聊天工具
  • 面向对象回顾
  • 解读大数据领域数据产品的架构设计
  • 途知Bilibili多模态数据采集与AI融合解析
  • 在 WebGL 中使用 React:解析 `react-force-graph` 如何将大量节点计算托管给 Worker 而由 React 控制视图
  • 【IEEE 13 节点分配系统中的THD降低】系统的谐波分析给出了各种总线上电流和电压的谐波频谱和THD(Simulink实现)
  • 赛生新
  • 【Ubuntu】Ubuntu虚拟机配置三网段
  • 基于SSM的奶茶店管理系统【源码+文档+调试】
  • 【Koopman】遍历论、动态模态分解和库普曼算子谱特性的计算研究(Matlab代码实现)
  • 事后诸葛亮分析报告
  • Level 7 → Level 8
  • 【MTSP问题】基于鳄鱼伏击算法CAOA求解单仓库多旅行商问题附Matlab代码
  • Unity出安卓包知识点汇总
  • 深入 React 源码中的 ‘Flags’ 位掩码:引擎如何通过一个整数记录 Fiber 节点的所有待执行操作?
  • windows 使用 cmake 方式源码编译 SDL2
  • 在 Proxmox 上安装 Virtual DSM (vDSM)
  • 【路径规划】基于RRT快速探索随机树的图像地图路径规划实现3附matlab代码
  • 【HLOA-BP】基于角蜥蜴算法优化BP神经网络的风电功率预测研究(Matlab代码实现)
  • NuttX SVC系统调用机制深度解析
  • 【EI复现】基于深度强化学习的微能源网能量管理与优化策略研究(Python代码实现)
  • 【EI复现】基于主从博弈的新型城镇配电系统产消者竞价策略【IEEE33节点】(Matlab代码实现)
  • 【GWO-BP】基于灰狼算法优化BP神经网络的风电功率预测研究(Matlab代码实现)
  • Kibana:使用 ES|QL 构建地图,对国家或地区的指标进行对比
  • 电气数据|IEEE118(含风能太阳能)
  • DAPLink工程中drag-and-drop programming (MSC)功能配置
  • 从架构设计看区别:Kafka分区、RocketMQ队列、RabbitMQ交换机