【论文阅读】-- Visual Analytics for Model Selection in Time Series Analysis

时间序列分析中模型选择的可视化分析

    • 摘要
    • 1 引言
    • 2 相关工作
    • 3 问题表征
      • 3.1 Box-Jenkins 方法论
      • 3.2 ARIMA 和季节性 ARIMA 模型
      • 3.3 模型规范
      • 3.4 模型拟合
      • 3.5 模型诊断
    • 4 需求分析
    • 5 VA 用于时间序列分析中的模型选择
      • 5.1 VA选型流程说明
      • 5.2 TiMoVA 原型
        • 5.2.1 实施选择
        • 5.2.2 图形用户界面
        • 5.2.3 连接 VA 流程描述和 BoxJenkins 方法
        • 5.2.4 交互式引导模型选择环境
        • 5.2.5 设计原理讨论
    • 6 评价
      • 6.1 使用场景
        • 6.1.1 选型
        • 6.1.2 量程选择
      • 6.2 评估用户体验
    • 7 结论和未来工作
    • 致谢
    • 参考文献


期刊: IEEE Transactions on Visualization and Computer Graphics(发表日期: 2013-12
作者: Markus Bogl; Wolfgang Aigner; Peter Filzmoser; Tim Lammarsch; Silvia Miksch; Alexander Rind

在这里插入图片描述

摘要

对于流行病学、经济或环境科学等许多应用领域的领域专家来说,时间序列分析中的模型选择是一项具有挑战性的任务。用于此任务的方法需要人类判断和自动计算的紧密结合。然而,统计软件工具并不能通过交互式可视界面充分支持这种组合。我们提出了一个可视化分析流程来指导领域专家完成此任务。为此,我们开发了 TiMoVA 原型,该原型根据用户故事和专家对用户体验的迭代反馈来实现此流程。该原型通过使用场景、流行病学示例数据集以及对两位外部统计领域专家的采访进行了评估。专家反馈和使用场景的洞察表明,TiMoVA 能够通过反馈周期短的交互式可视化界面来支持领域专家完成模型选择任务。

关键词:可视化分析、模型选择、可视化交互、时间序列分析、协调和多视图

1 引言

统计时间序列分析是由不同领域的专家执行的一项具有挑战性的任务。一个实际的应用场景是,例如,公共卫生官员预测明年因心血管原因需要治疗的人数。另一种情况是要为季节性流感患者的数量做好准备。要分析的数据集是从一段时间内收集的观察结果中获得的,最好是定期和等间隔的,并且最好没有缺失值。这样的数据集称为时间序列。文献 [4,6,7,15,37] 中存在一系列分析这些时间序列的方法、算法和模型。此外,它们在最常见的统计计算软件工具中实现。在我们的工作中,我们关注最突出和最大的一类模型,即 ARIMA 和季节性 ARIMA 模型 [7]。这些模型应用于各种实际应用领域。讨论 ARIMA 模型的大量工作反映了该模型类的重要性 [4,6,7,15,16,37],并且存在一个称为 Box-Jenkins 方法 [6] 的模型选择既定流程。我们在第 3 节中简要介绍并讨论了这种方法及其理论基础。然而,正如我们在第 2 节中讨论的那样,当前可用的软件工具并不能适当支持 BoxJenkins 方法的工作流程。因此,对领域专家的支持将有利于工作时间序列分析中的模型选择.

本着可视化分析(VA)的精神,克服上述缺点的一个潜在方法是“将自动化分析技术与交互式可视化相结合”[21, 40]。这就提出了如何使用 VA 方法来支持时间序列分析的模型选择任务的问题。根据设计研究的特点[27, 35],我们需要对领域问题有一个全面的了解。我们提供其特征来判断我们的解决方案并分析第 3 节中的任务。在第 4 节中,我们确定目标用户,制定任务要求,并指定时间序列分析中使用的数据。

这项工作的主要目标是使用成熟的信息可视化技术 [1, 11] 并将其应用于特定的目标问题。因此,我们根据现有的 VA 流程描述 [21, 25] 定义了 VA 流程,并实现了一个原型来促进它。 VA流程和原型的设计和实现由信息可视化和统计专家利用用户体验的形成性评估进行迭代细化和判断[24]。我们在第 5 节中介绍了这一细化过程的结果,其中我们讨论了 VA 过程描述和我们的原型。我们将原型命名为 TiMoVA,它是时间序列分析、模型选择和 VA 的缩写。

除了形成性评估和迭代设计之外,我们还通过定义使用场景并将原型应用于示例数据集来评估原型的最终版本。我们在第 6 节中介绍了评估,其中我们将使用场景应用于示例数据集。此外,我们还通过与两位外部领域专家进行反馈会议来评估用户体验。我们使用这种非正式的用户反馈来争论我们的目标用户如何评估 TiMoVA [24]。在对结果(第 5 节)和评估(第 6 节)的讨论中,我们描述了原型中使用的视觉编码和交互机制以及它们如何满足我们的要求。

特别是,我们论文(第 7 节)的主要贡献解决了交互式视觉引导的问题,以通过以下方式简化时间序列分析中的模型选择:

  • 选择自相关和偏自相关函数图中的模型阶数,领域专家可以在其中获取有关模型阶数的信息,
  • 在调整模型顺序的同时,向领域专家提供模型结果的即时视觉反馈,以及
  • 可视化模型转换,使领域专家能够决定模型是否改进。

2 相关工作

遵循设计研究方法 [27, 35],我们将现有的和已知的 VA 方法和过程描述应用于时间序列分析中模型选择的领域问题。我们的工作基于面向时间的数据可视化技术 [1, 11] 并使用最先进的 VA 流程描述 [21, 25, 40]。

所有主要的数学和统计软件工具都实现了最先进的时间序列分析方法和模型,我们在第 3 节中对其进行了简要描述。我们考虑了一些工具,例如用于统计计算的 R 项目 [30]、SAS JMP [ 34]、MATLAB [39]、EVIEWS [20]、Mathematica [42]、Stata [38] 和 Gretl [14]。除了 R 基础包之外,所有这些工具都支持通过菜单驱动的用户界面进行时间序列分析和模型。单独的计算和可视化需要由用户通过菜单和输入表单或通过命令行方法启动。所有这些方法都缺少的是在选择模型时直接浏览和直观比较模型的指导。相反,有必要决定一组模型或计算一大堆模型并手动将它们排列在可视化中以进行比较。总而言之,它们不能很好地支持迭代 Box-Jenkins 方法 [6] 中单独步骤的重复执行。

一个值得注意的解决方案是 R 的 x12GUI [23] 包。它为 x12 [22] 包提供了交互式图形用户界面,为 X-12-ARIMA 软件提供了包装函数。他们的方法的重点是探索时间序列和季节性时间序列调整的结果,并使用户能够对异常值进行交互式手动编辑[23]。然而,用户界面支持用户仅使用基于表单的输入来选择时间序列并调整 X-12-ARIMA 调用的参数。它还提供计算模型的历史记录,允许加载以前的设置,但不能浏览和直接比较它们。

因为我们在统计时间序列分析中存在非常具体的模型选择目标问题,所以据我们所知,VA 中只有遥远相关的工作,例如 TimeSearcher [9, 10] 和视觉交互式时间序列预处理的工作 [ 3]。这两种方法都将 VA 方法应用于面向时间的数据,但任务及其解决方案有所不同。

受这些发现的启发,我们在下一节中提供了必要的背景信息,以更详细地描述和指定我们的目标问题,并进一步奠定我们的动机。

3 问题表征

在本节中,我们提供领域问题的表征[35]并讨论模型选择所需的任务。

示例数据集和任务。使用时间序列分析的一个重要领域是公共卫生和流行病学。我们在第 6.1 节中选择了该领域的一个数据集进行评估,并在下面说明了可能的分析任务。该数据集包含 NMMAPS 研究中 1987 年至 2000 年洛杉矶 75 岁及以上人群每日因心血管疾病死亡的人数 [29, 33]。一种可能的情况是,公共卫生官员需要预测心血管疾病的预期死亡人数才能启动预防计划。为了进行预测,卫生官员必须根据给定的数据找到一个模型。 Box-Jenkins 方法是解决此任务的标准方法。我们在图 2 和下文中描述了这种方法。
在这里插入图片描述

3.1 Box-Jenkins 方法论

Box-Jenkins 方法 [6] 是一个迭代过程,用于为给定时间序列选择适当的模型(见图 2)。它已广泛应用于时间序列分析,是一种既定的模型选择方法[4,7,15,37]。要查找或选择给定时间序列的模型,根据 Box 等人的说法。 [7] 有必要:
(1)利用有关潜在机制的不完整理论知识以及理论和实践的经验来考虑一类有用的通用模型 。按模型的一般类别 Box 等人。 [7] 指 ARIMA 和季节性 ARIMA 模型组件的任何子类组合。将这些模型直接拟合到数据会过于广泛且耗时。
(2) 应用方法通过决定模型阶数来选择适当的简约(见下文)模型。这决定了模型中参数的数量并给出了一些粗略的估计。
(3) 将模型与数据拟合并估计其参数。
(4) 最后,通过诊断检查模型,以发现可能的不拟合情况并找出其原因。

重复这些步骤,直到找到合适的模型,该模型随后可用于预测(见图 2)。

该方法有时会简化为简化版本[15],其中对一般类别模型的决策 (1) 和对可以暂时考虑的模型的识别 (2) 结合起来并命名为模型规范。步骤(3)重命名为模型拟合,步骤(4)重命名为模型诊断。我们在第 3.3、3.4 和 3.5 节中对这些单独的步骤进行了更详细的描述。

George Box 的名言总结了模型选择的关键:“本质上,所有模型都是错误的,但有些模型是有用的”[5,p.1]。 424]。在介绍 Box-Jenkins 方法时,Box 和 Jenkins [6] 使用的语言表明时间序列存在一个“有用”和“足够”的模型,但我们不能假设它是一个“真实”或“正确”的模型。 “ 模型。此类模型的不确定性通过使用术语“暂时娱乐模型”[4](参见第 3.4 节)来直接表达。

简约原则。模型选择过程中的一个重要原则是简约原则[7]。阿尔伯特·爱因斯坦 (Albert Einstein) 的名言对此进行了描述:“一切都应该尽可能简单,但不能过于简单”[4,第 4 页]。 18]。在模型选择过程中,这意味着如果有不同的候选模型能够充分表示时间序列,则参数最少的模型是优选的[15]。

在本节中,我们介绍了如何为给定时间序列找到适当模型的方法。这种方法是针对特定类别的模型 [6] 引入的,我们将在下一节中对其进行描述。

3.2 ARIMA 和季节性 ARIMA 模型

使用经典回归通常无法充分解释时间序列[37]。因此,存在替代模型。我们简要描述了不同模型的关键思想并进行了解释,但没有提供这些模型正式定义的完整细节。这些形式定义和细节对于理解和争论设计选择以及解释第 5 节和第 6 节中视觉表示的解释不是必需的。有关更多细节和形式定义,我们参考时间序列分析中的文献 [4, 6 、7、15、37]。

自回归 (AR) 模型将当前值 xt 解释为时间序列中 p 个过去值的函数。过去值 p 的数量也称为模型阶数,因此 AR§ 模型是 p 阶的自回归模型。移动平均 (MA) 模型将当前值 xt 解释为当前白噪声项和 q 个过去白噪声项的线性组合。过去的白噪声项的数量又称为模型阶数,因此,MA(q) 模型是 q 阶移动平均模型。

在某些情况下,仅使用 AR 或 MA 模型对时间序列进行建模是有问题的,因为它需要具有许多参数的高阶模型。这与简约原则相冲突。对于这些情况,Box 和 Jenkins [6] 提出了自回归移动平均 (ARMA) 模型。为了实现简约性,ARMA 模型结合了 AR 和 MA 模型的思想。 p 和 q 阶的自回归移动平均 ARMA(p, q) 模型是 p 阶 AR§ 模型部分和 q 阶 MA(q) 模型部分的组合。如果时间序列是平稳的,这意味着不存在季节性影响或趋势,则可以应用此类模型。

在许多实际情况中,由于趋势,时间序列是非平稳的。可以通过应用差分运算(有时称为去趋势)将此时间序列转换为平稳时间序列。为了恢复原始时间序列,需要对差分时间序列进行聚合,也称为积分。这些模型称为自回归积分移动平均 (ARIMA) 模型。 ARIMA(p, d, q) 表示时间序列的第 d 个差分是 ARMA(p, q) 模型。

要在模型中包含季节性项,需要将普通的非季节性 ARIMA 模型与扩展到季节性周期 s 的 ARIMA 模型相结合。因此,AR 和 MA 模型被扩展到季节周期 s 的时移(称为滞后),并使用大写字母 P 和 Q 表示季节模型阶数。季节性差异 D 也可以像非季节性差异 d 一样应用,但会随着季节周期 s 的时间变化而变化,称为季节滞后。因此,附加的季节性影响被消除。所得模型称为季节性自回归积分移动平均 (SARIMA) 模型,表示为 ARIMA(p, d, q) × (P, D, Q)s。

在第 3.1 节中介绍了 Box-Jenkins 方法以及本节中该方法中使用的模型类别之后,我们将在接下来的第 3.3、3.4 和 3.5 节中讨论此迭代模型选择过程的各个步骤。

3.3 模型规范

对于模型规范的任务,目标是确定适合给定时间序列的一类模型,选择差分级别并确定模型的顺序,该顺序指定模型中使用的参数数量。实现此目标的第一步是查看给定的时间序列。通常这是通过查看线图中的时间序列来完成的。应用所有必需的变换(例如差分运算或对数变换)后,将检查自相关函数 (ACF) 和偏自相关函数 (PACF) 图以支持模型阶数的决策。

ACF/PACF 图。 ACF 图是尖峰图,它是一种特殊类型的条形图,将 ACF 表示为滞后函数。 PACF 图同样是 PACF 作为滞后函数的图。对于ACF和PACF的正式定义,我们再次参考时间序列分析中的文献[4,6,7,15,37],并给出基本思想如下:ACF是任意时间序列中的两个值具有特定的时间偏移(称为滞后)。 PACF 是具有特定滞后的任意两点之间的相关性,其中消除了中间点的线性影响。此 PACF 图与包含线性相关性的 ACF 图相结合,称为 ACF/PACF 图,使我们能够选择模型的参数数量。除了时间序列图之外,ACF/PACF 图还提供了差异水平和季节性差异的第一个想法。在图 3 中,我们显示了 ACF/PACF 图示例。 ACF 和 PACF 绘制在 y 轴上,滞后绘制在 x 轴上。在这种情况下,标签是季节性滞后,这意味着一个滞后代表一个季节性周期。非季节性滞后是一的几分之一,具体取决于季节长度。例如,在一年有 12 个月且季节长度为 12 的数据集中,季节滞后为 1, 2, 。 。 。非季节性滞后为 1 12 , 2 12 , . 。 。 。
在这里插入图片描述

使用自回归模型、移动平均模型、ACF 和 PACF 的定义,可以识别 AR、MA 和 ARMA 模型的 ACF 和 PACF 的基本行为 [37]。同样,可以以类似的方式描述模型的季节性成分的行为。该行为如表 1 所示。如果我们考虑季节性滞后 1, 2, . 。 。在图 3 中,我们注意到 ACF 图正在逐渐减少,而 PACF 图在滞后 2 处截止。根据表 1,这表明,适合季节性分量的模型可能是 AR(2)12 模型。继续针对非季节性滞后,我们得到一组可能的适当模型。

在这里插入图片描述

3.4 模型拟合

在上一节中,我们讨论了如何选择和配置模型顺序。结果是一个模型,例如季节性 ARIMA(p, d, q) × (P, D, Q)s 模型,其中差异水平 d、季节差异水平 D、季节长度 s、参数p和q的数量以及季节参数P和Q的数量根据上述步骤设置。请注意,参数 p、q、P 和 Q 决定模型的阶数,即参数的数量。差值 d 和 D 是时间序列的变换。博克斯等人。 [7]为此使用术语“暂时娱乐模型”。一旦确定了模型,就将其拟合到时间序列数据以估计模型的未知参数。有多种方法来估计参数。最重要的是最大似然估计。其他方法有矩量法、最小二乘估计和无条件最小二乘。有关详细信息和理论讨论,我们请参阅[37,第 14 页]。 121-140]。

3.5 模型诊断

为了评估模型代表底层时间序列的程度,应用了模型诊断方法。通过分析残差来诊断模型,残差是指模型无法解释的剩余部分。残差的探索性分析是通过如图 5 的 (4a-d) 所示的图来完成的。如果模型很好地拟合了时间序列,则剩余部分预计会表现得像白噪声。这可以通过四种方式进行评估: (4a) 随时间绘制标准化残差。任何非随机事件都可以揭示剩余的潜在过程。 (4b) 计算残差的 ACF 并在滞后上绘制,以检查残差中是否没有剩余结构。 (4c) 如果模型拟合良好,则标准化残差预计呈标准正态分布。该分布通过分位数-分位数图进行检查 [11]。 (4d) Ljung-Box 统计量图 [8, 26] 是一个测试,有助于检查每个滞后的残差是否独立。如果对于所有滞后,p 值对于预先指定的显着性水平(如虚线所示)并不显着,则可以假设残差内不存在剩余的自相关。如果所有这些都满足,则模型已指定良好,否则需要重新调整模型。明确的决定通常是不可能的,并且基于人类的判断和经验。
在这里插入图片描述

信息标准。除了诊断图之外,还可以检查信息标准。它们为决定模型的适用性提供了良好的基础。经常使用的准则包括 Akaike 信息准则(AIC)、其偏差校正形式、AICc 和贝叶斯信息准则(BIC)[37]。与 AICc 相比,AICc 对于较小的样本表现得非常好,而 BIC 则非常适合较大的样本。为了获得足够的模型,如第 3.1 节中所述,目标是为模型选择许多参数,从而最小化标准。根据不同型号的这些值,可以暂时决定其中之一。有关信息标准的更多详细信息,请参阅[37,第 14 页]。 50-53]。我们在图 5 的区域 (5) 中的 TiMoVA 图形用户界面中显示了此类信息标准。

根据我们对领域问题、相关工作和专家反馈的发现,我们得出的结论是,这些任务目前由领域专家执行起来很麻烦。显然,将计算和可视化与额外的直观交互和视觉反馈相结合可以改善完成这些任务的方式并支持领域专家的工作。为了实现这一目标,我们分析了需求并在下一节中介绍它们。

4 需求分析

在本节中,我们明确描述我们的目标用户,提炼第 3 节中讨论的模型选择的任务和挑战,并使用用户故事来制定它们并呈现所使用的数据。

目标用户。我们的目标用户是使用时间序列分析的任何领域的领域专家,例如生物学、化学、流行病学、经济或环境研究。用户必须熟悉统计和时间序列分析。需要这些技能来解释和理解时间序列和时间序列模型的视觉表示以及模型拟合和选择标准。

任务。用户故事有助于以一种易于在项目团队、客户或其他利益相关者的讨论中使用的方式制定需求。用户故事从极限编程 (XP) 软件开发方法 [2] 发展而来,在其他精益和敏捷软件开发方法 [12, 13] 中发挥着重要作用。通常一开始只知道覆盖范围广泛的高层目标和要求。这些目标和要求被制定为用户故事。通过细化过程,高级用户故事被迭代地分解为较小的用户故事,直到它们非常具体。覆盖范围广泛的高级用户故事也称为史诗[12, 13]。

我们在项目团队的重复会议和整个形成性评估中制定和完善了用户故事。我们使用这些用户故事来制定 VA 流程并实现原型。这些故事是从我们的目标用户的角度编写的。以下史诗阐述了高级目标:

作为领域专家(用户),我想为给定的时间序列找到一个合适的模型,以便我可以将该模型用于不同的目的,例如预测。

定义用户故事是为了更详细地了解需求[13]:

  • 作为领域专家(用户),我想选择时间序列中的某个区域,以便我可以使用时间序列的任何子区域来进行模型选择步骤。
  • …,我想查看时间序列和模型的所有重要可视化,以便我可以决定模型并一目了然地评估模型与时间序列的拟合程度。
  • …,我想在可视化提供有关这些模型阶数的信息的地方调整模型阶数,以便我可以直观地找到合适的模型。
  • …,我想包含和排除模型的季节性成分和季节性参数输入,以便我可以比较季节性影响,如果不需要季节性成分,它们不会分散我的注意力。
  • …,我想了解新选择的模型与之前的模型相比如何,以便我可以确定一个模型是否优于另一个模型。

时间序列数据。我们工作中考虑的数据是第 1 节中介绍的时间序列。我们假设以等距离散时间间隔观察到单变量数据值,且没有缺失值。

5 VA 用于时间序列分析中的模型选择

在第 3 节中,我们讨论了问题域的特征和任务。我们将 VA 确定为定义 VA 流程描述的基础,以克服上述问题。在本节和接下来的第 6 节中,我们依靠我们的发现来介绍我们工作的主要贡献和结果。为此,我们在第 5.1 节中提供了用于原型实现的定制 VA 流程的描述。在第 5.2 节中,我们提供了最终设计并讨论了原型中的设计选择和交互技术。这些结果的设计和实施是为了满足第 4 节中指定的要求。

5.1 VA选型流程说明

在这里插入图片描述

我们用于模型选择的 VA 流程描述的基础是图 2 中所示并在 3.1 节中讨论的 Box-Jenkins 方法。我们在图4中显示的过程描述是面向时间的数据的VA过程[25]在时间序列分析中模型选择领域问题上的应用。该过程的目标是为给定的时间序列选择适当的模型。第 3 节简要讨论了统计时间序列分析中这一过程的理论基础的细节。在下文中,我们详细描述了模型选择的 VA 过程,为读者准备第 5.2.3 节中关于两者之间联系的讨论。原型的图形用户界面(图 5)、模型选择的 VA 流程描述(图 4)和 Box-Jenkins 方法(图 2)。

图 2 中的时间序列是图 4 中作为输入提供的数据。领域知识基于经验和先前的分析。交互式视觉界面用于可视化数据(Di),以决定模型的类别并调整参数的数量以及差异程度。为了解释交互式视觉界面,使用了关于时间序列分析 (Kt) 以及关于时间序列和时间序列模型可视化 (Kp) 的领域知识。基于这些知识以及时间序列和时间序列模型的视觉表示,形成假设(Vt)。通过调整差分水平 (Ad) 和模型阶数 (Ap),对假设进行细化。根据假设,使用给定参数 (Bm) 估计模型,以基于输入数据 (Ai) 构建模型。使用有关时间序列模型和模型诊断 (Km) 的领域知识以及标准化残差、信息标准和模型参数 (Vd) 的可视化来分析生成的模型。在此过程的迭代细化中,通过以下方式获得见解:(1) 解释交互式视觉界面 (Iv) 决定可视化基础模型的适合度,(2) 导致适当模型 (Im) 的参数估计, (3) 假设构建的细化过程 (Ih)。结果是具有估计参数的模型,该模型足以满足给定的时间序列,并且可用于预测。用户交互区域以灰色突出显示,并指​​示流程步骤,其中用户通过用户交互成为流程的一部分。

5.2 TiMoVA 原型

根据上面的 VA 流程描述和用户案例(第 4 节),我们实现了 TiMoVA 原型。我们改进了我们的设计以及用户故事的制定,以快速开发工作原型并获取用户反馈[35]。在这里我们展示最终版本。

5.2.1 实施选择

在详细讨论设计选择和实现思路之前,我们先强调一下原型最重要的设计决策。我们用 Java 实现了原型。对于动态可视化,我们使用了软件框架 prefuse [18]。作为面向时间的数据的 API,我们使用了 TimeBench,一个面向时间的数据的软件库 [31]。

一个重要的决定是使用 R 项目进行统计计算 [30] 作为时间序列分析和其他计算任务的综合工具包。 R 提供了文献中已知的多种方法,我们的原型设计方式允许我们使用这些方法进行统计计算。使用 Java/R 接口 (JRI) 使我们能够将 R 与 Java 结合使用。 JRI 是 R 中 rJava 包 [41] 的一部分。我们选择 Java,因为有了 prefuse,我们在交互性方面比在 R 中实现有更多的可能性。此外,还给出了使用 TimeBench 的其他项目的可扩展性和互连性。

由于时间序列分析中的计算可能非常耗时,尤其是对于大型数据集,因此在执行计算时用户界面仍然响应用户输入非常重要。这是通过使用 Java 线程和缓存来实现的,它允许计算机预先计算模型并根据请求提供它们。因此,即使计算在后台运行,用户界面也能对用户输入显示出良好的反应时间。

5.2.2 图形用户界面

原型的图形用户界面基于我们在 5.1 节中定义的 VA 过程描述的工作流程。这些可视化的灵感来自 R 中使用的可视化和成熟的可视化技术 [1, 11]。我们扩展了这些可视化,以便用户能够交互式地选择模型。结果是实现时间序列分析中模型选择的 VA 过程的原型。

TiMoVA 原型由协调的多个视图组成[32]。图 5 和第 6.1 节中使用场景的补充视频显示了图形用户界面和五个区域的概述。在图 5 中,(1) 显示随时间绘制的时间序列(时间序列图)。在此视图中,可以探索时间序列并选择用于模型选择的特定范围。该范围选择如图 1 的左上角 (1) 所示。范围选择的交互细节将在第 5.2.4 节中讨论。区域 (2) 中的工具箱和区域 (3) 中的 ACF/PACF 图用于模型选择。在 ACF/PACF 图 (3) 中,用户可以直接在图中调整模型参数的数量。区域 (4a-d) 中的图将参数估计的结果显示为残差分析的图。区域 (5) 中的表格显示模型历史记录,包括信息标准。
在这里插入图片描述

图 6 更详细地显示了模型选择工具箱 (2) 和 ACF 图 (3)。这些是模型订单配置的区域。在工具箱中,最大滞后输入会更改下面的 ACF/PACF 图中的滞后数以及区域 (4b) 中残差的 ACF 图中的滞后数。 “包括季节参数”复选框可启用或禁用模型中季节分量的配置,同时还可启用或禁用“季节跨度”以及“季节差异”滑块的输入。使用“差异”滑块和“季节差异”滑块可以选择参数 d 和季节参数 D 的数字。图 6 中的连续垂直线可以沿 x 轴拖动来选择模型的阶数,这与参数的数量同义。 p 有一条垂直线,它是模型 AR§ 的自回归部分的阶数。 q 还有另一条垂直线,它是模型 MA(q) 的移动平均部分的阶数。如果通过复选框启用了季节性成分,则会出现两条附加的连续垂直线,一条代表 P,它是模型 AR§ 的季节性成分的自回归部分的阶数,另一条代表 Q,它是是模型 MA(Q)s 季节性分量的移动平均部分的阶数。可以使用工具箱中的季节性跨度旋转框来调整季节性跨度。

TiMoVA 显示模型诊断 (4a-d) 和 (5) 的视觉表示,以评估模型对于给定时间序列的适应性。在该区域中显示了参数估计的结果。我们在 3.5 节中讨论了用于此任务的模型诊断和视觉表示。目标是直观地探索时间序列中模型未描述的剩余部分,并检查它是否可能是白噪声。原型用户界面中标准化残差的视觉表示受到 R 中使用的表示的启发。在图 5 中,显示残差分析图的区域用 (4a-d) 编号。有关这些图的详细信息,请参见第 3.5 节。

除了残差分析之外,我们还在 TiMoVA 的设计中纳入了第 3.5 节中介绍的信息标准。图 5 中的信息标准表 (5) 显示了先前选择的模型的历史记录。第一列表示残差图的过渡中使用的颜色。第二列描述模型,其他列显示模型信息标准的值。模型标准的单元格根据其值进行着色,指示该模型的该标准与模型历史记录中的其他标准相比是更好(最小)还是更差。图例显示在该表下方。

白噪声的残差分析和测试本质上是对数据集随机性的测试,在统计学中是多种多样的,并且这些方法在 R 中有许多实现。在原型的实现中,我们重点关注在时间序列分析文献 [4,6,7,15,37]。希望使用户能够调整和定制她或他想要在该过程中使用的测试和可视化。这是未来工作中可能包含的功能。

5.2.3 连接 VA 流程描述和 BoxJenkins 方法

在本段中,我们描述了如何在 TiMoVA 中实现第 5.1 节中定义的 VA 过程描述。我们详细解释了用户界面如何促进 VA 流程并为模型选择任务创建较短的反馈周期。对于流程中的每个转换,我们提供图 4 中的相应标签、图 2 中原始 Box-Jenkins 方法的原点数量以及图 5 中用户界面中受影响区域的数量。在用户界面中,我们决定一个通用模型类(图 2:(1);Di,Vt )。通过调整差异水平和模型参数的数量(图5:2、3;Ad、Ap、Vt),我们确定了所谓的暂定模型(图2:(2);Bm)。相关推子的调整会触发系统估计模型参数(图 2:(3);Ai)并立即在用户界面中显示结果诊断(图 5:4a-d、5;图 2:( 4);Vd,Di,Vt);获得的见解(Ih、Iv、Im)以及领域知识的应用(Kt、Kp、Km

5.2.4 交互式引导模型选择环境

在第 5.2.2 节中,我们介绍了时间序列图和范围选择,如图 1 的左上角 (1) 所示。该区域的主要交互是时间序列的导航和特定时间间隔的选择。底部的水平范围滑块允许用户放大并浏览时间序列。当更改范围滑块上的缩放级别时,时间轴会调整以显示合适的时间分辨率。当鼠标光标移动到其位置时,会根据需要提供有关时间点的详细信息。可以专门选择用于模型选择的时间间隔。用户可以使用鼠标光标进行选择、调整大小、移动和删除选择。用户可以使用图 6 中所示的“同步显示”按钮来选择是否将所选内容连接到其他视图。如果它链接到其他视图,则一旦区域发生变化,就会重新计算它们并更新可视化效果。该功能使用户能够从较大的时间序列中选择某个较小的感兴趣区域来进行模型选择任务,并且即使对于较大的时间序列也能保持模型参数估计的快速反应时间。

另一个重要的设计要求是在调整模型阶数时可视化绘图中的变化,并让用户能够控制这些转换。这是通过直接操作[36]来支持的,使用滑块来表示差异水平,并使用连续的垂直线来表示模型参数。为了关注结果图中的变化,我们使用动画过渡[19]和在协调视图和多个视图中一致的不同颜色[32]。此过程如图 7 和补充视频所示。一旦将滑块或垂直线从一个值拖动到下一个值的方向,就会计算新模型的参数,并且通过使用条形图、点和点的 alpha 混合,图会从一个显示无缝淡入另一个显示。线。绘图的颜色是使用 ColorBrewer2 [17] 选择的。我们使用这个工具来获得定性的配色方案,这在屏幕上很容易区分。这组颜色用作绘图着色的无限循环序列。这确保了每个参数组合都是不同的颜色,并且褪色过程始终使用两种单独的颜色。
在这里插入图片描述

用于调整参数的工具箱和 ACF/PACF 图中的连续垂直线如图 6 所示。默认情况下,禁用包含季节性参数的复选框。在这种情况下,季节性跨度和季节性差异输入被禁用,并且模型的季节性自回归和移动平均分量的阶垂直线不可见。这确保了用户在需要非季节性模型时不会意外地适合季节性模型。通过勾选复选框,输入将被启用,并且 ACF/PACF 图中会出现季节性顺序的垂直线。这也确保根据简约原则首先考虑更简单的非季节性模型,并使用户关注相关类别的模型。

在图 7 中,我们显示了通过拖动 ACF/PACF 图中的连续垂直线之一来更改模型阶数时的褪色过程。当滑动图 6 所示的 ACF/PACF 图中季节性顺序 P 和 Q 的垂直线时,原型支持通过将非季节性滞后设置为另一种颜色和不透明度级别来关注 ACF/PACF 图中的季节性滞后。因此,用户可以更容易地决定模型的季节顺序。调整差异水平时,我们还会更改 ACF/PACF 图的基础数据。在这种情况下,ACF/PACF 图和残差图从当前配置逐渐淡入新配置。

所有四个残差分析图(图 5 中的区域 (4a-d))均包含在前面介绍的交互式衰落过程中。当用户修改模型配置时,残差图会不断从一个图淡入另一个图。这使用户能够看到模型配置的变化并评估模型的适应度是否改善或恶化。该过程如图 7 所示。

所有先前和当前选择的模型的信息标准显示在图 5 的区域 (5) 中,如第 5.2.2 节所述。该历史堆栈在模型选择过程中被填充。如果将新模型添加到表中,则会重新调整立即找到最小信息标准的着色。因此,对于每个转换,我们可以看到颜色支持的标准值(如果它比前一个转换更好或更差)。此外,还可以根据模型选择任务中每个点的信息标准来查看哪些是最佳模型。

5.2.5 设计原理讨论

TiMoVA 用户界面布局的关键思想是映射 Box-Jenkins 方法及其工作流程。这种工作和思维方式已为我们的目标用户(领域专家)所熟知和认可。对 Box-Jenkins 方法中的各个步骤使用既定的标准可视化技术的主要目的是避免混淆并从领域专家已有的经验中受益。通过使用他们非常熟悉的熟悉的可视化,领域专家可以从 TiMoVA 的组合、布局,尤其是交互中受益。在我们这个阶段的工作中,这是我们的目标,也是我们的贡献。对于未来的工作,尝试更先进的可视化技术、使用并将它们包含在 TiMoVA 中以进一步改进时间序列分析中的模型选择任务将是令人兴奋的。

另一个要求是在 TiMoVA 中使用适当的交互,以便目标用户能够轻松直观地专注于模型选择的任务。根据 Heer 和 Robertson [19] 的说法,统计数据图形中的动画过渡是吸引用户并改善对变化的感知的一种方式。他们还建议使用 alpha 混合作为可能的遮挡的解决方案。根据他们的发现,我们在 TiMoVA 中应用动画过渡并使用 alpha 混合,因为过渡中可能会发生遮挡。这些转换由用户在 ACF/PACF 图中直接触发和控制。

使用动画诊断图显示转换的一个限制是您实际上将当前模型与下一个可能的模型之一进行比较。通常这已经足够好了,因为您可以立即看到您想到的更具体的子模型是更好还是更差,并且通过此预览,领域专家可以决定是否值得进入这个方向。为了克服仅比较两个模型的限制,我们提供了一个历史表,其中包含所有先前和当前考虑的模型以及相应的信息标准,如图 5 的区域 (5) 所示,并在补充材料中提供了更多详细信息。通过此概述,可以根据两个以上模型的信息标准对其进行比较。在我们的设计中,我们计划未来的工作使用户能够选择最多三个模型并将其标准化残差加载到诊断图中,以便直接对它们进行视觉比较。这应该足够了,因为根据 Nazem [28,p. 11] 的说法。 307]在大约 87% 的时间序列中,只有一两个模型保留在足够模型的候选名单中,而在大约 97.6% 的时间序列中,保留了三个或更少的模型。

6 评价

在设计和实施阶段,我们通过设计团队的重复会议期间的形成性评估来评估结果。这个迭代细化过程由团队成员、信息可视化和统计专家进行评判,并通过演示讨论用户体验[24]。除了这种重复的内部评估之外,还通过咨询两位外部领域专家的非正式用户反馈[24]来评估用户体验。除了第一级评估之外,我们还通过定义使用场景并将原型应用于示例数据集来评估原型。我们解释下面的示例数据集并应用第 6.1 节中的使用场景。我们将在第 6.2 节中讨论从两个级别的评估中获得的见解、我们学到的知识以及如何进一步改进我们的解决方案。因此,我们评估我们的解决方案对其目标用户的可用性和适用性。

示例数据集。在第 3 节中,我们介绍了 NMMAPS 研究中每日心血管疾病死亡人数的示例数据集 [29, 33]。原始数据集包含美国不同城市的数据,但我们仅关注洛杉矶的心血管疾病死亡人数。数据集中的相关列是日期和 cvd,即每日因心血管疾病死亡的人数。数据集中没有缺失值。为了评估原型,我们汇总时间序列以获得每月总和。

6.1 使用场景

基于第 4 节中的需求分析,我们使用用户故事并定义了两个使用场景进行评估。第一个是模型选择的高级任务。第二个任务是在选择模型之前选择时间序列中的范围。我们描述了如何将原型应用于示例数据集来解决这些任务。我们从虚构的领域专家的角度演示了使用场景。由于很难在静态图片中显示交互性和视觉反馈,因此我们通过图 7 中两个残差图中的过渡来支持文本描述。为了阐明交互以及所有视觉表示在过渡期间的行为方式,我们提供了带有音频旁白的补充视频1。另一份补充材料显示了 TiMoVA 对于我们在下面讨论的五个转变中每一个的模型诊断区域。

6.1.1 选型

遵循第 3.1 节中介绍的 Box-Jenkins 方法,我们首先考虑时间序列图以及自相关函数 (ACF) 和偏自相关函数 (PACF) 图。根据 TiMoVA 中的时间序列图(图 5),我们假设可能不需要差分操作(参见第 3.2 节),因为时间序列似乎是平稳的。移动差异滑块确认 ACF/PACF 图以及残差分析图的变化是微乎其微的,因此支持这一假设。

我们根据表 1 中模型的非季节性顺序行为来评估图 5 中的 ACF/PACF 图 (3)。我们在图 7 中用颜色代码在彼此下方显示了此使用场景的转换图 5 区域 (5) 中的信息标准表对此进行了解释。对于模型的非季节性部分,我们决定采用混合 ARMA 模型。当滑动参数 p 时,诊断图显示,将非季节性 AR 模型调整为 p = 1 阶会导​​致残差时间序列图的外观更加随机,在正态分位数-分位数图中呈现更加直线的行为,并且 ACF 图的非季节性滞后中的滞后较小(图 7 中的转换 1)。除了进一步改进这些残差图之外,如果将顺序更改为 p = 2(图 7 中的转换 2),Ljung-Box 统计数据还会显示更多滞后,p 值与零显着不同。有关详细信息,请参阅补充图像和视频。对于这两种转变,我们可以在图 5 的区域 (5) 中看到信息标准如何改进。结果是模型配置 p = 2,这是 AR(2) 模型。通过向模型添加 q = 1 阶的 MA 组件(图 7 中的转换 3),我们得到了 p = 2 且 q = 1 的假设混合 ARMA 模型的诊断图。这种配置使模型在以下方面显示出更多随机性:标准化残差的诊断图,强化了它们是标准正态分布的假设。当添加 MA 分量 q = 1 时,图 5 区域 (5) 中的信息标准变得最小,但根据图 5 中 ACF/PACF 图的行为,我们假设非季节性部分采用混合 ARMA 模型。为了了解这些转变的更多细节,我们在补充图像和补充视频中提供了所有诊断图。

该模型尚未涵盖季节性行为。因此,下一步是调整模型的季节性部分。我们考虑自回归模型,因为滑动参数 P 会突出季节性滞后并揭示 PACF 中季节性滞后 2 的截止点。这表明,当查阅表 1 了解模型季节性顺序的行为时,季节性分量可能具有顺序 P = 2。从季节性顺序 P = 0 滑动到 P = 1(图 7 中的转换 4)并且从 P = 1 到 P = 2(图 7 中的过渡 5),显示了所选模型的改进。在图 5 的区域 (5) 中,我们还认识到当包含 P = 1 的季节性分量时信息标准的突然改进以及从 P = 1 到 P = 2 的过渡的逐渐改进。通过这种配置,我们得到季节性模型的形式如下:
A R I M A ( p = 2 , d = 0 , q = 1 ) × ( P = 2 , D = 0 , Q = 0 ) s = 12 \mathrm{ARIMA}(p=2,d=0,q=1)\times(P=2,D=0,Q=0)_{s=12} ARIMA(p=2,d=0,q=1)×(P=2,D=0,Q=0)s=12
包括模型的估计参数,我们得到以下时间序列模型:
( 1 − 0.3068 B 12 − 0.5444 B 24 ) ( 1 + 0.3143 B − 0.3112 B 2 ) x t = ( 1 − 0.9072 B ) w t (1-0.3068B^{12}-0.5444B^{24})(1+0.3143B-0.3112B^2)x_t=\\(1-0.9072B)w_t (10.3068B120.5444B24)(1+0.3143B0.3112B2)xt=(10.9072B)wt
此外,图 5 区域 (5) 中的信息标准表明我们找到了适当的模型。我们使用 TiMoVA 选择 AIC、AICc 和 BIC 具有最小值的模型。这与基于标准化残差可视化的诊断相一致。

6.1.2 量程选择

TiMoVA 使用户能够选择时间序列的范围,如图 1 的左上角 (1) 所示。一个可能的使用场景是选择在时间序列中的定义点开始和结束的趋势,并模型选择时仅考虑这一趋势。

在下面的使用场景中,我们只想考虑从 1994 年 11 月开始到时间序列中最后一个数据点结束的范围。我们按照上一节所述选择模型。与完整的时间序列相比,我们得到了一个稍微不同的模型,它更简单且参数更少。我们得到一个 p = 2 和季节性 P = 1 的中间模型。残差的 ACF 图表明剩余的季节性自相关。在这种情况下,我们考虑将季节差异 D = 1 作为消除残差中这种自相关的可能解决方案。滑动季节差异推子,改进了该模型。最后,我们得到一个具有以下配置的模型:
A R I M A ( p = 2 , d = 0 , q = 0 ) × ( P = 1 , D = 1 , Q = 0 ) s = 12 \mathrm{ARIMA}(p=2,d=0,q=0)\times(P=1,D=1,Q=0)_{s=12} ARIMA(p=2,d=0,q=0)×(P=1,D=1,Q=0)s=12
查阅该模型的信息标准表明我们已经找到了一个合适的模型。
除了从 TiMoVA 在这两种使用场景中的应用中获得的见解之外,我们还将在下一节中讨论用户反馈的结果。

6.2 评估用户体验

对于用户体验的评估[24],我们依靠在设计和实施阶段从内部形成性评估和迭代设计中获得的见解,在中间阶段我们进行了重复的会议和讨论,以及与两个人的演示会议受雇于统计研究机构的科学家的外部领域专家。他们两人都拥有数学硕士学位,一人拥有统计学博士学位。非正式评估[24]是通过使用众所周知的时间序列分析数据集演示原型来进行的。领域专家对TiMoVA的功能进行了即时反馈。这些反馈被记录在纸上,并在持续约一小时的演示会议后得到反映。我们将反馈纳入设计和实施中。我们在本节中讨论其余的建议,并在第 7 节中考虑将它们用于未来的工作。在本次反思中,我们还包括了使用场景的发现。

根据领域专家的说法,一个非常有用的功能是显示 Box-Jenkins 方法的所有单独步骤的概述。它提供了决定适当模型所需的所有信息。由于模型选择依赖于 ACF/PACF 图的行为,因此使用连续垂直线直接选择此 ACF/PACF 图内的模型阶数非常有帮助。关注季节性滞后对模型中季节性成分选择的视觉支持被认为是非常有益的。根据领域专家的说法,另一个有益的功能是在更改模型顺序时立即可视化和预览模型结果,尤其是从一个模型到另一个模型的转换的可视化。这使得领域专家能够直接将当前模型与新模型进行比较,并决定模型是否改进。另一个好处是可以从较大的时间序列中选择某个感兴趣的区域,并在模型选择任务中仅考虑该子区域。这不仅非常适合选择具有代表性或有趣的子区域,而且即使对于原本较大的时间序列也能具有更快的反应时间。

还提出了进一步改进工作的建议。领域专家希望按需查看更多残差统计数据。作为计算结果,这些数字在内存中可用,并将它们包含在图形用户界面中将是未来的工作。领域专家有时更喜欢对残差分析执行不同的测试和统计,并且希望使用图形用户界面从一组测试统计中定制选择。我们的解决方案是为此类请求而准备的,并以确保可交换测试统计数据的方式实施。

在迭代设计和实现阶段的一项建议是包含先前选择的模型的历史记录,并使用户能够获得概览并重新加载某些模型。我们在设计中包含了这个概念,结果如图 5 的区域 (5) 所示。这种对先前选择的模型进行概述并在更抽象的层面上比较两个以上模型的功能非常有用。将某些模型加载为诊断图中的叠加的概念被认为是有用的,并且是进一步改进实施的一种方法。

另一个需要的功能是展示模型的表现。这通常是通过获取时间序列的第一部分并使用模型来预测特定时间范围或重复的单步提前预测来完成的。然后,该预测会沿着给定的时间序列以及相应的置信边界显示。目前我们关注的是时间序列分析的第一部分,即找到一个合适的模型,而不是该模型的应用。尽管在时间序列图中使用这些预测作为叠加的扩展被认为需要进一步的工作。

从评估中我们了解到,对于至少具有统计和时间序列分析(ARIMA模型)基础知识的目标用户来说,TiMoVA很容易学习和理解。对于其他人来说,有必要研究时间序列分析才能理解和解释可视化。正如第 5.2.5 节中已经讨论的,我们在 TiMoVA 中实现了这一目标,通过关注领域专家已有的知识和经验,并通过完善的工作和思维方式、熟悉的可视化和适当的交互来支持他们。

7 结论和未来工作

我们工作的目标是使用 VA 在模型选择过程中为领域专家提供支持。我们发现,对于 Box-Jenkins 方法中的 ARIMA 类和季节性 ARIMA 模型,没有任何技术或工具能够以直观且用户友好的方式支持流程的工作流程。将 VA 方法应用于此领域问题表明,我们可以通过交互式可视界面、短反馈周期和模型转换的可视化来支持此任务。

通过评估我们的工作,我们发现最终的 VA 流程描述和 TiMoVA 原型使领域专家能够轻松直观地进行时间序列模型的视觉探索和选择。这些好处是通过以下方式实现的

  • 使领域专家能够通过 ACF/PACF 图内的可视化界面以交互方式选择模型阶数,这提供了模型阶数的初步想法,
  • 在选择模型阶数时为领域专家提供模型结果的即时视觉反馈,以及
  • 帮助领域专家实现模型转换的可视化,以决定模型是否改进。

我们还表明,交互适合该任务,并且领域专家从使用完善的模型选择方法和其领域的可视化中受益。

在第 6.2 节中,我们讨论了从评估结果中获得的见解,并为未来的工作提出了想法。一项改进是将信息标准度量包含在图形用户界面的历史记录中。未来工作的另一个想法是使用此历史记录来加载任何以前的模型并比较其中的两个模型。进一步的改进是扩展原型以直接支持残差分析的不同统计方法,并使用户能够根据自己的需求定制残差分析。时间序列模型的诊断目前仅限于诊断图。对于未来的工作,包括用于预测诊断步骤的模型的性能将会很有趣。

我们的解决方案仅限于具有等间隔时间序列且没有缺失值的数据。在实际应用中,数据通常包含缺失值和/或不等距。对于未来的研究,我们将这些限制视为应用 VA 进行缺失值时间序列模型选择的灵感,并为估计它们的方法提供视觉支持。未来工作的另一个有趣的挑战是预见对多元时间序列的模型选择支持。因此,有必要考虑针对此类数据的适当的可视化技术。

我们在使用场景中发现的最终模型被我们的领域专家评为相当复杂的模型。使用现有的统计软件工具找到这个模型将非常麻烦且耗时。使用 TiMoVA 减少了考虑的模型数量,因为即时视觉反馈在模型选择过程的早期就已经排除了某些模型子类。

根据评估的见解,我们发现原型中使用的完善的可视化的好处是领域专家可以使用这些视觉编码。因此,他们可以专注于模型选择的任务,并在 TiMoVA 的指导下改进他们的工作。

致谢

这项工作得到了奥地利科学基金 (FWF) 通过 HypoVis 的支持,项目编号:P22883,奥地利联邦经济、家庭和青年部通过 CVAST、Laura Bassi 卓越中心,项目编号:822746 和维也纳大学的支持环境信息学博士学院技术博士。

参考文献

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/781261.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【JavaSE复习】数据结构、集合

JavaSE 复习 1.数据结构1.1 查找1.1.1 基本查找1.1.2 二分查找1.1.3 插值查找1.1.4 斐波那契查找1.1.5 分块查找1.1.6 分块查找的扩展(无规律数据) 1.2 排序1.2.1 冒泡排序1.2.2 选择排序1.2.3 插入排序1.2.4 快速排序 2. 集合2.1 基础集合2.1.1 集合和数…

MyBatis中二级缓存的配置与实现原理

大家好,我是王有志,一个分享硬核 Java 技术的金融摸鱼侠,欢迎大家加入 Java 人自己的交流群“共同富裕的 Java 人”。 上一篇文章《MyBatis中一级缓存的配置与实现原理》中,我们已经掌握了 MyBatis 一级缓存的配置(虽然…

使用AOP思想实现开闭原则下的流水日志输出

主要实现思想: 通过实现Convert接口来抽取公共组件,获取想要的标准模型。 现在有两个订单场景,一个保存订单,一个为更新订单。构造如下的服务类: import org.springframework.stereotype.Service;Service public clas…

pwm 呼吸灯(如果灯一直亮或者一直灭)

(这个文章收藏在我的csdn keil文件夹下面) 如果这样设置预分频和计数周期,那么算出来的pwm频率如下 人眼看起来就只能是一直亮或者灭,因为pwm的频率太高了,但是必须是频率够高,才能实现呼吸灯的缓慢亮缓慢…

Django之项目开发(一)

一、项目的生命周期介绍 传统Web 项目的生命周期指的是从开始构建一个网站到该网站完成并维护的整个过程。通常情况下,Web 项目的生命周期包括以下几个阶段 需求分析阶段:在这个阶段,项目组会与客户进行沟通,确定网站的功能、内容和设计。 主要由产品经理参与产出思路与方案…

ChatGPT-4o大语言模型优化、本地私有化部署、从0-1搭建、智能体构建等高级进阶

目录 第一章 ChatGPT-4o使用进阶 第二章 大语言模型原理详解 第三章 大语言模型优化 第四章 开源大语言模型及本地部署 第五章 从0到1搭建第一个大语言模型 第六章 智能体(Agent)构建 第七章 大语言模型发展趋势 第八章 总结与答疑讨论 更多应用…

Nginx auth 的权限验证

基本流程 整个流程为;以用户视角访问API开始,进入 Nginx 的 auth 认证模块,调用 SpringBoot 提供的认证服务。根据认证结果调用重定向到对应的 API 接口或者 404 页面。 查看版本保证有 Nginx auth 模块 由于 OpenAI 或者本身自己训练的一套…

数据结构(其一)--基础知识篇

1. 数据结构三要素 1.1 数据结构的运算 即,增删改查 1.2 数据结构的存储结构 2. 数据类型,抽象数据类型 数据类型: (1). 原子类型:bool、int... (2). 结构类型:类、…

Linux多线程(中)

Linux多线程(中) 1.Linux线程互斥1.1互斥量的接口1.1.1初始化互斥量1.1.2销毁互斥量1.1.3互斥量加锁和解锁 1.2修改代码1.3互斥量实现原理 2.可重入VS线程安全3.死锁4.Linux线程同步5.生产者消费者模型 🌟🌟hello,各位…

Java 自定义集合常量

文章目录 Java 自定义集合常量一、普通方法自定义集合常量信息1、定义 Map 集合信息(1)方法一:使用静态代码块(2)方法二:简单定义 Map 常量 2、定义 List 集合信息3、定义 Set 集合信息 二、通过 Collectio…

用win的控制台去远程连接虚拟机linux的终端

以Ubuntu为例,首先确保Ubuntu已经安装了ssh服务 sudo apt-get install openssh-server输入密码 安装完毕后查看ssh状态是否开启 sudo systemctl status ssh 显示绿色激活状态,可以关闭或开启 对应start和stop winr打开win端控制台 输入 ssh -p 22 …

python-22-零基础自学python-数据分析基础 打开文件 读取文件信息

学习内容:《python编程:从入门到实践》第二版 知识点: 读取文件 、逐行读取文件信息等 练习内容: 练习10-1:Python学习笔记 在文本编辑器中新建一个文件,写几句话来总结一下你至此学到的Python知识,其中…

ASCII码对照表(Matplotlib颜色对照表)

文章目录 1、简介1.1 颜色代码 2、Matplotlib库简介2.1 简介2.2 安装2.3 后端2.4 入门例子 3、Matplotlib库颜色3.1 概述3.2 颜色图的分类3.3 颜色格式表示3.4 内置颜色映射3.5 xkcd 颜色映射3.6 颜色命名表 4、Colorcet库5、颜色对照表结语 1、简介 1.1 颜色代码 颜色代码是…

声明队列和交换机 + 消息转换器

目录 1、声明队列和交换机 方法一:基于Bean的方式声明 方法二:基于Spring注解的方式声明 2、消息转换器 1、声明队列和交换机 方法一:基于Bean的方式声明 注:队列和交换机的声明是放在消费者这边的,这位发送的人他…

OSS存储桶漏洞总结

简介 OSS,对象存储服务,对象存储可以简单理解为用来存储图片、音频、视频等非结构化数据的数据池。相对于主机服务器,具有读写速度快,利于分享的特点。 OSS工作原理: 数据以对象(Object)的形式…

Java高级重点知识点-21-IO、字节流、字符流、IO异常处理、Properties中的load()方法

文章目录 IOIO的分类 字节流字节输出流【OutputStream】字节输入流【InputStream】图片复制 字符流字符输入流【FileReader】字符输出流【FileWriter】 IO异常的处理(扩展知识)Properties属性集(java.util) IO Java中I/O操作主要是指使用 java.io 包下的…

iOS中多个tableView 嵌套滚动特性探索

嵌套滚动的机制 目前的结构是这样的,整个页面是一个大的tableView, Cell 是整个页面的大小,cell 中嵌套了一个tableView 通过测试我们发现滚动的时候,系统的机制是这样的, 我们滑动内部小的tableView, 开始滑动的时候&#xff0c…

想知道你的电脑能不能和如何升级RAM吗?这里有你想要的一些提示

考虑给你的电脑增加更多的RAM,但不确定从哪里开始?本指南涵盖了有关升级Windows PC或笔记本电脑中RAM的所有信息。 你需要升级RAM吗 在深入研究升级RAM的过程之前,评估是否需要升级是至关重要的。你是否经历过系统滞后、频繁的BSOD错误或应用程序和程序突然崩溃?这些症状…

Lock与ReentrantLock

在 Java 中,Lock 接口和 ReentrantLock 类提供了比使用 synchronized 方法和代码块更广泛的锁定机制。 简单示例: import java.util.concurrent.locks.Lock; import java.util.concurrent.locks.ReentrantLock;public class ReentrantLockExample {pr…

聊一下Maven打包的问题(jar要发布)

文章目录 一、问题和现象二、解决方法(1)方法一、maven-jar-pluginmaven-dependency-plugin(2)方法二、maven-assembly-plugin 一、问题和现象 现在的开发一直都是用spring boot,突然有一天,要自己开发一个…