我正在学习高斯过程 (GP),并且在 Python 上使用了一些 GP 包。对于大多数包,默认建模选项是,您有一个表示为
y
的 $n imes 1$ 向量,通常表示您感兴趣的 GP 分布变量,并且您还有另一个包含非重复的 $n imes 1$ 向量x
表示实际空间中 y
中值的相应顺序的值(即,如果您对重复测量的数据进行建模,x
通常表示测量时间)。
我有一个包含许多不同个体的多个纵向数据的数据框,并且对于每个个体来说,测量时间是连续且不同的。例如,我为一栋有 120 名员工的大楼经营一家餐厅;这些人不时访问食堂(即他们并不总是在同一天访问食堂,他们可以在上午 9 点到下午 5 点之间的任何时间访问)。我正在对他们每次访问花费的金额进行建模。显然,每个人的数据都是单独聚类的,这就是为什么我的第一次尝试是为这个数据集中的每个人分别拟合一个 GP 模型,这样每个人的数据就成为一个单独的 GP。然而,显然可能存在个体间聚集(例如,A 部门的员工与 B 部门的员工花钱方式不同)。我希望可以存在一种方法来将单个 GP 或一类特殊 GP 拟合到来自多个而不是一个个体的纵向数据,这样我就可以捕获不同聚类级别的协方差。
到目前为止,我已经尝试使用多输出 GP,将每个人的数据假设为单独的输出,这在许多 Python 包中实现。我认为如果数据是“时间序列”,这些方法效果很好:即数据是在非常规则的时间间隔内采样的,或者时间空间可以很好地离散化。然而,如上所述,我的数据是在患者内部和患者之间以非常不规则的时间间隔采样的。我试过了
有人对我的问题有任何想法并可以提供任何建议吗?
根据您的描述,您可以通过在核函数中涉及共享结构,使用稀疏高斯过程(GP)在不同个体的模型之间共享信息。简而言之,您可以使用共享内核和单独内核来解决此问题。 共享内核:这个想法是你可以定义一个共享内核来捕获个体之间共享的全局结构。该内核应该模拟不同个体之间的相似性。 个体内核:这是为每个个体分配个体内核。这些内核捕获了每个人特有的差异。这些内核可以是基本内核(如径向基函数 (RBF) 内核)和特定于个人的内核的组合。
然后通过求和来组合这两个内核。从数学上讲,如果 K_s 是共享内核,K_i是个体编号 i 的个体特定内核,则组合内核 K_total 将是 K_总计 = K_i + K_s