时间序列嵌入在数据分析中

2024-07-25

By Ruben Winastwan

时间序列嵌入在数据分析中

时间序列是数据科学中的一个基本主题,鉴于它在金融、医疗保健、供应链管理、制造业等各种商业部门的广泛应用。在本文中,我们将讨论关于时间序列数据的所有内容。首先,我们将介绍时间序列数据的一般概念。然后,我们将探讨预处理方法,以将时间序列数据转换为适合预测任务的嵌入。那么,让我们开始吧!

理解时间序列数据 时间序列数据由在规则(度量)和不规则(事件)时间间隔记录的数据点组成,并按时间顺序排列。时间序列数据的一个定义特征是,每个数据点都与特定的时间戳相关联,如下所示的可视化:

您很可能在日常生活中遇到过这些类型的数据,例如每小时的天气温度、一个月内的网站每日流量、每分钟记录风力涡轮机叶片旋转次数的传感器数据、过去一年零售店的月销售额等。人们利用时间序列数据来了解过去模式,以推动未来的战略决策。

在处理时间序列数据时,您通常会发现以下一种或多种模式:季节性、趋势或周期性。

季节性指的是由于季节性因素(如一周中的哪一天或一年中的哪个月)导致数据以固定频率波动的模式。趋势指的是数据长期下降或增加。同时,周期性指的是数据的波动模式,类似于季节性,但没有固定频率。

时间序列数据的两种类型:

单变量时间序列数据:这涉及在连续时间间隔观察的单一时间依赖变量。每日天气温度和股票价格是单变量时间序列的两个例子。

多变量时间序列数据:这涉及在同一时间间隔记录的多个时间依赖变量。例如,除了记录天气温度外,还可以记录湿度和风速等其他因素。

理解时间序列预测 时间序列预测涉及预测时间序列数据集中时间依赖变量的未来值。例如,如果您拥有过去两年的加密货币历史价格,您可能想要预测它下周的价格。

时间序列预测不仅仅是一个理论概念,而且是不同行业各种公司在日常运营中使用的实际工具:

金融机构:银行和投资公司使用时间序列预测来预测股市趋势、货币波动,并检测客户消费模式中的异常。这有助于制定风险管理策略。

医疗保健部门:医院和医疗保健提供者利用时间序列分析来预测患者入院率、追踪疾病的传播,并监测患者的生命体征。这个强大的工具在提高患者护理和结果方面发挥着至关重要的作用。

零售业:零售商利用时间序列预测来预测销售量、分析客户购买行为,并有效管理库存水平。这有助于最小化缺货、优化定价策略,并增强整体盈利能力。

物联网(IoT):物联网(IoT)指的是数十亿个不断创建和共享数据的连接设备。我们在智能家居中看到这一点,那里的设备如恒温器和家庭中心交换传感器数据,以自动化调节温度或在无人在家时关闭灯光等任务。这种传感器的相互连接网络突显了时间序列分析对IoT数据的重要性。

制造业:制造商收集和分析时间戳数据,通过采用和改进预测性维护策略,减少影响底线的机器停机时间。

我们可以使用几种模型来进行时间序列预测。通常,时间序列预测模型分为三类:统计、机器学习和深度学习。

时间序列预测模型类别.png

统计模型 统计模型使用传统的统计方法进行预测。这一类模型的例子包括ARIMA、SARIMA、指数平滑和向量自回归。虽然统计模型在捕捉单变量时间序列数据中的基本趋势和季节性方面简单有效,但它们可能难以处理具有复杂和非线性模式的高维数据。此外,大多数统计模型仅适用于单变量数据,如果我们有多变量数据,则需要寻找另一种方法。

机器学习模型 机器学习模型通常在处理具有复杂和非线性模式的高维时间序列数据时,表现优于统计模型。这一类模型的例子包括线性回归、随机森林、梯度增强等回归算法。

机器学习模型的一个优点是它们能够融合外生数据。外生数据指的是与被预测变量无关的变量。例如,在预测天气温度时,外生数据可能包括湿度、风速和一周中的天数。整合外生数据可以显著提高模型的预测能力。

深度学习模型 自变换器架构问世以来,深度学习在时间序列预测方面的进步也在迅速发展。这一类模型的例子包括LSTM、Informer和Spacetimeformer。对于具有复杂和非线性关系的巨大时间序列数据,深度学习模型可能比机器学习和统计模型提供更优越的性能。

然而,使用深度学习模型进行时间序列预测的一个缺点是缺乏可解释性。深度学习模型的架构非常复杂,这意味着我们通常将它们视为黑盒。这在时间序列预测中变得有问题,因为可解释性通常至关重要。

用于预测的时间序列嵌入 在具有简单模式的单变量时间序列数据中,我们可以将数据原样使用,并使用统计模型执行时间序列预测。然而,如果我们想要在复杂的单变量或多变量数据上使用更先进的方法,如机器学习或深度学习,我们需要进行额外的预处理步骤。

机器学习模型希望数据以矩阵形式结构化,其中每一行代表一个观察结果,每一列代表特征。

时间序列嵌入的示例.png

现在的问题是:我们如何将我们的时间序列数据转换为机器学习模型所期望的矩阵形式?我们可以使用几种方法,如使用滞后特征、窗口特征或添加外生特征。

使用滞后特征的时间序列嵌入 滞后特征的概念非常简单:我们取n个先前的时间段的观察结果并将其作为特征包含在内。换句话说,我们将数据向前移动n个时间步长,其中n是我们可以预先设置的滞后值。

例如,假设我们将滞后值设置为1、2和3。如果我们有如下所示的每日温度数据,那么数据的转换将如下所示:

滞后特征.png

在上面的可视化中,t-1代表当前温度前一天的温度,t-2代表当前温度前两天的温度,t-3代表当前温度前三天的温度。将滞后特征作为预处理步骤添加到我们的机器学习模型中是必要的,因为它们为我们的时间序列数据提供了模式的洞察。

使用窗口特征的时间序列嵌入 除了滞后特征,我们还可以通过对一系列先前n个观察结果的汇总统计,并将其作为特征包含在内,将我们的时间序列数据转换为矩阵。汇总统计可以是任何东西,如平均值或中位数。然而,平均值是窗口特征的流行选择。

例如,假设我们想要在我们的每日温度数据上实现窗口特征,我们将窗口值设置为2。在这种情况下,我们将使用前两天的平均值作为特征来预测今天的温度。

窗口特征.png

窗口特征在训练期间对我们的机器学习模型起着重要作用,因为它们提供了我们时间序列数据的局部趋势和波动的洞察。这些特征在时间序列数据是非平稳的情况下非常有用。

时间序列嵌入与外生特征

外生特征指的是与我们想要预测的变量没有直接关系的变量。在温度数据的背景下,外生特征可以包括一周中的哪一天、湿度、风速、一年中的季度等。

然而,在整合外生特征时我们需要小心。当我们想要预测特定时间步的变量值时,所有特征的值在那个时间点应该是已知的。如果我们有像湿度和风速这样的特征,我们可能在预测时没有这些特征的值。

因此,作为经验法则,始终问自己这个问题:在需要进行预测时,你是否掌握了有关特征值的信息?如果是,你可以将这个特征作为你的时间序列嵌入的一部分添加。

时间序列预测的实现

在本节中,我们将实现一个时间序列预测任务。在此过程中,我们将使用前一节提到的所有技术将数据转换为嵌入。

对于数据集,我们将使用1981年至1990年在澳大利亚墨尔本记录的最低日温度数据,时间跨度为10年。要将数据转换为嵌入并训练回归模型,我们可以利用像scikit-learn这样的流行机器学习库。让我们加载所有必要的库和数据。

44.1.png 44.1.png

输入数据.png

我们有1981年至1990年记录的单变量天气温度数据。然而,如果我们想要训练一个用于预测任务的机器学习模型,我们不能直接使用这些数据。我们需要将数据转换为嵌入,以捕捉数据中的任何趋势或季节性,并提高我们模型的性能。

让我们实现滞后、窗口和外生特征的组合来嵌入数据。对于滞后特征,我们将滞后值设为1和7。对于窗口特征,我们将计算前14天温度的平均值和标准差。对于外生特征,我们将记录月份、年份和季度。之后,我们将删除所有包含空值的行。

44.2.png 44.2.png 44.3.png 44.3.png

最终特征嵌入.png

现在我们已经将时间序列数据转换为嵌入了!现在我们可以使用这些嵌入作为我们回归模型的输入。

在训练过程的最后一步,我们需要将数据分为训练集和测试集。为此,我们将使用前9年的数据作为训练数据,最后一年作为测试数据。然后,我们将实例化我们的回归模型,并使用训练数据进行训练。

现在我们已经训练了模型,我们可以使用它在测试数据上执行时间序列预测,并将预测结果与实际温度值进行比较。下图是预测结果的数据可视化。

时间序列预测结果.png

正如你所见,我们模型的预测结果相当不错,因为它能够捕捉测试数据中的趋势和季节性。你可以尝试调整滞后、窗口和外生特征,以微调我们机器学习模型的性能。

结论

时间序列数据由在特定时间间隔内记录的一系列观测值组成,它们可能表现出以下一种或多种模式:季节性、趋势和周期性。要使用机器学习等高级方法预测这些数据,我们需要通过引入滞后、窗口或外生特征将其转换为嵌入。这些特征在我们的机器学习模型中起着至关重要的作用,因为它们可以有效地捕捉时间序列数据的季节性、趋势或周期性特征。需要注意的是,每个特征的值都需要精心调整,考虑到数据的独特特性和领域知识。

  • Ruben Winastwan

    Ruben Winastwan

    Freelance Technical Writer

    准备好开始了吗?

    立刻创建 Zilliz Cloud 集群,存储和检索您的向量。

    免费试用 Zilliz Cloud