| 扬声器 |
抄本 |
| 卢卡斯 |
好的,感谢大家来听我的演讲。我叫卢卡斯·贝弗林,是英特尔的一名统计员。 |
| |
今天我将讨论如何使用 JMP 比较来自不同环境的模型。 |
| |
好的,目前 JMP 15 Pro 是 JMP 推出的最新、最好的版本,如果您想适应模型,他们有几种不同的工具可以做到这一点。 |
| |
这里有拟合模型平台。这里有神经网络分割平台。如果你想要分类树和回归树,这里有神经网络平台。还有非线性平台,用于非线性建模,还有其他几个。 |
| |
因此,我认为 JMP 15 是在 12 或 13 中推出的,但这个模型比较平台是一个非常灵巧的工具,你可以用它来比较 |
| |
在 JMP 中,您可以从不同平台进行模型拟合。如果您有一个树状图和一个神经网络,但不确定哪个更好,您可以自由切换。但是现在, |
| |
所有内容都在同一个屏幕上。你可以快速轻松地判断这个比那个更好,等等。 |
| |
话虽如此,JMP 可以适应很多情况,但遗憾的是,它无法适应所有情况。所以,我只能列举一些无法适应的情况。例如, |
| |
那些进行大量机器学习和人工智能的人可能会适合自动编码器或卷积神经网络之类的东西,这些网络通常需要大量的激活函数,或者说,大量的隐藏层节点, |
| |
除了 JMP 提供的激活函数之外,还有其他激活函数,因此 JMP 无法在 JMP 内部完成很多功能。 |
| |
另一个是投影寻踪回归。还有一个是多元自适应回归样条函数。遗憾的是,JMP 有一些功能无法实现。 |
| |
R、Python 和 MATLAB。 |
| |
还有很多, |
| |
但我主要关注这三个。既然如此,我在这里要讨论的想法,你想用 C++、Java、Rust 或其他任何语言来实现它们。 |
| |
想到这里,您应该能够使用其中的很多。 |
| |
所以,正如我之前所说,我们也可以使用模型比较平台来与其他软件进行比较。那么你需要什么呢? |
| |
因此,您需要的两件大事是您用来拟合模型的任何软件的模型预测。 |
| |
通常,当我们进行模型拟合时,特别是对于较大的模型,您可以将数据分成训练验证和/或测试集。 |
| |
您将需要一些东西来告诉所有软件哪些是训练,哪些是验证,哪些是测试,因为您希望在比较拟合度时它们是一致的。 |
| |
好的,所以我选择 R、Python 和 MATLAB 作为本次演讲的重点的最大原因是,事实证明 JMP 和脚本语言实际上可以创建自己的 R 会话并从中运行代码。 |
| |
所以这张图片可以快速显示如果我想用线性回归模型拟合某个输出 |
| |
说到波士顿住房数据集。我稍后会用这个数据集做更多工作。 |
| |
但是,如果你想在 R 中快速拟合线性回归模型并得出预测值,你也可以这样做。当然,你也可以用 JMP 来实现。我只是想提供一个非常简单的思路。 |
| |
所以, |
| |
需要注意的一点是,我使用的是 R 3.6.3,但只要大于 2.9,JMP 就可以处理任何内容。 |
| |
类似地,Python,你可以调用你自己的 Python 会话。这张图片展示了我用 Python 拟合线性回归。我不会在这里逐行讲解所有代码,但你应该已经了解了基本思路。 |
| |
当然,使用 Python 时要小心一点,因为最新版本是 Python 3.8.5。但是如果你使用 Anaconda 安装,当版本高于 3.6 时,JMP 会遇到问题,所以 |
| |
因为我在这个演示中使用 3.6.5。 |
| |
最后,我们也可以创建自己的 MATLAB 会话。 |
| |
所以我在这里使用的是 MATLAB 2019b。不过基本上,只要你的 MATLAB 版本是最近七八年发布的,它应该都能正常工作。 |
| |
好的,那么我们如何把所有东西联系在一起呢?实际上,我们这里要讲一个四步流程。首先,我们要拟合每个模型。我们会将数据以及每个观测值所在的集合发送给每个软件。 |
| |
一旦我们拟合了模型,我们就想输出这些拟合结果及其预测,并将它们添加到 JMP 可以查看的数据表中。 |
| |
所以当然,我的警告是,一定要确保你命名的东西能够说明你在哪里拟合了模型,或者你是如何拟合模型的。我接下来会举出这两个方面的例子。 |
| |
所以第三步,根据模型,你可能需要查看一些模型诊断。仅仅因为一个模型拟合得很好……根据数值来看,它似乎拟合得很好,比如,看一下你的残差图,你可能会很快发现 |
| |
最感兴趣的领域不太适合。 |
| |
或者残差有问题等等。所以我们也会演示如何输出这类数据。 |
| |
最后,我们将使用模型比较平台,将所有内容放到一个大表中来比较数字,这比来回翻转要容易得多。 |
| |
好的,我们现在将步骤分解得更详细一些。第一步,也就是进行模型拟合,我们基本上有两个选择。首先,我们可以通过 JSL 告诉 JMP 调用你选择的软件。 |
| |
把数据和代码发送给它,让它适应。所以,实际上,我会暂时放下这个,直接去做这件事。 |
| |
所以你在这里看到,我有一些用于实际调用 R 的代码。 |
| |
完成后,我会调用 Python,完成后,我会调用 MATLAB,然后把所有东西整合在一起。我稍后会详细介绍一下代码,但运行起来大概需要三四分钟。我现在就来运行一下。 |
| |
当我们准备好了,我们就会回到他身边。 |
| |
所以我们的另一个选择是创建一个包含验证的数据集。我们创建一个包含验证列和/或测试列的数据集,具体取决于有多少 |
| |
数据集被拆分成不同的数据集。我们计划在需要的软件上运行,当然,输出结果也是我们需要的。 |
| |
当然,还有一些警告。确保你……无论你使用的软件,都具备拟合模型所需的功能。 |
| |
在尝试将模型与事物进行比较之前,请确保模型已完成拟合。 |
| |
确保输出格式是 JMP 能够读取的。值得庆幸的是,JMP 可以读取相当多的内容,所以这并非四个警告中最大的一个。 |
| |
但正如我之前警告过的那样,请确保每个模型的预测与原始数据集的正确观察结果相对应。 |
| |
所以这又回到了问题:如果这是训练,如果这是训练观察,当你在 JMP 中拟合它时, |
| |
无论你用什么软件进行拟合,它最好是一个训练观察值。如果在 JMP 中验证,那么在其他地方也验证。如果在 JMP 中测试,那么在其他地方也测试。 |
| |
所以一定要确保所有数据都对应正确,因为我们最不想看到的就是看着测试集说:“哦,这个拟合得好多了。” 嗯,这是因为拟合的观测值权重不同,而且没有任何真正的异常值。这最终会扭曲你的思维。所以 |
| |
我要提醒一下,对不起,我要提醒一下。 |
| |
好的。正如我之前提到的,我目前正在后台运行一个示例。我想稍微详细地介绍一下我正在做的事情。 |
| |
看来我要用 R、Python 和 MATLAB 来拟合神经网络。所以如果我想在 R 中实现这个功能,我需要在 R 中安装两个包,除了基础安装包之外,就是 Keras 包和 Tensorflow 包。 |
| |
numpy、pandas 和 matplotlib。 |
| |
所以,numpy 可以很容易地进行一些计算;pandas 可以用来处理数据……一些数据操作;matplotlib 用来绘制图表也应该很简单。然后在 MATLAB 中,我使用深度学习工具箱,无论你是否可以使用它。 |
| |
好的。第二步,我们要将预测结果添加到 JMP 数据表中。如果您使用 JMP 调用软件,您可以使用 JSL 代码检索这些预测结果并将其添加到数据表中,以便稍后进行比较。 |
| |
那么您可以采取的另一种方法是让软件自行运行并保存输出,您可以快速告诉 JMP,去拉取该输出文件,然后进行一些操作,将预测结果带入存储结果的数据表中。 |
| |
现在我们也可以读取诊断图了。在这种情况下,我通常会将这些诊断图保存为图形文件。对我来说,它会是 PNG 文件。当然,无论哪种格式 |
| |
您可以使用的图形。JMP 无法处理所有类型的图像,但我相信 PNG 可以映射 jpg 和其他一些图像……它们已经涵盖了您常用的图像。 |
| |
所以第二个注意事项我使用它作为模型比较平台,但为了帮助识别你...你适合什么模型以及你适合在哪里, |
| |
我通常建议为每个添加的预测列添加以下属性。因此,我们在这里看到,我们正在发送感兴趣的数据表,这个属性称为“预测”。 |
| |
所以,无论你用什么来预测事物(现在的价值可能不是最好的选择),但是 |
| |
但是有了这个创建器,它就会告诉我,我到底用了什么软件来创建这个模型。所以我在这里用的是 R。它显示了 R,所以它实际上可以放在屏幕上。Python 和 MATLAB 有点太长了,但我们可以在这里输入任何我们想要的字符串。 |
| |
当我在这里更详细地介绍代码时,您就会看到这些。 |
| |
这很方便,因为我稍后还要在 R 中拟合多个模型。所以,如果我正确选择列名,并且有多个由 R 创建的模型,我仍然知道我实际查看的是哪个模型。 |
| |
好的,这就是典型的模型比较对话框的样子。 |
| |
我要指出的一点是,这大概就是我在所有模型拟合结束时点击一下的样子。你可以看到我有几个预测变量。我有 MATLAB、Python 和 R 的神经网络。 |
| |
各种预测形式;我曾经使用 JMP 来适应一些东西。 |
| |
现在,人们通常会把验证列放在一组, |
| |
这样它就能把训练、验证和测试分组。实际上,我更喜欢把它放在这里的 By 语句中。我稍后会在这里演示。不过,你也可以把它放在 |
| |
但总而言之,我更喜欢这种方式的输出。 |
| |
所以这就是为什么现在我可以清楚地看到,这些都是训练, |
| |
这些都是验证(不应该通过标题看到)并且这些都是测试。 |
| |
如果你使用验证集作为组变量,你会得到一个包含 21 个条目的大表。现在会多出一列,上面写着“训练集验证集测试集”,或者在我的情况下是 012,但是 |
| |
这样,我就不用费力思考了。我不用向任何人解释“012”是什么意思等等。所以我才做出了那个选择。 |
| |
好的,在我要分解的例子中,我将使用经典的波士顿住房数据集。这个数据集包含在 JMP 中。这就是为什么我没有在演示文稿中将其作为文件包含的原因,因为如果您有 JMP,您就已经拥有它了。 |
| |
因此,哈里森和鲁宾菲尔德对房屋中值有几个预测指标,例如人均犯罪率、每个城镇非零售商业用地面积比例, |
| |
无论你想买什么,平均房间数,按城镇划分的师生比例(所以如果有很多老师,而学生人数不多,这通常意味着更好的教育,这是很多人 |
| |
(已找到)以及其他几个。我不会在这里尝试全部介绍这 13 个。 |
| |
好的,我先简单介绍一下我之前研究过的模型的背景。然后我会深入研究 JSL 代码以及我是如何把所有东西都拟合起来的。 |
| |
我研究过一些模型。首先是典型的线性回归模型。这里你看到的是一个简单的线性回归模型。我只是用中位数来拟合税率。 |
| |
但我当然会使用多元线性回归并全部使用它们。 |
| |
所以, |
| |
但是由于有 13 个不同的预测因子,并且知道其中一些可能相互关联,我决定也许值得研究其他几种类型的回归。 |
| |
其中一种叫做桥式回归。它实际上就是线性回归,本质上增加了一个约束条件, |
| |
我的参数的平方值不能大于某个常数。 |
| |
我可以……事实证明我实际上可以将其重写为一个优化问题,其中 lambda 的某个值对应于 C 的某个值。 |
| |
因此我只是尝试使用这个额外的惩罚项来最小化它,而不是您习惯看到的典型最小二乘法。 |
| |
这被称为收缩法,因为随着我把它变得越来越小,所有这些值都会越来越接近于零。所以,当然,我需要思考一下,我希望它有多严格。 |
| |
现在有了收缩,它会慢慢地把所有变量推向零。但有了另一种惩罚项,我实际上可以完全消除一些惩罚项。 |
| |
我可以使用一种叫做套索的方法。所以这里的约束是,好的,我不取参数估计值的平方,而是取这些参数估计值的绝对值之和。 |
| |
因此,实际上会发生的是,那些非常弱的参数估计值实际上会被设置为零,这有点像 |
| |
如果你愿意的话,可以消除不重要的术语。 |
| |
为了直观地展示套索和岭回归的作用,对于岭回归,这里的圆圈代表惩罚项。 |
| |
这里我们考察的是参数空间。真正的最小二乘估计应该在这里。但我们还没有完全达到这个目的,因为我们还有额外的约束。 |
| |
所以最后,我们找到……基本上,我们在哪里得到与圆接触的最小值。这就是我们的岭回归参数估计值。 |
| |
对于套索,画法类似,但现在你可以看到,有了绝对值,它更像一个菱形,而不是圆形。注意,这是二维的,当然,我们接下来会讨论超球体以及所有这些形状。 |
| |
但你可以看到,它正好与菱形的尖端相接。所以在这种情况下,β1 实际上等于零。这就是它消去项的方式。 |
| |
好的,我们要研究的另一件事是所谓的回归树。JMP 使用分割平台来实现这些功能。为了快速演示一下它的作用,我把所有数据都放在这里。 |
| |
所以我问自己的第一个问题是,这栋房子有多少个房间,我知道我的房间不可能只有 0.943 个,所以基本上, |
| |
我有六个或更少的房间。所以,先从树的这部分开始,不要从树的这部分开始。现在,如果我有七个或更多的房间,这立即告诉我,我将预测我的中位数 |
| |
值为 37。请记住,这是数万美元,因此为 370,000 美元。 |
| |
如果小于七,那么我接下来要问的问题是,lstat 有多大? |
| |
因此,如果它大于或等于 14.43,我会查看这个节点,突然间我的中位住房估计约为 150 万美元,如果我来到这里,它将约为 233 万美元。 |
| |
回归树的真正作用是将输入空间划分成不同的区域。我们对该区域内的每个值都给出相同的预测。 |
| |
所以你可以看到我在这里进行了分区...现在在这种情况下,我采用二维的,因为它更容易绘制... |
| |
所以你可以看到这棵树,我首先看 x1。现在看 x2,然后问关于 x1 的另一个问题,再问关于 x2 的另一个问题,这就是我最终划分输入空间的方法。 |
| |
现在这五个中的每一个都会有一个预测值。基本上就是这样。我从上面看。我会得到这个。但你可以看到 |
| |
根据五个区域中哪个区域正确,预测会略有不同。 |
| |
现在,我不会详细讲解如何安装这些,但是 |
| |
James、Witten、Tibshirani 和 Friedman 给出了一些帮助;Leo ??? 写了一本关于它的开创性著作,你可以去那里看看。 |
| |
接下来,我将讨论神经网络,它如今在机器学习等领域被广泛使用。这幅图展示了神经网络的大致结构。图中,我们只使用了 5 个输入,并在传递它们时使用了 13 个输入。 |
| |
到这些……这个隐藏层。每一个都通过激活函数进行转换。 |
| |
对于每个激活函数,您都会得到一个输出,我们将使用... |
| |
通常,我们只需使用这些输出的线性回归来预测中值。 |
| |
好的,那么 |
| |
实际上,神经网络从根本上来说是一种非线性模型,它们之所以被称为神经网络,是因为它们的表现形式通常是我们看待神经元在人脑中工作的方式。 |
| |
因此,每个输入都可以传递到隐藏层的节点。在隐藏层,你的输入会被推送到激活函数,并计算出一些输出,每个输出可以传递到另一个隐藏层的节点,或者作为网络的输出。 |
| |
现在在 JMP 中,您只允许使用两个隐藏层。 |
| |
说实话,就创建神经网络而言,没有什么规定说你不能拥有 20 |
| |
我们现在关心的是。说实话,有些统计理论表明,我们可以近似任何连续函数, |
| |
给定一些边界条件,并设置两个隐藏层。这很可能就是 JMP 做出这一决定的原因。 |
| |
线性、双曲正切和高斯径向基。所以事实上, |
| |
在这些节点上,注意这里的小曲线。我相信那是双曲正切函数;线性函数是一条向上的直线;而高斯径向基函数,我相信看起来更像一条正态曲线。 |
| |
这就是神经网络平台。我们最后要看的是投影寻踪回归。我想举个JMP做不到的例子。 |
| |
嗯,投影寻踪回归最初是由斯坦福大学的杰罗姆·弗里德曼和施图茨勒提出的模型。他们的模型进行预测……其预测形式为 y 等于 beta i、f sub i 和输入的线性变换之和。 |
| |
这实际上有点类似于神经网络。这里有一个隐藏层,有 k 个节点,每个节点的激活函数为 fi |
| |
L. 事实证明,通过投影寻踪回归,我们实际上也要估计这些 f sub i。 |
| |
通常,它们会采用某种平滑方法或样条拟合。通常,f 子 i 被称为脊函数。现在我们有了 alpha 值、beta 值和需要优化的 F 值。所以,通常来说,这是一个分阶段的拟合过程。我现在不会深入探讨细节。 |
| |
好的,我已经了解了我所有的模型。 |
| |
现在我要展示一些输出,希望一切看起来不错。在开始使用 JMP 之前,我要注意的是 |
| |
在 R 中为神经网络设置种子非常困难,在 Python 中则更是如此。所以请注意,如果你运行我的代码,你得到的结果可能与我得到的并不完全一致,但应该会非常接近。所以, |
| |
让我们看看我们得到了什么。这就是我得到的输出。不幸的是,现在一切似乎并不完美。 |
| |
所以, |
| 卢卡斯 |
我这里有什么?我有训练集、验证集和测试集。所以我们很快就发现其中一个模型拟合得不太好。不幸的是,R 中的神经网络发生了可怕的事情。 |
| |
它肯定是在输入空间中抓到了一个不好的起点之类的。所以它没能拟合出一个很好的模型。 |
| |
因此不幸的是,非线性模型的起始参数很重要;在某些情况下,我们会受到它们的困扰。 |
| |
但如果我们看看其他所有因素,似乎都拟合得相当好。至于什么是“相当好”,我们可以争论,但我看到的R平方比0.5高1个。我看到的是根均值 |
| |
这里的平方误差大约在5左右,甚至我们的平均绝对误差也在3左右。现在就训练而言,看起来投影寻踪回归表现最好。 |
| |
如果我使用验证数据集,它仍然看起来像 R |
| |
投影寻踪表现最好。但是如果我们看一下测试数据集,突然之间,投影寻踪回归就排在第二位了(假设我们忽略 R 的神经网络),排名倒数第二。 |
| |
通常在这样的框架中,我们会最密切地关注测试数据集,因为它没有以任何方式、形状或形式用于确定模型拟合度。 |
| |
根据这一点,我们可以看出, |
| |
JMP 的岭回归拟合效果最佳。 |
| |
我们可以看到,这里的 R 平方是 0.71,之前是 0.73,这里也是 0.73,所以我们可以看到它始终是拟合的 |
| |
三个数据集都得出了相同的结论。所以,如果我被迫做出决定,仅根据我目前看到的情况,我可能会选择 |
| |
岭回归。也就是说,我们这里有一大堆诊断之类的东西。所以,如果我想看看 R 的神经网络发生了什么, |
| |
我很快就发现,刚进去几步就发生了一些事情。正如你所见,它的拟合效果非常糟糕,因为几乎所有东西的预测值都是22万左右。 |
| |
所以我们知道在安装过程中出了问题。 |
| |
我们看到岭回归看起来是最好的。我们来看看它的结果。我一会儿会快速展示一下我的 JSL 代码 |
| |
展示了我是如何做到这一切的,嗯,我们可以看到这是岭回归的参数估计值。我们可以看到岭诊断图,所以数据与原始估计值相比并没有缩小太多。 |
| |
您可以从带有日志的验证测试中看到诸如“没有”之类的内容。 |
| |
右边是残差图,这些是实际值和预测值的乘积。 |
| |
从训练集可以看出,似乎有一些代价较高的点预测得不太好。这里出现的点比测试集少,看起来我们并没有遇到太多麻烦。这里有几个点有点奇怪,但总体来说,我们可以看出 |
| |
当我们在价格较低的房屋时,这三个数据集都相当吻合。同样,我们可能想问问自己,这些数据集发生了什么,但是, |
| |
目前看来,这似乎是最好的。所以我们可以参考一下其他的。 |
| |
看这里。我们先来看一下 MATLAB。 |
| |
你也可以在这里看到训练测试验证。这里我们输出……MATLAB 输出了一个诊断结果,你可以看到它花了几个 epoch 才完成。 |
| |
但值得庆幸的是,正如我们所见,MATLAB 运行速度非常快。 |
| |
然后实际情况就在这里预测。 |
| |
这一切都是我们可以看到的。 |
| |
好的,我现在要花几分钟来看一下代码。 |
| |
当然,有几点需要注意,确保安装了所有东西,这样你才能真正运行所有这些,因为如果没有,JMP 就会惨败,不会吐出预测,然后它会失败,因为它找不到预测。 |
| |
JMP 能够使用代码创建验证列。所以我选择了 60 20 20。我在这里选择了随机种子,这样您就可以使用与我相同的训练验证测试集。 |
| |
所以实际上,目前我最终要做的是保存训练、验证和测试的数据。我实际上会暂时删除那一列。 |
| |
我在这里这样做的原因是因为我要将数据集发送到 R、Python 和 MATLAB,并且当其中的所有内容都是输出或所有输入时,编码会更容易。 |
| |
所以我不想要一个不属于任何类别的验证列,这样一来,验证起来就有点困难了。所以我最终的做法是,把数据集发送给它, |
| |
我把训练、验证和测试的行发送给它,然后我调用 R 代码来运行它。现在你就可以真正地 |
| |
把实际的 R 代码放在这里。我选择只在这里写一行,这样就不用一直滚动了。不过你也不必担心。如果只有几行代码,就像你之前在演示文稿中看到的那样,我会直接把它粘贴到这里。 |
| |
一旦完成,就会发现......这段代码吐出了 |
| |
诊断图片。我们看到它在六七次迭代之后就停止了,我们可以这么说。 |
| |
并且在这个脚本中拟合了岭回归,所以我们得到了两张图片。所以我把那一张也导出来,保存并加上了轮廓框。现在,这些都放在了所有代码的末尾。 |
| |
然后我得到输出,稍后我会将它们添加到此处的数据表中。 |
| |
好的,我在这里给出一些代码。假设你有 600 万个观测值,实际拟合模型需要 24 小时,你可能不会想在 JMP 中运行它。 |
| |
因此,你可以从这里编写一小段代码,你可以说,嘿,我 |
| |
好的,我只需要打开我关心的数据表。我会告诉 R 暂时在其他地方运行它,一旦我的系统发出绿灯,表示它完成了,我就可以说,好的,去打开它的输出,把它导入 |
| |
我的数据表。所以,这是你可以实现其中一部分功能的方法。当然,你也想把这些图片文件保存到某个地方,然后使用这段代码。但这部分代码完全一样。 |
| |
好的,对于 Python 来说,它非常类似。我会把这些东西传递给它。运行一些 Python 代码,输出诊断图和预测结果。 |
| |
我给出了一些 Python 代码,你看,它和我们在 JMP 中做的非常非常相似。在这种情况下,我只需要打开一个 CSV 文件。复制列进去然后关闭它,因为我不再需要它了。 |
| |
然后再次用 MATLAB 运行同样的游戏。处理好资源后,运行 MATLAB 脚本。我得到了我之前导出的 PNG 文件。把它保存到我需要的地方,保存预测结果。如果你需要的话,可以获取它。 |
| |
您不需要从这里运行它,只需使用一点示例代码即可。 |
| |
好的,现在我已经调用完了 R、Python 和 Matlab,我把验证列带回来,以便 JMP 可以使用它。这样我就记住了哪个是哪个了。 |
| |
因此,默认情况下,JMP 会查看我们将要使用的验证列中的值。最小值是训练集,次大值是验证集,最大值是测试集。现在,如果您进行 K 折交叉验证,它会告诉您是哪一折。因此,它会遍历 012345678 等等。 |
| |
然后创建这个。然后我又在这里创建了这个,这样我的输出中就会显示训练、验证和测试,而不是 012,这样会更清晰一些。 |
| |
明白。所以,如果我要向一个从未运行过 JMP 的人演示,他们不会知道 012 是什么意思,但他们应该知道训练、验证和测试是什么。 |
| |
好的,现在我开始将预测添加到我的数据表中。嗯,这就是我之前演讲中提到的那个 set 属性。 |
| |
所以我的创建者MATLAB,我已经指定了列名,所以,我知道这是MATLAB的神经网络预测。所以我可能不一定需要创建者,但万一我在命名上有点马虎 |
| |
很抱歉。 |
| |
因此我们可以得到所有的投影寻踪回归、神经网络等等。 |
| |
然后我还注意到,嘿,我在 JMP 中拟合了岭回归、套索、线性回归。 |
| |
我在这里做了所有这些。我在这里做了我的拟合模型,我的广义回归。把这些都吐出来。 |
| |
支持我的预测公式。 |
| |
最后绘制我的实际结果和预测结果,以获得完整的输出。 |
| |
我要拟合我的神经网络。验证列呢?我迁移了协变量。通常情况下,当我们在零附近缩放变量时,神经网络的拟合效果会更好一些,而不是像通常的输出那样。 |
| |
我的第一个隐藏层有三个节点。第二个隐藏层有两个节点。这里它们都是线性激活函数。结果发现,对于上面的三个隐藏层,我使用了受限线性单元激活函数,因此略有不同。 |
| |
但我发现,不管怎样,它们似乎都差不多适合。 |
| |
5. 这意味着,嘿,我要尝试五组不同的起始值,无论哪一组效果最好,我都会保留它。 |
| |
从我的代码中可以看出,我可能应该用 R 来实现这一点。它做了类似四循环的操作,做了好几个,最后选出效果最好的那个。所以,对于未来的工作,我会选择这个方法。 |
| |
然后我把这些东西保存起来,就可以进行模型比较了。现在我把所有这些新列都放进模型比较中。 |
| |
稍微滚动一下。正如我之前提到的,这里我正在执行验证。 |
| |
最后,我只需进行一点编码,让它看起来就像我想要的那样。 |
| |
所以我得到了这些大纲框,只是为了说明训练诊断、验证诊断、测试诊断,而不是 JMP 通常说的东西。 |
| |
我要得到这些诊断图。 |
| |
现在我只是想说,我只想抓住其中的一部分输出。 |
| |
我将快速制作一些残差图,因为并非所有图都能立即吐出这些图,特别是来自 MATLAB、Python 和 R 的图。 |
| |
设置这些标题,然后我在这里创建大旧表或大旧对话框。 |
| |
然后我把一切都记录下来。 |
| |
这样既美观又整洁。把一堆东西都关起来,我就不用担心了。最后我做的是,当我打开其中一个的时候, |
| |
下面的所有其他内容都会立即打开,而不是 |
| |
我必须点击六七个不同的选项。你可以看到,我必须点击这里和这里, |
| |
这边还有三个。我猜是多了一个。抱歉。不过这样我就不用点击它们了,它们会自动打开。 |
| |
这就是最后一部分代码的作用。 |
| |
好的。 |
| 卢卡斯 |
这只是输出和实时运行的不同版本。但它也可能看起来像这样。 |
| |
正如我所提到的,在代码中,你看到了,你看到了其他的东西,这就是我们所看到的。 |
| |
理查德 |
| 卢卡斯 |
不。总而言之,模型比较平台真的是一个非常好的工具,可以在一个地方比较多个模型的预测能力。你不必在各种工具之间来回切换。你只需查看眼前的一切即可。 |
| |
这种灵活性甚至可以用于拟合 JMP 中无法拟合的模型,或者比较 JMP 中无法拟合的模型。 |
| |
有了它,如果我们需要拟合非常大的模型,而这些模型需要很长时间才能拟合,我们就可以告诉它们进行拟合。将所有内容导入 JMP,然后轻松查看所有结果,以确定下一步。 |
| |
最后,感谢您抽出时间。 |