解算器

目前George使用了两种不同的GP解算器做线性代数的不同库。这两个解算器实现了相同的API,应该(达到一定的容差)在相同的数据集上给出相同的答案。解算器只是一个需要内核暴露出3个方法:

  1. 计算-计算并分解核矩阵,
  2. 应用_反转-向左-将输入乘以协方差矩阵\(C^{-1}\,b\)(通过解决系统实际实现\(C\,x=b\))、和
  3. 应用_ sqrt-应用协方差的(Cholesky)平方根。

解算器还提供属性计算的日志决定符.

乔治提供的最简单的求解器(基本解算器)使用scipy的Cholesky实施和第二个实现(HODLR解决方案)使用SivaramAmambikasaran的HODLR库.HODLR算法实现了\(\mathcal{O}(N,\log ^2 N))直接的稠密矩阵求解器在这里.

默认情况下,George使用基本解算器但是HODLR解算器可按如下方式使用:

进口 乔治
内核 = ...
普通合伙人 = 乔治.通用程序(内核, 解算器=乔治.HODLR解决方案)

这个HODLR解算器对于大多数一维问题来说可能是最好的和一些大型多维问题,但(一般而言)规模不大输入维度的数量。在实践中,值得在您的具体问题上尝试这两个解决方案它跑得更快。

基本解算器

乔治。基本解算器(内核)

这是使用构建的最基本的解算器scipy.linalg.cholesky().

参数:内核–的一个子类内核实现内核函数。
应用_反转(,in_place=假)

通过求解将协方差矩阵的倒数应用于输入

\[C\,x=b\]
参数:
  • (n示例,)(n示例, 数量)向量或矩阵\(b).
  • 就地(_P)–(可选)数据是否应该被结果覆盖\(x \)?
应用_ sqrt(第页)

将协方差矩阵的Cholesky平方根应用于输入向量或矩阵。

参数:第页(n个样本,)(n示例, 数量)输入向量或矩阵。
计算(x个,耶尔)

计算协方差矩阵并将其分解。

参数:
  • x个(n示例, ndim)数据点的独立坐标。
  • 耶尔–(可选)(n示例,)或标量坐标系下数据点的高斯不确定性x个。这些值将以正交形式添加到对角线协方差矩阵。
计算的

指示是否计算协方差矩阵的标志和因式分解(使用计算机()方法)。

日志决定符

协方差矩阵的对数行列式非-在调用计算机()方法。

HODLR解算器

乔治。HODLR解决方案

使用Sivaram Amambikasaran的解算器HODLR库实现了\(\mathcal{O}(N,\log ^2 N))稠密矩阵as的直接求解器描述在这里.

参数:
  • 内核–的一个子类内核实现一个内核函数。
  • 无引线–(可选)最小矩阵块的大小。当解算器达到此值时级别,它使用特征值直接求解这些系统Cholesky实施。(默认值:100)
  • 托尔–(可选)分解矩阵时使用的调整参数。转换这个参数和结果的精度之间存在问题具体,但如果需要更精确,请尝试减少此数字(以更长的运行时间为代价)。(默认值:1e-12)
应用_反转(,in_place=假)

通过求解将协方差矩阵的逆矩阵应用于输入

\[C\,x=b\]
参数:
  • (n示例,)(n示例, 数量)向量或矩阵\(b).
  • 就地–(可选)数据是否应该被结果覆盖\(x \)?
应用_ sqrt(第页)

此解算器尚未实现此方法。

计算(x个,耶尔,种子=无)

计算协方差矩阵并将其分解。

参数:
  • x个(n示例, ndim)数据点的独立坐标。
  • 耶尔–(可选)(n示例,)或标量坐标系下数据点的高斯不确定性x个。这些值将以正交形式添加到对角线协方差矩阵。
  • 种子–(可选)HODLR分解步骤中存在随机成分。使用此参数(它应该是一个整数)为该随机数设定种子步骤并确保确定的结果。通常是随机化应该不会有太大区别,但随着矩阵变得糟糕有条件的话,它会有更大的影响。
计算的

指示是否计算协方差矩阵的标志和因式分解(使用计算机()方法)。

日志决定符

协方差矩阵的对数行列式非-在调用计算机()方法。