格拉姆角场(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(xi−min(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~i⋅x~j−1−x~i2 ⋅1−x~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=0,thetaj=π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(a−b)=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]=1−x~i2 ⋅x~j−x~i⋅1−x~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~i−x~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:在大规模时序数据上预训练模型,迁移到特定领域(如医疗、工业)。
相关推荐
文心快码BaiduComate1 天前
百度云与光本位签署战略合作:用AI Agent 重构芯片研发流程
前端·人工智能·架构
风象南1 天前
Claude Code这个隐藏技能,让我告别PPT焦虑
人工智能·后端
Mintopia1 天前
OpenClaw 对软件行业产生的影响
人工智能
陈广亮1 天前
构建具有长期记忆的 AI Agent:从设计模式到生产实践
人工智能
会写代码的柯基犬1 天前
DeepSeek vs Kimi vs Qwen —— AI 生成俄罗斯方块代码效果横评
人工智能·llm
Mintopia1 天前
OpenClaw 是什么?为什么节后热度如此之高?
人工智能
爱可生开源社区1 天前
DBA 的未来?八位行业先锋的年度圆桌讨论
人工智能·dba
叁两1 天前
用opencode打造全自动公众号写作流水线,AI 代笔太香了!
前端·人工智能·agent
前端付豪1 天前
LangChain记忆:通过Memory记住上次的对话细节
人工智能·python·langchain