跳至主要内容

数据科学家的信号处理指南

通过滤除噪声、选择合适的可视化方式、在时域与频域中发现模式等信号处理方法,从复杂信号数据中挖掘可执行的洞见。
· 15分钟 阅读

使用 AI 探索

信号处理简介

信号处理是数据科学中的一门基础学科,致力于对信号和时间序列数据进行提取、分析与处理。该领域广博而复杂。本指南将为您介绍处理信号所需的基本概念与思路,无论对象是压力传感器数据还是股市趋势,都能帮助您上手。

什么是信号和时间序列数据?

在信号处理的语境中,信号指的是随时间或空间变化的任何形式的信息。信号形式多样,从音频波形、温度读数到金融市场数据与传感器测量值不一而足。

时间序列数据是信号的一个子集,其测量值按时间顺序记录。信号可以是模拟(连续)或数字(离散)的。

连续时间与离散时间信号

信号数据可分为两大类:连续与离散。

连续信号是在连续范围内测量并记录的,包括模拟信号,如声波和温度测量(来自模拟温度计)。

离散信号在特定的、离散的点上记录。由于当今数据采集与存储的离散特性,这类数据在实际应用中更为常见。

按固定间隔采样的数字传感器测量值和金融市场数据,都是离散时间信号的例子。

信号处理在数据科学中的重要性

原始信号数据往往难以解读。

例如,想象一下播客的声波数据。信号处理使我们能够从这些原始数据中提取有价值的洞见,而这些信息初看并不明显。随后,这些信息可用于做出明智决策、识别机会,或在各个领域解决复杂问题。

信号处理在数据预处理阶段同样有用。

现实世界的数据通常含有噪声,信号处理技术可以帮助数据科学家去除不必要的干扰、离群点与伪影,从而得到更干净、更可靠的数据集。干净的数据对于准确建模、预测以及其他高级数据分析任务至关重要。此外,信号处理也是许多数据科学中高级算法与模型的核心,例如时间序列预测、异常检测以及图像与语音识别。

图 1:一幅描绘播客主持人听力图(声频)的艺术化图像。这类听力图属于信号的一种示例。图片来源:DALL-E。

图 1:一幅描绘播客主持人听力图(声频)的艺术化图像。这类听力图属于信号的一种示例。图片来源:DALL-E。

时间序列数据

时间序列数据是一类按时间排序的信号,每个数据点都关联有特定时间戳。这种时间结构使得分析趋势、季节性与周期模式成为可能。关于Python 的时间序列数据分析与R 的时间序列有许多可用资源。

时间序列预测与机器学习的特征提取

时间序列预测是信号处理的一个分支,旨在基于历史数据点预测未来值。预测在各行业中至关重要,使企业能够做出明智决策、优化资源配置并预判市场趋势。其过程包括分析时间序列数据中的模式与趋势,以尝试预测未来的时间步。

如需更详细的时间序列预测介绍,请参阅时间序列预测教程。

信号数据的可视化技术

信号通常通过可视化最易理解。针对不同类型的信号数据,常用几类图表。

折线图是可视化信号数据的一种简单而强大的方式,其中 y 轴表示信号值,x 轴对应某种序列度量,如时间、米数或样本编号。这类图可以直观展示趋势与波动。

图 2:使用折线图可视化信号数据的示例。在此例中,x 轴为样本编号。

音频波形是可视化声音的常见方式。您在播放音乐或收听播客时可能见过这类图,因为不少音乐应用会实时显示。

另一类常见可视化是声谱图或听力图。而股票数据常以一系列箱形图(称为蜡烛图)来展示随时间的趋势。

图 3:描绘声音的音频波形示例。图片来源:DALL-E。

图 3:描绘声音的音频波形示例。图片来源:DALL-E。

图 4:用于股票市场分析的蜡烛图示例。图片来源

图 4:用于股票市场分析的蜡烛图示例。图片来源

信号处理工具

用于信号处理的 MATLAB 与 Python 简介

在信号处理与时间序列分析领域,常用的两种编程工具是 MATLAB 和 Python。

MATLAB 由 MathWorks 开发,是工程、数学与科学研究中广泛使用的强大而灵活的工具。其详尽的文档、内置的信号处理函数以及友好的界面与可视化能力,使其成为很好的选择。主要缺点是工具价格较高。

如果您有兴趣用 MATLAB 进行信号处理,请查看 Signal Processing Toolbox 与 Audio Toolbox,二者均提供大量交互式示例文档。

Python 是免费的替代方案,许多数据科学家用它处理信号任务。如果您想从 Matlab 转到 Python,欢迎查看 DataCamp 的面向 MATLAB 用户的 Python 课程!

NumPy、Pandas 与 SciPy 等库为时间序列数据分析提供支持。尽管 Python 文档丰富,但其开源特性有时会让您难以为特定任务找到所需的文档。

对于信号处理任务,我推荐这个 Github 仓库。

信号处理中的预处理与滤波技术

数据预处理是信号处理中的关键步骤,为准确且有意义的分析奠定基础。根据您的数据与分析目标,这可能意味着通过重采样与插值方法处理不规则或缺失的数据,或使用各种滤波器对数据进行平滑。

处理不规则或缺失数据:重采样与插值

处理信号数据时,您可能会遇到采样间隔不规则或数据点缺失的情况,从而影响分析与建模。

重采样是一种用来标准化数据间隔的技术。它可涉及上采样(提高数据点频率)或下采样(降低数据点频率),以获得规则的时间序列。

插值方法用于在数据点缺失或需要估计时进行填补。常见插值技术包括线性插值、样条插值与基于时间的插值。

这些方法通过基于周围数据点估计取值来填补空缺,使信号数据保持连续与平滑。

从本质上说,重采样与插值都运用相似的思想以实现不同的目标。它们都在解读数据中的模式,并沿着这种模式“猜测”数据的形状,尽管所用手段不同。

图 5:该图展示了一个高度简化的示例,说明插值与重采样如何清理杂乱数据。

图 5:该图展示了一个高度简化的示例,说明插值与重采样如何清理杂乱数据。

处理噪声与离群点

噪声与离群点在信号数据中很常见,且会给获取洞见带来挑战。

离群点是与整体模式显著偏离的数据点,而噪声是指数据中的随机波动,可能掩盖潜在模式。

可通过数据截断或温莎化等技术管理离群点,即将极端值限定在某一阈值内。

图 6:有时信号的开头或结尾存在噪声或离群点,您可以通过截断数据集来解决。

图 6:有时信号的开头或结尾存在噪声或离群点,您可以通过截断数据集来解决。

或者,也可在分析中单独处理离群点,具体取决于其重要性及对整体结果的影响。

最终,您处理噪声与离群点的方法将取决于具体数据集。

图 7:如果离群点很少,您可以手动删除。或者,您也可以移除任何超出某个幅值范围的值。

图 7:如果离群点很少,您可以手动删除。或者,您也可以移除任何超出某个幅值范围的值。

处理噪声的一种方法是平滑,以减少随机波动的影响。

此技术有助于在抑制短期噪声的同时揭示长期趋势。平滑往往更像是一门艺术:既要足以降低背景噪声,又不能过度以至于连同信号一起被抹去。鉴于滤波至关重要,我们稍后将更全面地讨论。

滚动窗口与移动平均

移动平均与滚动窗口是简单而有效的滤波技术,用于平滑时间序列数据并降低噪声影响。滚动窗口是指在滑动窗口内计算特定统计量(如均值或标准差)。此方法有助于捕捉数据中的局部模式与变化。

移动平均是滚动窗口更常见的应用之一,其中计算的统计量为均值。它能平滑短期波动,更易辨识长期趋势与模式。移动平均在金融数据分析中特别有用,常用于研究价格随时间的趋势。

图 8:使用滚动平均平滑信号的示例。此处窗口大小为 3,意味着右图中的每个数据点都是左图中对应三个数据点的平均值。

图 8:使用滚动平均平滑信号的示例。此处窗口大小为 3,意味着右图中的每个数据点都是左图中对应三个数据点的平均值。

低通、高通与带通滤波器

低通、高通与带通滤波器是基于频率的滤波技术,用于通过或阻断信号的特定频率成分。

低通滤波器允许低频信号通过,同时衰减高频成分,适合去除噪声并保留缓慢变化的趋势。

相反,高通滤波器允许高频信号通过,滤除低频成分。高通滤波器常用于突出短时事件或时间序列中的突变。

带通滤波器允许特定频带内的信号通过,同时阻断其他频率。在特定频率范围包含关键信息的应用中十分有用。例如,在音频处理中,可用带通滤波器提取对应人声的特定频率。

图 9:演示不同类型滤波器如何影响信号。

图 9:演示不同类型滤波器如何影响信号。

其他平滑滤波器与技术

为您的特定数据集选择合适的滤波或平滑技术可能较耗时。

一个不错的方法是根据您想要隔离的内容,从高带通或低带通(二者择一)开始,再逐步迭代调整。

如果简单技术不足以充分隔离目标模式,您可以尝试以下更复杂的滤波技术:

时域分析

思考信号的两大方式是时域与频域。我们先从时域开始。

时域分析涉及随时间考察信号与数据点的行为。本节将探讨时域分析的三个重要方面:自相关与互相关、时域特征(均值、方差、偏度、峰度等)以及趋势分析与去趋势方法。

时域特征:均值、方差、偏度与峰度

在时域中计算各类统计特征有助于深入理解时间序列的行为。

均值反映数据的集中趋势,可大致了解数据的整体水平。

图 10:信号均值的示例。红线表示蓝色信号分布的均值。

图 10:信号均值的示例。红线表示蓝色信号分布的均值。

方差度量数据点围绕均值的离散程度或分散程度。

图 11:信号方差指标的示例。图中的绿色线显示了信号围绕均值的方差范围。

图 11:信号方差指标的示例。图中的绿色线显示了信号围绕均值的方差范围。

偏度量化分布的不对称性,指示数据是否主要分布在一侧。

图 12:信号偏度指标的示例。当将信号绘制为按幅值统计频率的直方图时,可通过直方图尾部的不对称性来可视化偏度。

图 12:信号偏度指标的示例。当将信号绘制为按幅值统计频率的直方图时,可通过直方图尾部的不对称性来可视化偏度。

峰度度量分布尾部的厚度,表征极端值的存在。

图 13:信号峰度指标的示例。当将信号绘制为幅值的箱线图时,可通过箱体高度来可视化峰度。

图 13:信号峰度指标的示例。当将信号绘制为幅值的箱线图时,可通过箱体高度来可视化峰度。

图 13:信号峰度指标的示例。当将信号绘制为幅值的箱线图时,可通过箱体高度来可视化峰度。

如果您处理过数据分布,这些统计量应当并不陌生。对于信号数据,这些度量与用于分布的定义相同。

自相关与互相关

自相关衡量时间序列与其滞后版本之间的相似性。它有助于识别数据中的重复模式或周期行为。

在特定滞后量上出现强自相关,表明该周期性的重复模式。例如,在病毒感染数据中,自相关可以揭示与暴发相关的季节性。

图 10:使用自相关识别信号周期性的示例。

图 14:使用自相关识别信号周期性的示例。在该示例中,我对一个噪声很大的信号应用带通滤波以降低噪声,然后使用自相关评估信号在不同时间滞后上的自相关程度。从该自相关图可见,信号约以 1000 为周期重复。

互相关用于探索两个不同信号之间的关系。它有助于发现两个变量之间的相关性与滞后关联。例如,可用互相关研究温度与能耗随时间的关系。

图 11:互相关示例。

图 15:互相关示例。在该示例中,我们有两个信号,一个可能具有一定周期性,另一个周期性更强。通过互相关,我们想观察这两个信号在各个时间滞后上的相关性。从下方的图可见,负滞后时相关性更强,正滞后时几乎无相关。

趋势分析与去趋势方法

趋势分析有助于理解信号的长期基本行为。趋势表示数据在较长时期内的总体走向。趋势可以是上升(增加)、下降(减少)或平稳(稳定)。

图 12:三种趋势的示例:上升趋势、平稳趋势和下降趋势。

图 12:三种趋势的示例:上升趋势、平稳趋势和下降趋势。

去趋势方法用于将潜在趋势从信号中分离,从而将分析聚焦于其余成分,如季节性与不规则波动。

常见的去趋势方法之一是移动平均,即从原始信号中减去滚动窗口的平均值。其他方法包括拟合多项式或使用如Hodrick-Prescott 滤波器之类的技术。

表面上看,去趋势很像平滑,但二者执行的任务不同。平滑是降低噪声,使长期趋势更清晰;而去趋势是移除长期趋势,使周期性或季节性更明显。根据您的分析目标,二者可能都会用到。

将原始信号与去趋势后的信号一同可视化,有助于更好地理解数据行为。折线图或茎叶图都能有效并排展示趋势与去趋势后的数据。

图 13:该示例展示了去趋势的威力。

图 16:该示例展示了去趋势的威力。原始信号具有上升趋势。去趋势后,所得模式不再呈上升走势。去除趋势后,可再应用平滑滤波器以更好地观察潜在模式。

频域分析

频域分析是一种强大的技术,能够帮助您深入洞察数据的频率成分。

傅里叶变换与功率谱密度(PSD)

傅里叶变换是一种数学技术,用于将时域信号转换为相应的频域表示。它将原始信号分解为不同频率的正弦函数之和。所得的频谱清晰展示了时间序列数据中存在的频率成分。

频谱的可视化通常使用称为功率谱密度(PSD)的图。PSD 图显示每个频率成分的功率(或幅值平方)。PSD 图中的峰值表示数据中的主导频率,可揭示潜在模式或周期行为。

功率谱密度是频域分析中的基础工具,展示功率随频率的分布。它提供关于信号数据中各频率成分强度的信息。

PSD 图中的高峰表示强频率成分,低峰表示较弱成分。

PSD 图通常使用对数刻度,以增强对弱频率的可见性。这些图有助于识别可能对应于数据中特定模式或现象的重要频率。

图 14:使用功率谱密度图(PSD)检查信号中不同频率成分强度的示例。

图 17:使用功率谱密度图(PSD)检查信号中不同频率成分强度的示例。原始信号先通过带通滤波,然后使用 Matlab 的内置函数绘制 PSD。

声谱图与时频分析

声谱图是一种有价值的可视化技术,用于检查信号的频率内容如何随时间变化。它通过将信号划分为小段,并对每段计算傅里叶变换,来提供数据的时频表示。

通过用色彩映射表示每个频率成分的功率或幅值,声谱图可呈现数据的三维视图。声谱图中颜色较暖的区域表示在特定时间段内更强的频率成分,而颜色较冷的区域则表明较弱或不存在的频率。

时频分析有助于检测在时域或频域单独观察时不易发现的瞬态事件或频率特征变化。这在语音与音频处理等应用中特别有用,因为不同音素或声音在时间上可能具有不同的频率成分。

图 15:将信号可视化为声谱图的示例。

图 18:将信号可视化为声谱图的示例。原始信号经过带通滤波后,使用 Matlab 的默认函数绘制声谱图。

信号处理的应用

信号处理的应用广泛,涵盖多个领域。下面让我们看看数据科学中一些突出的信号处理应用:

金融与股市预测

信号处理在金融行业影响深远,使得对金融时间序列数据的深度分析成为可能。

通过应用滤波技术、趋势分析和时域特征,数据科学家可以识别股市数据中的模式、趋势和异常。

预测模型用于预测市场趋势、股价以及风险评估。这些预测对于投资者、交易员和金融机构做出明智决策与有效管理投资组合至关重要。

如需更深入了解金融数据分析,请查看 DataCamp 的一系列金融数据课程,或这门Python 金融概念入门课程。

物联网(IoT)传感器数据

物联网(IoT)从各类传感器与设备中产生海量时间序列数据。

信号处理有助于从这些数据中提取有价值的信息,进而形成可执行的洞见。通过分析 IoT 传感器数据,数据科学家可以监测设备健康状况、检测异常并优化性能。

例如,在智能制造中,采用信号处理技术可预测机械故障并防止停机,从而提升生产力并降低维护成本。

DataCamp 提供一门优秀的Python 分析 IoT 数据课程。不妨一试!

医疗与生物医学信号处理

信号处理被用于医疗与生物医学应用中,持续监测生理信号对患者护理至关重要。

例如,在心电图(ECG)和脑电图(EEG)中,信号处理技术有助于检测异常、评估患者状况,并辅助诊断与治疗规划。

此外,时域与频域分析有助于挖掘医学信号中的潜在模式,推动疾病检测与人体生理机理理解的进步。

除医疗应用外,信号处理在生物医学研究中也被广泛使用。它可用于分析基因组数据及其他生物信号,为疾病机制、药物发现与个性化医疗提供宝贵见解。

请查看这门使用部分相关技术的 DataCamp 课程:Python 生物医学图像分析。

语音与音频处理

在语音与音频处理中,信号处理技术用于分析和解读口语与音频信号。

自动语音识别(ASR)系统、语音助手与语音情感识别依赖信号处理算法提取相关特征并识别语音模式。

音频处理应用(如降噪、音频增强与语音合成)也大量采用信号处理方法。

如果您想进一步学习,DataCamp 有一门出色的Python 口语语言处理课程。

图像与视频处理

信号处理也运用于图像与视频分析,支持图像识别、目标检测与视频监控等应用。

傅里叶变换等技术用于图像压缩与特征提取。诸如声谱图的时频分析在视频与音频信号同步中发挥关键作用,推动读唇与手势识别等技术。

关于图像处理的更多信息,推荐查看 DataCamp 的Python 图像处理课程。

传感器数据分析

信号处理是传感器数据分析的核心,被用于环境监测、天气预报与工业自动化等领域。它有助于识别传感器数据中的模式与趋势,从而实现预测性维护、异常检测,以及系统与流程优化。

科学与研究应用

信号处理在众多科学研究中得到应用,从压力信号到地震微动,再到电压信号,无所不包。相关技术甚至被用来识别蜂鸟振翼发出的声音!

数据科学中信号处理的最佳实践与建议

信号处理方法强大,但要获得准确而有意义的结果,需遵循最佳实践并进行周全考量。以下是确保信号处理成功的一些要点。

数据预处理与清洗

在深入应用信号处理技术之前,彻底的数据预处理与清洗至关重要!这包括处理缺失值、应对离群点,以及对数据进行归一化以确保一致性与可靠性。诸如滤波等降噪技术有助于去除会影响信号分析的不必要干扰。

用可视化获取洞见

可视化是信号处理中极为强大的工具。它能清晰展现数据模式以及所用技术的效果。

强烈建议您在预处理与分析的每个步骤都对数据进行可视化。

时域图、频谱图与声谱图都是信号的常见可视化方式。

为特定问题选择合适的信号处理技术

信号处理包含广泛的技术,每种技术都适用于特定的数据类型与问题。理解数据的性质与分析目标对于选择合适的方法至关重要。对于时间序列数据,傅里叶变换与自相关等技术有助于进行频率与模式分析。图像数据则需要边缘检测与特征提取等图像处理技术。

结语

信号处理是数据科学的重要组成部分,赋能专业人士在各行各业从复杂数据中提取有价值的洞见。从金融到医疗,从语音到图像处理,信号分析在将原始数据转化为可执行洞见方面发挥着重要作用。

机器学习与计算能力的最新进展推动了创新信号处理技术的发展。请参阅另一篇文章,了解如何将机器学习用于您的信号数据。

首次承担信号数据处理任务可能会让人望而生畏。希望本教程已为您提供所需工具,帮助您隔离语音模式、检测地震,或预测股价上涨。

如果这篇文章引起了您的兴趣,DataCamp 提供多份可跟练的代码项目,值得一试。这里有一份Python 时间分析,以及一份案例研究用 Python 分析泰晤士河的时间序列。另外,还有关于Python 与电子表格的时间序列教程。

Amberle McKee

作者

Amberle McKee

我拥有博士学位,在生物研究环境中从事数据相关工作已有13年。我使用包括 Python、MATLAB 和 R 在内的多种编程语言开发软件。我热衷于与世界分享我对学习的热爱。

主题