Python 高斯过程回归:将输入映射到时间序列
首先,我想描述一下我正在努力实现的目标: 我的输入X由2个值组成,输出Y由2个不同长度的列表组成:Python 高斯过程回归:将输入映射到时间序列,python,machine-learning,regression,gaussian,gpflow,Python,Machine Learning,Regression,Gaussian,Gpflow,首先,我想描述一下我正在努力实现的目标: 我的输入X由2个值组成,输出Y由2个不同长度的列表组成: list_1 = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 2, 4, 4, 8, 10, 11, 11, 11, 14, 14, 15, 15, 20, 20, 22, 22, 22, 22, 22, 10, 10, 10, 10, 15, 15, 15, 15, 15, 15, 20, 22, 2
list_1 = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 2, 4, 4, 8, 10, 11, 11, 11, 14, 14, 15, 15, 20, 20, 22, 22, 22, 22, 22, 10, 10, 10, 10, 15, 15, 15, 15, 15, 15, 20, 22, 22, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 22, 22, 22, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
list_2 =[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 6, 20, 20, 25, 25, 32, 33, 33, 33, 33, 33, 27, 27, 7, 7, 7, 7, 15, 15, 15, 22, 22, 22, 27, 30, 30, 30, 30, 30, 30, 31, 31, 31, 31, 33, 33, 33, 33, 34, 34, 34, 34, 35, 35, 35, 35, 37, 37, 37, 37, 37, 37, 37, 38, 38, 38, 38, 38, 38, 38, 38, 47, 47, 47, 47, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
X= [-28,32]
Y= [list_1,list_2]
在大多数情况下,回归问题将输入x映射到单个输出y。然而,在我的例子中,我需要将输入x映射到时间序列y。我正试图使用gpflow在python中实现这一点。我想听听你的意见,探地雷达的选择是否适合这种情况,如果有人已经做过类似的任务,你能给我一些介绍吗?我认为你不能用你制定的方式直接将普通GPs应用于你的问题 GP根据一个随机函数的样本给出可能函数的分布。如果我正确理解您的设置,您就有一组函数(时间序列),并且希望在对X(the[-28,32])进行调节时了解这些函数的基本动态 让我们重新设计您的问题设置:
list_1 = [....]
list_2 = [....]
...
k = [-28, 32, ...]
X1 = np.arange(0, len(list_1))
Y1 = list_1
X2 = np.arange(0, len(list_2))
Y2 = list_2
...
在GPs的框架下,我想说你想学习一个依赖于你的k的内核。
然后,给定该内核,您有一个标准的GP,其中x
s是时间索引,y=f(x)+noise
是时间序列值。对于每个k,您都有一些训练数据(例如,(X1,Y1)
),并且希望预测其他时间点的值f(x)(可能在x之间,或者在未来进行预测)
因此,您可以尝试一些类似DeepKernel的方法,其中神经网络(或其他函数)预测给定k的内核(参见示例[1])。您可以通过最大化gpflow中训练数据的边际可能性来训练它。可能还有其他一些更有效的方法来学习内核,但您必须对此进行研究
或者,我最近看到了一些关于所谓的“神经过程”的论文,它们有类似的设置:
在这里,随机过程仅用神经网络预测,而不是GPs
但是请注意,这两种方法可能都需要相当多的数据
[1] Carandra,Roberto等人,《回归的流形高斯过程》,2016年国际神经网络联合会议(IJCNN)。IEEE,2016年。
我想不出任何(相当简单的)直接建模Y=f(X)的方法,其中Y中的元素是任意长度的列表(X中的每个元素都不同)。它可能有助于增加一点你想做的事情,让人们能够更好地帮助你@STJ我正试图从论文中实现这个GPR模型:。如第684页所示,作者将手术器械的初始位置作为输入,并估计相应的轨迹值,包括力值。然而,正如法布里西奥所说,正态探地雷达给出了函数样本的分布。这里,在本文中,数据集被定义为X=[初始位置,初始位置,…]和Y=[系统状态_1,系统状态_2,…]。