我正在尝试理解如何对一组时间序列数据(例如每日股票价格、温度等)进行分段,并找到了一本介绍如何使用SWAB(滑动窗口和自下而上)分割算法的书,但我并不完全理解它。这种分割是声音化算法的一部分。以下文字来自《多媒体数据挖掘与分析:颠覆性创新》。
SWAB分割算法有四个参数——输入文件(时间序列数据)、输出文件(分割数据)、最大误差和标称属性指示。在对不同大小的时间序列进行多次实验并尝试不同数量的分段值后,我们选择了适当的默认分段数,如下所示。对于少于100个观测值的时间序列,占时间序列大小的25-50%;对于具有100-200个观测值的时间序列,占时间序列大小的20-35%;对于具有超过200个观测值的时间序列,占时间序列大小的15-25%。如果用户出于任何原因不想使用默认值,则可以将自己的分段数作为算法的参数输入。
从默认的最小和最大误差值开始,我们首先运行分割算法并得到给定时间序列的最小分段数(最大误差越高,发现的分段数就越少)。然后,我们减小最大误差(从而增加找到的分段数),尝试通过将基数除以2的幂来缩小上下界误差范围(就像在二进制搜索中一样)。每次在当前的最大误差下运行分割算法后,我们测试该值是否为最佳分段数提供了更好的近似值,因此是最佳最大误差的更好上限或下限。如果是这样,我们将适当的界限推进到此值。一开始,只有上限受到影响。但是,一旦我们找到了提供比最优解更多分段的下限,我们将继续通过较小的步骤寻找最佳分段数:下一个最大误差是当前上下界的平均值。根据我们对许多不同时间序列数据库的经验,通常在3-4次迭代内找到最佳最大误差。收敛速度取决于输入时间序列数据库本身。如果算法在20次迭代内没有收敛,则停止搜索并继续使用第20次迭代找到的分段进行下一步声音化处理。
例如,如果我有150个观测值的时间序列数据(对应于默认分段数的20-35%),那么我需要采取哪些确切的步骤来使数据分段?
非常感谢您的帮助。
SWAB分割算法有四个参数——输入文件(时间序列数据)、输出文件(分割数据)、最大误差和标称属性指示。在对不同大小的时间序列进行多次实验并尝试不同数量的分段值后,我们选择了适当的默认分段数,如下所示。对于少于100个观测值的时间序列,占时间序列大小的25-50%;对于具有100-200个观测值的时间序列,占时间序列大小的20-35%;对于具有超过200个观测值的时间序列,占时间序列大小的15-25%。如果用户出于任何原因不想使用默认值,则可以将自己的分段数作为算法的参数输入。
从默认的最小和最大误差值开始,我们首先运行分割算法并得到给定时间序列的最小分段数(最大误差越高,发现的分段数就越少)。然后,我们减小最大误差(从而增加找到的分段数),尝试通过将基数除以2的幂来缩小上下界误差范围(就像在二进制搜索中一样)。每次在当前的最大误差下运行分割算法后,我们测试该值是否为最佳分段数提供了更好的近似值,因此是最佳最大误差的更好上限或下限。如果是这样,我们将适当的界限推进到此值。一开始,只有上限受到影响。但是,一旦我们找到了提供比最优解更多分段的下限,我们将继续通过较小的步骤寻找最佳分段数:下一个最大误差是当前上下界的平均值。根据我们对许多不同时间序列数据库的经验,通常在3-4次迭代内找到最佳最大误差。收敛速度取决于输入时间序列数据库本身。如果算法在20次迭代内没有收敛,则停止搜索并继续使用第20次迭代找到的分段进行下一步声音化处理。
例如,如果我有150个观测值的时间序列数据(对应于默认分段数的20-35%),那么我需要采取哪些确切的步骤来使数据分段?
非常感谢您的帮助。