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

格拉姆角场(Gramian Angular Field, GAF)详解

格拉姆角场(Gramian Angular Field, GAF)是一种于2015年被提出的时间序列可视化与特征编码技术。其核心思想是将一维时间序列转换为二维图像,并在此过程中保留原始序列的时间依赖关系与数值特征。目前,GAF已在故障诊断、生物电信号分析、射频信号识别等多个领域得到广泛应用。

GAF的实质是借助极坐标变换格拉姆矩阵的结构,将一维序列中的“时间–数值”映射为图像中的像素关联信息。生成的图像矩阵的行列索引直接对应时间顺序,使其能够兼容主流图像识别模型(如CNN),从而挖掘出时间序列中的深层特征。

一、GAF 的核心设计逻辑

传统的一维时间序列包含两类基本信息:数值大小(如振幅)和时间顺序(如信号随时间的变化趋势)。折线图等常规方法虽能展示趋势,却难以显式表达不同时刻之间的数值关联。GAF 通过以下三步逻辑实现信息的结构化编码:

  1. 数值归一化:将原始序列缩放至[-1, 1]区间,消除量纲与异常值影响,为极坐标变换提供基础;
  2. 极坐标转换:将时间索引映射为半径,数值大小映射为角度,建立 时间-数值 在极坐标系统中的对应关系;
  3. 格拉姆矩阵构建:基于极坐标角度,通过三角运算(如余弦和/差)构造 Gram 矩阵,将数值之间的时序关系转化为图像像素值。

二、GAF 的实现步骤(标准流程)

以任意 1 维时间序列 X=[x1,x2,...,xN]X = [x_1, x_2, ..., x_N]X=[x1,x2,...,xN](N 为序列长度)为例。

步骤 1:数据归一化(Normalization)

将原始序列归一化至区间 [-1, 1] :

x~i=2(xi−min(X))max(X)−min(X)−1\Large \tilde{x}_i = \frac{2(x_i - min(X))}{max(X) - min(X)} - 1x~i=max(X)min(X)2(ximin(X))1

其中

  • min(X)min(X)min(X)max(X)max(X)max(X)分别为原始序列的最小值和最大值;
  • x~i∈[−1,1]\tilde{x}_i \in [-1, 1]x~i[1,1],归一化后不仅消除了量纲影响,还确保后续角度计算时 arccos(x~i)arccos(\tilde{x}_i)arccos(x~i) 有实数解。

步骤 2:极坐标编码(Polar Coordinate Encoding)

将归一化后的序列 X~=[x~1,x~2,...,x~N]\tilde{X} = [\tilde{x}_1, \tilde{x}_2, ..., \tilde{x}_N]X~=[x~1,x~2,...,x~N]映射到极坐标系:

  • 半径(表示时间索引):

ri=iN,i=1,2,3...,N\large r_i = \frac{i}{N}, \quad i=1,2,3...,Nri=Ni,i=1,2,3...,N
时间越晚,半径越大,靠近单位圆边缘。
每个角度 θi\theta_iθi 都能通过半径 rir_iri 对应到唯一的时间索引 iii,后续角度运算(如 θi±θj\theta_i \pm \theta_jθi±θj)能明确解读为 “时间 iii 与时间 jjj 的数值关联”。

  • 角度(表示数值大小):

θi=arccos(x~i)\large \theta_i = arccos(\tilde{x}_i)θi=arccos(x~i)

由于 x~i∈[−1,1]\tilde{x}_i \in [-1, 1]x~i[1,1],角度 θi∈[0,π]\theta_i \in [0, \pi]θi[0,π]。故数值越大,角度越小;数值越小,角度越大。

这种映射将 “数值大小” 转化为 “可加减运算的角度”,为后续关联量化提供数学工具 —— 若直接用原始数值计算差值,无法实现 “关联特征的梯度化”(如数值 1 与 - 1 的差异,用角度差 π\piπ 表达更具关联意义)。

通过此步骤,1 维序列的每个数据点 (时间i,数值xi)(\text{时间}i, \text{数值}x_i)(时间i,数值xi) 转化为极坐标下的点 (ri,θi)(r_i, \theta_i)(ri,θi),完成 “数值→角度” 的量化与 “角度 → 时间” 的绑定,为后续矩阵构建提供 “有时序意义的角度集合”。

步骤 3:格拉姆矩阵构建(Gram Matrix Construction)

基于极坐标角度构建 Gram 矩阵,其元素表示不同时间点之间的数值关系 —— 矩阵行 / 列索引直接对应时间顺序,角度运算则量化 “该顺序下的数值关联”。GAF 主要有两种形式:

(1)格拉姆角和场(Gramian Angular Summation Field, GASF)

定义矩阵元素为角度和的余弦:

GASF[i,j]=cos(θi+θj)\large \text{GASF}[i, j] = cos(\theta_i + \theta_j)GASF[i,j]=cos(θi+θj)

结合三角函数和角公式 cos(a+b)=cos(a)cos(b)−sin(a)sin(b)cos(a+b) = cos(a)cos(b) - sin(a)sin(b)cos(a+b)=cos(a)cos(b)sin(a)sin(b),可展开为:GASF[i,j]=x~i⋅x~j−1−x~i2⋅1−x~j2\large \text{GASF}[i, j] = \tilde{x}_i \cdot \tilde{x}_j - \sqrt{1 - \tilde{x}_i^2} \cdot \sqrt{1 - \tilde{x}_j^2}GASF[i,j]=x~ix~j1x~i21x~j2

GASF 强调数值之间的协同性:若两时刻数值都较大或都较小,则像素较亮;反之则暗。

  • 若两数值均为最大值(x~i=x~j=1\tilde{x}_i=\tilde{x}_j=1x~i=x~j=1θi=θj=0\theta_i=\theta_j=0θi=θj=0),则 cos(0+0)=1cos(0+0)=1cos(0+0)=1(像素亮色),表示 “完全协同”;
  • 若两数值均为最小值(x~i=x~j=−1\tilde{x}_i=\tilde{x}_j=-1x~i=x~j=1θi=θj=π\theta_i=\theta_j=\piθi=θj=π),则 cos(π+π)=1cos(\pi+\pi)=1cos(π+π)=1(像素亮色),同样表示 “完全协同”;
  • 若两数值均为中间值(x~i=x~j=0\tilde{x}_i=\tilde{x}_j=0x~i=x~j=0θi=θj=π/2\theta_i=\theta_j=\pi/2θi=θj=π/2),则 cos(π/2+π/2)=cos(π)=0cos(\pi/2+\pi/2)=cos(\pi)=0cos(π/2+π/2)=cos(π)=0(像素中间色),表示 “中等协同”;
  • 若一数值为最大、一为最小(thetai=0theta_i=0thetai=0thetaj=πtheta_j=\pithetaj=π),则 cos(0+π)=−1cos(0+\pi)=-1cos(0+π)=1(像素暗色),表示 “完全不协同”。 这种梯度化的像素值,能直观反映数值在时序中的协同趋势,而非单纯的数值大小乘积。
  • 物理意义捕捉两个时间点数值的 “协同特征”,即 “数值是否在同一趋势或同一水平上”:
(2)格拉姆角差场(Gramian Angular Difference Field, GADF)

定义矩阵元素为角度差的余弦:

GADF[i,j]=cos(θi−θj)\large \text{GADF}[i, j] = cos(\theta_i - \theta_j)GADF[i,j]=cos(θiθj)

结合三角函数差角公式 cos(a−b)=cos(a)cos(b)+sin(a)sin(b)cos(a-b) = cos(a)cos(b) + sin(a)sin(b)cos(ab)=cos(a)cos(b)+sin(a)sin(b),可展开为: GADF[i,j]=1−x~i2⋅x~j−x~i⋅1−x~j2\text{GADF}[i, j] = \sqrt{1 - \tilde{x}_i^2} \cdot \tilde{x}_j - \tilde{x}_i \cdot \sqrt{1 - \tilde{x}_j^2}GADF[i,j]=1x~i2x~jx~i1x~j2

  • GADF 强调数值之间的差异性:相邻平滑变化区域显示亮色,突变区域显示暗色。
  • 若两数值相近(θi≈θj\theta_i \approx \theta_jθiθj,如时序中缓慢变化的相邻点),则 cos(θi−θj)≈1cos(\theta_i - \theta_j) \approx 1cos(θiθj)1(像素亮色),表示 “差异小,变化平滑”;
  • 若两数值差异大(θi\theta_iθiθj\theta_jθj 相差大,如时序突变点),则 cos(θi−θj)≈−1cos(\theta_i - \theta_j) \approx -1cos(θiθj)1(像素暗色),表示 “差异大,存在突变”;
  • 相比直接计算数值差值(如 x~i−x~j\tilde{x}_i - \tilde{x}_jx~ix~j),角度差的余弦值能将差异量化为 [-1, 1] 的固定范围,直接转化为像素灰度值,且能体现 “差异的时序意义”—— 例如差值同为 0.5,“1→0.5”(下降)与 “0→0.5”(上升)的角度差余弦值不同,对应不同的像素纹理,便于后续图像模型识别趋势差异。
  • 物理意义:捕捉两个时间点数值的 “差异特征”,即 “数值变化是否平滑或突变”

最终生成的 GASF 或 GADF 是一个 N×NN \times NN×N 的矩阵,其行列索引对应原始时间顺序,像素值则表示时间点之间的数值关系。这也是 GAF 区别于传统时序特征提取的核心:既保留顺序,又量化关联。

三、GAF 的核心优势

  1. 关联量化更精准:相比传统特征(如均值、方差)仅捕捉局部统计特征,或直接数值差值仅反映局部大小,GAF 通过角度运算捕捉 “带时序意义的跨时间点关联”,信息损失极小;
  2. 天然适配图像模型:将 1 维序列转化为 2D 图像后,可直接使用成熟的图像识别模型(如 CNN、ResNet)提取深层特征 —— 无需设计复杂的 1D 特征提取器,且图像纹理能直观体现时序模式(如平滑趋势对应连续亮色,突变对应暗色断点);
  3. 抗噪声能力强:归一化步骤消除异常值干扰,极坐标编码和角度运算对小幅噪声不敏感(如噪声导致数值微小波动,角度变化可忽略),适合处理工业、通信等领域的带噪声信号(如前文中的无人机 RF 信号);
  4. 可视化与量化统一:GAF 图像的像素分布既能直观反映序列模式差异(如不同无人机 RF 信号的 GAF 图像纹理显著不同),又能通过像素值量化关联程度,兼顾人工观察与模型自动识别。

四、GAF 的典型应用场景

  1. 时间序列分类:如无人机 RF 信号分类(将 1 维频域序列转化为 FDGAF 图像,通过 GAF 捕捉频域关联特征)、心电信号异常分类(将心电序列转化为 GAF 图像,用 CNN 识别心律失常的关联模式);
  2. 故障诊断:如电机振动信号的 GAF 图像 —— 正常状态下振动序列平滑,GAF 图像呈连续亮色;故障状态下振动突变,GAF 图像出现分散暗色点,通过图像特征差异识别故障;
  3. 金融预测:将股票价格序列转化为 GAF 图像,CNN 可通过图像中 “协同 / 差异纹理”(如连续上涨对应 GASF 亮色区域)预测未来价格趋势;
  4. 环境监测:将温度、湿度等传感器时序数据转化为 GAF 图像,异常环境变化(如温度骤升)会导致 GADF 图像出现暗色断点,实现快速异常识别。

五、GAF 的改进与扩展版本

尽管 GAF 性能强大,但仍存在信息丢失、计算效率低等问题。如下为几种常见改进策略:

1. 扩展至非时域序列

  • FD-GAF:将频域序列(如FFT频谱)作为输入,构建频域角场,适用于射频信号分类;
  • TF-GAF:对时频矩阵(如STFT)分段生成GAF,再融合特征,适用于非平稳信号。

2. 信息增强型GAF

  • GAF-Diag:在对角线位置保留原始数值(cos⁡θi=x~i\cos\theta_i = \tilde{x}_icosθi=x~i),避免幅度信息丢失;
  • T-GAF:使用滑动窗口生成局部GAF子图,捕捉时间演化模式。

3. 多模态与轻量化改进

  • M-GAF:多通道信号分别生成GAF,通过特征融合提升鲁棒性;
  • Lite-GAF:采用降采样与稀疏计算,降低计算复杂度至 O(Nlog⁡N)O(N \log N)O(NlogN),适用于边缘设备。

4. 与深度学习结合

  • GAF-MAE:使用掩码自编码器对GAF图像进行预训练,适用于少样本场景;
  • GAF-Transfer:在大规模时序数据上预训练模型,迁移到特定领域(如医疗、工业)。
http://www.dtcms.com/a/391214.html

相关文章:

  • 前端开发工具Vue有哪些?常用Vue前端开发工具推荐、Vue开发工具对比与最佳实践分享
  • 基于vue的幼儿园健康管理系统0fz0y(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。
  • 第69课 分类任务: 基于BERT训练情感分类与区别二分类本质思考
  • Mysql杂志(二十)——MyISAM索引结构与B树B+树
  • Java 大视界 -- 基于 Java 的大数据实时流处理在金融高频交易数据分析中的应用
  • BonkFun 推出 USD1:Meme 币玩法的新入口
  • flutter在包含ListVIew的滚动列表页面中监听手势
  • Redis 三种集群模式详解
  • 打开hot100
  • Ant-Design Table中使用 AStatisticCountdown倒计时,鼠标在表格上移动时倒计时被重置
  • Linux crontab 定时任务工具使用
  • 阿里云RDS mysql8数据本地恢复,与本地主从同步(容器中)
  • 记录一次mysql启动失败问题解决
  • LeetCode算法练习:35.搜索插入位置
  • (1) 为什么推荐tauri框架
  • 嵌入式面试高频(八)!!!C++语言(嵌入式八股文,嵌入式面经)
  • Spring AI开发指导-工具调用
  • Linux 基本命令超详细解释第二期 | touch | cat | more | cp | mv | rm | which | find
  • [x-cmd] 安装指南
  • Altium Designer(AD24)原理图Move移动功能详细介绍图文教程
  • 部署java程序,服务器报403 Forbidden 问题的终极解决方案
  • 【LeetCode】链表经典问题解析:环形、回文与相交
  • 电磁超材料及其领域应用优势
  • STM32与Modbus RTU协议实战开发指南-fc3ab6a453
  • ArrayList 与 LinkedList 深度对比:从原理到场景的全方位解析
  • Ubuntu和windows复制粘贴互通
  • 银行回单 OCR 识别:财务自动化的 “数据入口“
  • 深兰科技陈海波的AI破局之道:打造软硬一体综合竞争力|《中国经营报》专访
  • 面试经验之mysql高级问答深度解析
  • 高质量票据识别数据集:1000张收据图像+2141个商品标注,支持OCR模型训练与文档理解研究