当前位置: 首页 > 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.rkmt.cn/news/128123.html

相关文章:

  • 【风光场景生成】基于改进ISODATA的负荷曲线聚类算法(Matlab代码实现)
  • 跳出局部优化思维:构建高性能大规模RAG系统的系统级方法论!
  • 基于SSM的奶茶店管理系统【源码+文档+调试】
  • 智能销售助手-langfuse评测策略
  • 网站集成微软账户一键登录(支持Windows Hello 面容、指纹等)-微软Azure的Oatuh2.0的集成
  • 2025.12.20
  • 告警通知方式:邮件、短信、Slack、钉钉等告警通知方式的配置
  • 转换成小写字母
  • 我发现Zstd压缩级太高内存涨 后来调level参数优化平衡
  • 研究生必备!9个AI写论文工具,10分钟生成1万字问卷类论文含真实参考文献
  • 【毕设】车辆故障管理系统的设计实现(任务书+文献综述+答辩PPT+论文)
  • AI元人文构想:迈向人类与AI的意义共治
  • 深度解析:为什么 React 不允许在 `useEffect` 里同步调用导致重渲染的 `setState`?
  • 火山引擎 MongoDB 进化史:从扛住抖音流量洪峰到 AI 数据底座 - 指南
  • 【C2000系列DSP的Bootloader详解】实现过程、流程图与示例代码
  • 手写实现 `useLazyValue`:一个只有在组件真正进入视口时才进行昂贵计算的自定义 Hook
  • 跟着Datawhale动手学Ollama - TASK3: Ollama API 的使用
  • 【C2000系列DSP的Bootloader详解】如何利用脚本自动合并Bin文件
  • 016.递归枚举
  • 1小时微调 Gemma 3 270M 端侧模型与部署全流程
  • FlutterOpenHarmony国际化与多语言支持
  • 【Parallel-R1 代码实现】sft
  • 2025年海南和田玉推荐商家排名TOP10(三亚+海口首选攻略) - charlieruizvin
  • 微观交通流仿真软件:AIMSUN_(21).微观仿真与其他交通软件的集成
  • python 02
  • C语言 文件的操作
  • 食品级螺杆泵选型经验
  • Docker 安装 Tomcat
  • 免费降AI率的工具怎么选?认准这2个降低AI率的工具,避免白忙活
  • 降AI率的工具怎么选?认准这2个免费降低AI率的工具,嘎嘎快!