根据我对问题的解释,您要问的根本问题是您是否可以将时间建模为样条曲线。
我将尝试回答的第一个问题是您是否可以使用样条线来推断您的数据。简短的回答是视情况而定,但在大多数情况下,样条曲线对于外推并不是那么好。样条曲线本质上是一种插值方法,它们对数据所在的空间进行分区,并且在每个分区处它们适合一个简单的回归器。那么让我们看看MARS的方法。MARS 方法定义为
^F(X)=n∑一世=1α一世乙一世(X[一世])
f^(x)=∑i=1nαiBi(x[i])
在哪里α一世αi是 MARS 模型中第 i 项的常数,乙一世Bi是第 i 项的基函数,并且X[一世]x[i]表示在第 i 个术语从您的特征向量中选择的特征。基函数可以是常数,也可以是铰链函数(整流器)。铰链功能很简单
米一种X(0,X[一世]+C一世)max(0,x[i]+ci)
铰链函数迫使模型创建分段线性函数(有趣的是,具有校正线性激活函数的神经网络可以看作是 MARS 模型的超集模型)。
因此,回到为什么样条线通常不适用于外推的问题是要意识到,一旦您需要外推的点开始超出内插的边界,只有模型的很小一部分将被“激活”或者它的很大一部分将被“激活”,因此模型的力量消失了(因为缺乏变化)。为了对此有更多的直觉,让我们假设我们正在尝试将 MARS 模型拟合到位于R. 因此,给定一个数字,我们尝试预测另一个数字。MARS 模型提出了一个看起来像这样的函数:
^F(X)=5+米一种X(0,X-5)+2米一种X(0,X-10)
如果外推发生在数字之后10现在的功能变成
^F(X)=10+2(X-10)=2X-10
我们之前的 MARS 模型现在归结为单个线性函数,因此 MARS 模型的功能消失了(这是大多数术语“激活”的情况)。数字之前的外推也会发生同样的事情5. MARS 模型的输出将只是一个常数。这就是为什么大多数时候样条不适合外推的原因。这也解释了您在帖子评论中提到的问题,即外推预测“对新值非常不利”,并且对于不同的时间序列,它们往往“朝着相同的方向继续”。
现在让我们回到时间序列。时间序列是机器学习中的一个非常特殊的案例。它们往往具有一些结构,无论是部分不变的还是许多不同类型的子结构之一,并且可以利用这种结构。但是需要能够利用这种结构的特殊算法,不幸的是样条不能做到这一点。
我建议您尝试几件事。第一个是循环网络。如果您的时间序列不是那么长(并且没有长期依赖关系),您应该能够使用简单的 vanilla 循环网络。如果您想了解正在发生的事情,您可以使用带有偏差的校正线性单元作为激活函数,这相当于对时间序列的子集和循环神经网络的“记忆”进行 MARS 建模持有。很难解释网络是如何管理内存的,但是您应该对生成的分段线性函数如何处理子空间有所了解。此外,如果您有不属于时间序列的静态特征,则在网络中仍然使用它们相对容易。
如果您拥有的时间序列很长并且可能具有长期依赖性,我建议使用门控循环网络之一,例如 GRU 或 LSTM。
在更经典的时间序列分类方面,您可以使用隐马尔可夫模型。我不会深入探讨这些,因为我对它们不太熟悉。
总之,我不建议使用样条线,原因有两个。一,它无法处理复杂的外推问题,这似乎是您所描述的问题。第二,样条不利用时间序列的子结构,这在时间序列分类中可能非常强大。
希望这可以帮助。