| 扬声器 |
抄本 |
| 乔丹·希勒 |
出去。 |
| 菲尔·凯 |
好的,谢谢大家的参与。我是 Phil Kay,JMP 的学习经理。我将以一个 SVEM(自验证集成建模)的交互式示例来开始本次演讲。 |
| |
我将讲解 SVEM 是什么以及它的工作原理,然后 Pete 和 Trent 会分享一些例子, |
| |
案例研究和模拟,这些都真正解释了你为什么要这么做。我打算在一个 |
| |
非常简单的案例研究,所以最初可能看起来不清楚为什么......你可能不清楚为什么要这样做,但希望在我解释完之后你能理解这个机制。 |
| |
好的,我现在要停止我的视频,只关注这里的软件演示。 |
| |
我们这里有一个 JMP 期刊与您分享,您可以从 Community.JMP.com 上的 JMP 社区帖子中访问它。 |
| |
我们将使用一个经典的DOE示例。这是反弹数据,您可以从JMP的帮助文件中获取。 |
| |
所以它有三个因素,15次运行。这是一个Box-Behnken设计,我们得到了一个响应,它具有延展性,所以非常简单,标准, |
| |
传统老式的 DOE。 |
| |
对这些数据进行建模并没有真正的挑战,我们看看是否适合响应曲面模型,这种曲线行为、二次效应以及因素之间的相互作用也很重要。 |
| |
那么让我们看看如何使用 SVEM 方法对此进行建模。 |
| |
如果我们要使用 SVEM 建模,你首先会注意到我们有 30 行数据,所以我们实际上复制了每一行数据,这看起来可能有点疯狂,像是在作弊。这是 SVEM 方法论中的一个关键技巧。 |
| |
你会看到我们这里有一些额外的列,其中最关键的一列是验证权重。我们把它画出来,这样你就能明白它的含义了。 |
| |
所以您可以看到,对于我们的每一行数据、每一次运行,我们实际上都有成对的运行,所以第一次运行,您可以在这里看到。 |
| |
我们实际上会把每一次运行的权重分配到训练集(权重为 0)或验证集(权重为 1)。你可以看到,对于每一对 |
| |
这些权重是成反比的。例如,这里的第七次运行,你可以看到它在训练集中的权重很大,验证集的权重为零,而它在验证集中的权重则相对较低。 |
| |
现在这些已经被随机分配了,我们可以...... |
| |
点击这里,我们可以重新绘制这些行,这样我们就可以重新分配权重。同样,如果某一行在训练集中的权重较大,例如,这里的第六行在训练集中的权重较大,那么它在验证集中的权重就会相应较低。 |
| |
因此我们在这里将数据行数加倍。 |
| |
我们将用它来进行自我验证。所以我们实际上可以做的是,我们可以在保留验证中使用一个变体,其中 |
| |
我们不会将整行数据保留到验证集中,而是保留每行数据的一部分,这样每行实际上都可以位于训练集和验证集中,而且重要的是,我们可以重新分配这些权重 |
| |
反复进行,这在进行集成建模时就可以了。 |
| |
好的,总结一下,我们基本上复制了每一行数据,并为这些数据分配权重,这样某些行在训练集中会占更多,而某些行在验证集中会占更多。 |
| |
所以现在我们可以使用验证来拟合模型。 |
| |
所以我们在这里使用 GenReg,您可以看到我们正在使用验证集(并且忽略那里的错误消息)。 |
| |
我们使用了 Lasso,并使用验证集作为模型选择。在本例中,它实际上并没有选择模型中的任何有效效应。因此,它拟合了一个响应面模型,我们使用了验证集作为选择方法,使用了 Lasso。 |
| |
并且我们已经确定实际上没有任何影响是活跃的,所以我们有一个实际上没有活跃影响的模型。 |
| |
然后我们可以做的是重新绘制这些权重,以便我们可以重新加权我们的列。 |
| |
我们可以看到,这次我们得到了一个不同的模型。实际上,一些效应现在变得活跃起来,比如二氧化硅在二氧化硅和硫的相互作用中起着活性作用。 |
| |
让我们保存该模型。 |
| |
所以现在,有了我们的 |
| |
数据表,您可以看到我们在那里有一个保存的模型公式列。 |
| |
我们重新绘制一下这些权重。我们再次重新绘制它们,这样有些行在训练中占比更大,有些行在验证中占比更大。 |
| |
我们又得到了一个不同的模型,现在我们来保存它。所以我们现在有 |
| |
两行...两列,保存了预测公式。 |
| |
我们可以再做一次。所以我要重新绘制权重并保存预测公式。我刚好有一个脚本可以帮我们完成这些。然后实际上创建了这个模型平均值,所以我们实际上已经对三个保存的模型进行了平均。 |
| |
因此每个单独的模型都使用不同的验证权重。 |
| |
每个模型都不同,有些比其他模型更好。关键在于,当我们把这些模型平均起来时, |
| |
这些平均值就是目前为止最好的模型。所以你可以看到,这实际上与我们用标准方法在标准上拟合的原始模型非常接近…… |
| |
原始数据集。 |
| |
我们可以重复这个步骤。我们可以重复10次,所以我们要重复这个步骤。你可以看到我们重新绘制了权重;每次我们得到的模型都会略有不同。 |
| |
我们可以保存每个不同的模型。 |
| |
最终得到的平均值可能是最好的模型。 |
| |
事实上,如果我们将其与从该数据的标准分析中看到的原始模型进行比较, |
| |
您可以看到这两个模型实际上非常接近一致。 |
| |
因此,在这种情况下,使用这种自我验证的集成模型实际上已经达到了与使用标准模型相同的模型 |
| |
线性回归。 |
| |
所以我想回顾一下你们刚才看到的要点。正如我之前所说,接下来我们请Pete和Trent来解释他们想要使用这种新颖建模技术的动机。 |
| |
我们所做的就是复制原始数据行。 |
| |
那么这意味着,我们可以应用随机权重来表示每行对中有多少是用于训练,有多少是用于验证。 |
| |
这使我们能够使用验证。对于如此小的数据集,我们无法使用它。保留一行数据是没有意义的,但我们能用这个重复的数据集做什么呢? |
| |
就是进行加权验证。因此,在本例中,我们使用套索选择来拟合模型,并且套索选择利用了这个加权验证列。 |
| |
然后我们重新绘制这些权重。我们再次为这些行对随机分配不同的权重,并重新拟合模型。在我们的例子中,我们重复了 10-15 次,但实际上,为了获得一个良好的自验证集成模型,我们需要重复这个过程 100 次或更多。 |
| |
每个模型都是其本身...迭代过程每一步中的每个单独模型都不是特别有用,但模型平均值或集合却是有用的,正如我们在最终模型中看到的那样,它是所有这些迭代的平均值。 |
| |
所以,现在我想把它交给 Pete,他现在将通过一个案例研究来讲述,这实际上说明了为什么你会想要使用这种不寻常的方法来建模这样的数据。 |
| 彼得·赫什 |
非常感谢,菲尔。我要在这里分享我的屏幕了。 |
| |
让我们来看一个例子,看看我们什么时候可以 |
| |
使用这个方法。所以我在这里 |
| |
首先看结果,所以我们正在看几个非常小的 DOE 设计,即六次运行、八次运行和十次运行的 DOE,具有三个因素。 |
| |
这些是响应曲面设计,本质上是超饱和到饱和的,它们都是最优设计,所以这些运行次数非常少 |
| |
来实现我们的目标。这就是我们要去的地方。那么,我们先回顾一下设计,以及我们是如何实现这一目标的。 |
| |
所以。 |
| |
这是一个案例研究,我们试图通过调整不同的营养组合来最大化微生物的生长速度。正如我之前提到的,我们采用了超饱和最优设计,并调整了运行次数。 |
| |
这是模拟数据,其中所有主效应都处于活跃状态,所有二次效应也都处于活跃状态。 |
| |
所以我们是如何设置的,从三个因子开始。我设计了我的模型。如果你以前没有在 JMP 中设计过饱和或超饱和设计, |
| |
这样做的方法是尽可能地处理那些非主效应,这样就可以减少运行次数,或者保持与模型效应相同的运行次数。然后我就在那里生成了我的设计。 |
| |
并经历了 Phil 如此精彩地描述的这个过程,即重新采样数据,获得那些反转......反比权重,这是这个过程的关键。 |
| |
我们已经进行了几次谈话,我有这些谈话的二维码。 |
| |
这项技术是由 Chris Gotwalt 和 Phil Ramsey 开发的,他们在之前的几次演讲中介绍过这项技术。最后这个 |
| |
在旧版 JMP 中,二维码是一个用于设置此验证列的插件。从 JMP 16 开始,您可以在软件中原生执行此操作,但如果您使用的是 JMP 15,则需要使用此插件进行设置。 |
| |
就像菲尔说的, |
| |
单个模型可能不能很好地拟合数据,有些模型可以拟合,有些则没有任何条件。 |
| |
这只是个例子,你可以看到每个模型。有些模型只是截距,有些模型拟合度很差,偶尔也有一些模型拟合度很好。 |
| |
正如菲尔所描述的,每个变量都有不同的重新计算权重。因此,我们会得到一个略有不同的模型,然后继续保存它们。这是第一步。 |
| |
下一步是对这些模型求平均值。正如你所见,随着对这些模型求平均值,模型数量越来越多,模型拟合度也越来越好。虽然单个模型可能不是很好,但整体平均模型的拟合度还是不错的。 |
| |
最后我想说的是,这些模型天生就带有偏差。正如菲尔建立的第一个模型所示,它没有主动效应。所以 |
| |
当您对模型执行某些模型或变量选择技术时,您偶尔会得到一个特定变量未进入的模型。 |
| |
所以,如果我们看一下这些分布,你会看到 |
| |
所有这些都是主动效应,它们的分布在 5 左右,这是效应大小,但它们也有一个低于 0 的条。 |
| |
因此,我们不会像得到 0 那样经常高估效果,以平衡这一点,因此这将偏向较低的值,所以我们会做一个 |
| |
消除这些模型偏见的小技巧,我们 |
| |
将此模型视为最小二乘模型中的预测器,这将消除这些偏差,我将逐步介绍这个过程,向您展示如何做到这一点。 |
| |
但最终,我们只用很少的运行次数就得到了我之前分享的非常好的结果。所以,使用 SVEM 的动机之一就是它能够预测并建立一个不错的模型,而不用这项技术则无法做到这一点。 |
| |
好的,让我们跳到 JMP |
| |
和 |
| |
完成该过程。 |
| |
好的,这是我之前展示的那个例子的六次运行实验设计(DOE),其中有三个因子和增长率。这是在我们建立模型之后。 |
| |
它看起来就是这样,我们现在已经运行过了。所以我们进行了六次运行,得到了六个结果。下一步是创建验证列,在 JMP 中执行此操作,我们将分析预测模型, |
| |
制作验证列,然后我们将制作一个自动验证表,而不是验证列。 |
| |
好的,这就是我的做法。我已经做过类似的操作了,就不再重复了。 |
| |
但这里有经过重采样的数据,以及负相关的权重,就像菲尔演示的那样。你有一个高权重,加上重复运行的低权重。完成这些之后,我们就可以开始构建模型了。 |
| |
在本例中,我使用了 GenReg 模型,你需要选择其中一种变量选择技术。如果我继续运行这个模型,我需要执行类似正向选择 Lasso 的操作。 |
| |
或者其中一种选择技术。特伦特会更详细地讲解这些选择技术,以及他们研究过哪些技术。 |
| |
在我运行模型之后,你会看到 JMP 已经筛选出了一些活跃的效应。它捕获了一些,但你可以在这里看到 |
| |
我们看到的偏差,这两个主效应都应该起作用,但它们显示为 0。所以当我将其保存到数据表时, |
| |
我会像 Phil 演示的那样创建一个新列,然后重新计算权重,一遍又一遍地重复。这里有一个简单的脚本,可以重复 100 次, |
| |
我们很乐意分享这一点。这非常简单,只需将您的脚本和模型脚本复制粘贴到这里,就能重现我们之前的操作。 |
| |
好的,这就是最终结果,我们已经完成了 DOE 的测试,我们的结果如下 |
| |
我保存的 100 个模型 |
| |
并隐藏在这里。然后是最终的模型, |
| |
这 100 个模型的平均值。我们要做的最后一步是去偏差步骤。所以我们要做的就是处理这个 |
| |
平均模型作为增长率的预测指标。 |
| |
在这里,你可以看到我们拥有的原始模型 |
| |
斜率更陡,所以 R 平方也不错,但不如我们期望的那么好。我的意思是,即使运行了六次,这……六次运行也相当拟合,但是 |
| |
如果我们能消除这种偏差,也许可以做得更好一些。所以设置很简单。我们只需取增长率。我们的响应就是 Y。我们加上 |
| |
这里是集成模型,对所有这些进行平均 |
| |
各个模型作为我们的预测器。我们运行它并得到结果,你可以看到它的实际值与预测值之间的差异要好得多。如果我们进行对比,你会发现消除这种偏差会带来很大的积极影响。 |
| |
好的,在我把它还给特伦特之前,我想再展示一个 |
| |
这张幻灯片基本上只是 |
| |
我们……(我的任务栏不见了)……我们强烈建议你们使用 |
| |
看看这个技巧,但它并不是一个万能的魔法,在任何情况下都能奏效。但当你在筛选设计之类的东西中验证它时,它可能是一个非常好的技巧, |
| |
帮助你完成那些你可能无法用标准建模技术完成的事情。接下来,我要把它交给特伦特,他 |
| |
关于如何做到这一点的更多细节以及 |
| |
那里有信息。特伦特,你想把它拿走吗? |
| 特伦特·莱姆库斯 |
是的,谢谢你,彼得。我很感激。 |
| |
所以 |
| |
我正在分享我的 |
| |
PDF。我只是想确保这确实是共享的,并且每个人都可以看到。 |
| 彼得·赫什 |
是的。 |
| 特伦特·莱姆库斯 |
好的,太棒了。那么 |
| |
正如 Phil 和 Peter 所展示的,他们展示了案例研究,我认为这些非凡的轶事展示了 SVEM 的强大功能以及何时和为何使用 SVEM。 |
| |
我们目前正在同行评审的论文,我们进行了大量的模拟研究,以验证……SVEM 在预测环境中的表现。所以 |
| |
接下来……我要展示一系列幻灯片。我知道这可能看起来有点枯燥乏味,但我认为有必要讨论一下细节。 |
| |
在我讲一些更有趣的东西之前,这是我们如何使用的一个例子...... |
| |
我们如何使用 JMP、JSL 以及我如何运行模拟作为示例,并向您展示一些输出以及结果。 |
| |
因此,首先,我们的模拟研究的概要和目标主要是 |
| |
我们希望创建真实世界的模拟架构。因此,我们希望我们的模拟能够尽可能地模拟真实世界的工业实验设计 (DOE)。 |
| |
其次,我们想看看当代模型构建或当代模型选择技术以及 SVEM 在主要关注纯预测时的表现如何, |
| |
简单明了。所以我们想看看,当我们用一个模型来拟合一个设计时,它是如何预测真实数据或保留数据集(请原谅我的口音,数据)的。 |
| |
由此,如果我们能够尽可能多地模拟这些独特的运行,在计算上是可行的,我们希望做出尽可能接近现实世界的推断......我们希望做出尽可能接近现实世界的推断结果,以便我们能够 |
| |
规定设置以及在何处和如何使用 SVEM,因为 SVEM 还处于起步阶段。 |
| |
那么,首先,我们在模拟中采用了什么设计?我们采用了确定性筛选设计 |
| |
我们使用了 Box-Behnken 设计,其中底层的真实生成模型是完全二次模型,或者更通俗地称为二阶模型。我们选择这些设计的原因是:A)对于确定性筛选设计, |
| |
主效应越多,模型就越饱和,最终变得超饱和,这意味着主效应越高,自由度就越小。而对于我们之前使用的包含主效应的 Box-Behnken 设计, |
| |
你不会遇到这种情况。所以我们有一个……我们并列两种情况,一方面我们有 |
| |
在应用模型选择技术时,我们的 Box-Behnken 设计有足够的自由度来估计我们的系数,并且在最终筛选设计案例中,我们几乎 |
| |
在大多数情况下,我们的设计过于饱和,自由度不足。换句话说, |
| |
我们无法估计使用当代模型构建技术时的所有影响,例如前向选择器、Lassos 选择器、Dantzig 选择器等等, |
| |
这引出了我们在模拟中使用的实际模型算法。对于 SVEM 模型,请记住,如果您…… |
| |
如果您不太了解 SVEM 是什么,那么回顾一下 Peter 提到的一些先前的演示就非常重要。 |
| |
但是我们必须将 SVEM 与底层模型构建技术一起使用,例如前向选择、前向剪枝和 Lasso,这些都是我们在模拟研究中所使用的。 |
| |
在非 SVEM 模型案例中,我们使用相同的模型构建算法,但我们也加入了在 DOE 中非常流行的 Dantzig 选择器, |
| |
以及适合确定性筛选设计,该设计仅与确定性筛选相关;它不用于其他设计。 |
| |
此外,我们使用一种称为 AICc 或校正 AIC 的信息标准,这在 DOE 中非常常见,实际上因选择非常简约的模型而臭名昭著。 |
| |
所以,正如你所看到的,我们正在尝试融入工业 DOE 使用中非常流行的现代技术,它坚持核心……我在第一张幻灯片中展示的核心点,即 |
| |
我们希望通过模拟研究尽可能接近地模拟现实世界,这样我们就可以使这些经验... |
| |
因此,我们可以实证评估这些不同的模型构建算法的预测性能。希望我们能够实证证明 SVEM 的表现优于其竞争对手。 |
| |
因此,对于实际的模拟结构,我们对每个模型构建算法进行了 1000 次模拟。例如,如果我们用 AICc 拟合正向模型, |
| |
在每一次运行中,我们都会生成一个真实模型,即事实,然后我们会向其中添加噪声。 |
| |
高斯噪声(在学术界和研究中非常常见), |
| |
由此创建一个训练集和一个真实集,这样,一旦我们拟合了一个模型,就能看到该模型的预测结果与真实值如何。我们会随机地重新运行并生成这些数据集1000次。 |
| |
SVEM 超参数,我不会详细介绍它是什么,我们使用了 200 的 nBoot。简而言之,我们基本上拟合了 200 个模型,并对这些模型进行平均以得出最终的 SVEM 模型。 |
| |
这些设计也针对多个特征进行了迭代。因此,主效应的数量 |
| |
对于确定性筛选设计,我们有四个主效应和八个主效应。对于 Box-Behnken 设计,我们有 |
| |
三个主效应和五个主效应。举个例子,对于我们的DSD,如果K为8,则有八个主效应。如果有一个完全二次模型, |