跳到内容

科林瑞克森/高Pro

存储库文件导航

自述文件

高普罗

CRAN_状态_标签 编解码器 R-CMD检查 R-CMD检查 CRAN工作室镜像下载 CRAN检查

概述

此软件包允许您将高斯过程回归模型拟合到数据集。高斯过程(GP)是计算机中常用的模型模拟。它假设任意点集的分布为多元正态分布。GP模型的一个主要优点是它们提供了不确定性估计及其预测。

安装

您可以像其他任何软件包一样通过CRAN进行安装。

install.packages(“GauPro”)

最新版本可以从我的Github帐户下载。

#install.packages(“devtools”)devtools::install_github(“CollinErickson/GaoPro”)

一维示例

这个简单的例子展示了如何将高斯过程回归模型拟合到数据。功能加仑公里创建一个符合以下条件的高斯进程内核模型给定的数据。

图书馆(高普罗)
n个 <- 12
x <-序列(0,1,长度.out = n个) <-罪(6*x^.8)+rnorm公司(n个,0,1e-1个)普通合伙人 <-加仑公里(x,)#>*缺少参数“kernel”。它已设置为“matern52”。有关更多详细信息,请参阅文档。

绘制模型有助于我们了解模型的准确性以及如何它的预测存在很大的不确定性。绿线和红线是平均值和样本的95%区间。

普通合伙人$plot1D()

因子数据:拟合钻石数据集

模型拟合使用加仑公里也可用于数据/公式输入和可以正确处理因子数据。

在本例中钻石通过指定公式并传递具有适当列的数据帧。

图书馆(ggplot2)金刚石子集 <- 钻石[样本(1:nrow公司(钻石),60), ]糖尿病 <-加仑公里(价格 ~ 克拉 +  + 颜色 + 清晰 + 深度,钻石子集)#>*缺少参数“kernel”。它已设置为“matern52”。有关更多详细信息,请参阅文档。

打电话总结在模型上给出了有关模型的详细信息,包括关于模型拟合和特征。

摘要(糖尿病)#>公式:
#>价格~克拉+剪裁+颜色+清晰度+深度
#>
#>残差:
#>最小第1季度中位数平均第3季度最大。
#> -6589.09  -217.68    37.85  -165.28   181.42  1619.37
#>
#>功能重要性:
#>克拉切割颜色清晰度深度
#>  1.5497  0.2130  0.3275  0.3358  0.0003
#>
#>AIC:1008.96
#>
#>假留一出R平方:0.901367
#>伪漏失R平方(调整):0.8427204
#>
#>60个样本的遗漏覆盖率(较小的p值表示拟合不良):
#>68%:0.7 p值:0.7839
#>95%:0.95 p值:1

我们还可以绘制模型以直观地了解每个输入影响输出。

绘图(糖尿病)

构造内核

在本例中,通过查看以下内容自动选择内核尺寸是连续的和离散的,然后使用在连续尺寸(1,5)上标注5/2,并单独订购由于数据中的那些列,其他维度上的因子内核框架都是顺序因素。我们可以使用任何内核的乘积和总和,确保内核忽略了因子维度。

假设我们想为这个示例构造一个内核,该内核使用有序两个连续维的幂指数核上的内核颜色和上的Gower内核清晰。首先我们构造忽略3个因子的幂指数核尺寸。然后我们构建

cts内核 <-k_IgnoreInds内核(k个=k_PowerExp(开)(=2),无知的人 =c(c)(2,,4))因子内核2 <-k_有序因子内核(=5,xindex公司=2,nlevels级=nlevels级(金刚石子集[[2]]))因子内核3 <-k_有序因子内核(=5,xindex公司=,nlevels级=nlevels级(金刚石子集[[]]))因子内核4 <-k_ Gower因子内核(=5,xindex公司=4,nlevels级=nlevels级(钻石子集[[4]]))#将它们相乘
钻石核 <- cts内核 * 因子内核2 * 因子内核3 * 因子内核4

现在我们可以将这个内核传递到加仑公里它会使用它。

糖尿病 <-加仑公里(价格 ~ 克拉 +  + 颜色 + 清晰 + 深度,钻石子集,内核=钻石核)糖尿病$plotkernel()

使用内核

高斯过程模型的一个关键建模决策是选择内核。内核确定协方差和模型。默认内核是Matern 5/2内核(产妇52),并且是大多数情况下都是不错的选择。高斯或平方指数,内核(高斯)是一个常见的选择,但往往导致不适合因为它假设数据来自的过程是无限的可区分的。其他可用的常见选项包括指数,产妇3/2(产妇32),幂指数(PowerExp公司),立方(Cubic),有理二次型(RatQuad公司)、和三角形(三角形).

这些内核只处理数字数据。对于因子数据,内核将默认为潜在因素内核(潜在因素内核)的字符和无序因子,或有序因子核(有序因子内核)对于有序因子。只要输入是作为数据帧提供,并且列具有适当的类型,那么默认内核将通过将数字内核应用于因子和字符的数字输入和因子核输入。

内核存储为R6对象。它们都可以使用R6创建对象生成器(例如。,物料52$new()),或使用k_<内核名称>快捷功能(例如。,k_Matern52()). 后者更易于使用(推荐使用),因为R将显示功能参数和自动完成。

下表显示了所有可用内核的详细信息。

内核 功能 连续/
离散的
方程式 笔记
高斯 k_高斯 电流互感器 由于它假设无限可微性,因此经常会引起问题。专家不建议使用它。
母亲3/2 千米32 电流互感器 假设一次可微。这通常是一个过低的假设。
母亲5/2 k_马特伦52 电流互感器 假设两次可微。通常是最好的。
指数 k_指数 电流互感器 相当于马特1/2。假设没有可微分性。
三角形 k_三角形 电流互感器
幂指数 k_功率消耗 电流互感器
定期 k_周期 电流互感器 $k(x,y)=\sigma^2*\exp(-\sum(\alpha_i*sin(p*(x_i-y_i))^2))$ 唯一利用周期性数据的内核。但往往存在着相距甚远的非继承性,所以您可能希望乘以一个标准内核。
立方(Cubic) k_立方 电流互感器
有理二次型 k_Rat四元 电流互感器
潜在因素核 k_比率内核 因素 这会将每个离散值嵌入到低维空间中,并计算该空间中的距离。当存在许多离散值时,这种方法效果很好。
有序因子核 k_有序因子内核 因素 这保持了离散值的顺序。例如,如果有3个级别,它将确保1和2的相关性高于1和3。这类似于嵌入到一维的潜在空间中,并要求值按数字顺序保持。
因子核 k_因子内核 因素 这适用于每对可能值的参数。例如,如果有4个离散值,它将适合6个(4选2)值。这规模不太大。当有许多离散值时,使用任何其他因子核。
Gower因子核 k_ Gower因子内核 因素 $k(x,y)=\begin{cases}1,&\text{if}x=y\p,&\text{if}x\neqy\end{casesneneneep$ 这是一个非常简单的因子核。对于相关维度,如果值相同,相关性将为1,或者美元$如果它们不同。
忽略索引 k_IgnoreInds内核 不适用 使用此选项可以创建忽略某些维度的内核。当您希望将不同的内核类型适合不同的维度,或者存在连续维度和离散维度的混合时,此功能非常有用。

因子核:注意,这些都只在一个维度上起作用。如果在你的输入中有多个因素维度,那么它们每个都会被赋予不同的因子核。

组合内核

内核可以通过直接相乘或相加来组合。

下面的示例使用了周期和Matern 5/2的乘积内核以适应周期性数据。

x <- 1:20
 <-罪(x)+ .1*x^1.3
combo_kernel(组合内核) <-k_周期(=1)*k_Matern52(材料52)(=1)普通合伙人 <-加仑公里(x,,内核=combo_kernel(组合内核),最小数值=1e-6)#>*nug在优化后处于最小值。检查配合情况,看看这是否导致配合不良。考虑更改nug.min。这可能适合于无噪音数据。
普通合伙人$绘图()

有关正在构造的更复杂内核的示例,请参阅上面的菱形部分。