扬声器 | 成绩单 |
| 卢卡斯 | 好的,谢谢大家来听我的演讲。 我叫卢卡斯·贝弗林。 我是英特尔的统计学家。 |
| 今天我将讨论如何使用 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,但 JMP 可以处理任何大于 2.9 的内容。 |
| 然后同样的,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,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 的某些值。 |
| 所以我只是试图用这个额外的惩罚项来最小化这个,而不是你习惯看到的典型的最小二乘法。 |
| 现在,这被称为收缩方法,因为当然,当我让它变得越来越小时,它会将所有这些推得越来越接近零。 因此,当然,需要考虑一下我希望它的限制程度如何。 |
| 现在随着经济萎缩,它将把每个人慢慢推向零。 但使用另一种惩罚项,我实际上可以完全消除一些项。 |
| 我可以使用一种叫做套索的东西。 所以这里的限制是,好吧,我只取这些参数估计值的绝对值之和,而不是参数估计值的平方。 |
| 事实证明,实际上会发生的是那些非常弱的参数估计本身设置为零,这可以作为 |
| 如果您愿意的话,可以删除不重要的术语。 |
| 因此,我们可以直观地了解套索和岭回归正在做什么。 所以对于岭回归来说,这里的圆圈代表惩罚项。 |
| 在这里我们正在研究参数空间。 所以真正的最小二乘估计就在这里。 所以我们还没有完全实现这一点,因为我们有这个额外的限制。 |
| 所以最后,我们基本上找到了在哪里……我们在哪里得到接触圆的最小值。 这就是我们的岭回归参数估计。 |
| 对于套索,类似的绘图,但您现在可以看到绝对值,这更像是菱形而不是圆形。 现在请注意,这是二维的,当然,我们将进入超球体和所有这些形状。 |
| 但你可以在这里看到,注意它正好接触到钻石的尖端。 因此,在这种情况下,贝塔一实际上为零。 这就是它消除术语的方式。 |
| 好的,我们要看看的另一件事是所谓的回归树。 现在,JMP 使用分区平台来执行这些操作。 所以只是为了快速演示一下它所显示的内容,好吧,我拥有所有数据。 |
| 所以我要问自己的第一个问题是,住宅中有多少个房间,我知道我不能拥有 0.943 个房间,所以基本上, |
| 我有六个房间或更少。 所以,从树的这一部分下来,我们不要从树的这部分下来。 现在,如果我有七个或更多房间,这会立即告诉我我将预测我的中位数 |
| 值为 37。 请记住,它的单位是数万美元,因此请填写 370,000 美元。 |
| 如果它小于 7,那么我问的下一个问题是,lstat 有多大? |
| 因此,如果它大于或等于 14.43,我会查看此节点,突然间,我的住房中位数估计约为 150 格兰特,如果我来到这里,它将约为 233 格兰特。 |
| 因此,回归树真正所做的是将输入空间划分为不同的区域。 我们对该区域内的每个值都给出相同的预测。 |
| 所以你可以在这里看到我已经分区了......现在在这种情况下,我采用二维的,因为它更容易绘制...... |
| 所以你可以在这里看到这棵树,我首先在这里查看 x1。 现在看看这里的 x2 并询问关于 x1 的另一个问题,并询问关于 x2 的另一个问题,这就是我最终对输入空间进行分区的方式。 |
| 现在这五个中的每一个都有一个预测值。 这基本上就是这个样子。 我从上面看这个。 我会得到这个。 但你可以在这里看到 |
| 预测会略有不同,具体取决于五个区域中哪一个是正确的。 |
| 现在,我不会过多讨论如何准确地适应其中之一,但是 |
| James、Witten、Tibshirani 和 Friedman 贡献了一点;狮子座???写了一本关于它的开创性的书,所以你可以在那里看看。 |
| 接下来,我将讨论神经网络,它现在在机器学习等领域被广泛使用。 这样就可以直观地了解神经网络的样子。 所以在这里,这个视觉在传递它们时只使用 5 个和 13 个输入 |
| 对于这些...这个隐藏层。 其中每一个都通过激活函数进行转换。 |
| 对于每个激活函数,您都会得到一个输出,我们将使用...... |
| 通常,我们只会使用这些输出的线性回归来预测中值。 |
| 可以,然后呢 |
| 实际上,归根结底,神经网络是非线性模型,实际上,它们被称为神经网络,因为其表示形式通常是我们如何看待神经元在人脑中的工作方式。 |
| 因此每个输入都可以传递到隐藏层中的节点。 在隐藏层,您的输入通过激活函数推送,并计算一些输出,每个输出可以传递到另一个隐藏层中的节点或作为网络的输出。 |
| 现在,在 JMP 中,您只允许使用两个隐藏层。 |
| 说实话,就创建神经网络而言,没有什么说你不能拥有 20 个神经网络 |
| 我们现在关心的是。 说实话,有一些统计理论表明,嘿,我们可以近似任何连续函数, |
| 给定一些边界条件,有两个隐藏层。 这很可能就是 JMP 做出这一决定的原因。 |
| 线性、双曲正切和高斯径向基。 所以事实上, |
| 在这些节点上,请注意这里的小曲线。 我相信这是双曲正切函数;线性将是一条向上的直线;我相信,高斯径向基看起来更像是一条正态曲线。 |
| 这就是神经网络平台。 所以我们要讨论的最后一个是所谓的投影追踪回归。 我想提取一些 JMP 根本无法做到的事情,只是在这里举个例子。 |
| 嗯,投影寻踪回归最初是由斯坦福大学的 Jerome Friedman 和 Steutzle 提出的模型。 他们的模型进行预测……做出 y 形式的预测,等于 beta i、f sub i 的总和以及输入的线性变换。 |
| 实际上,这有点类似于神经网络。 这里有一个隐藏层,有 k 个节点,每个隐藏层都有激活函数 fi |
| L。 事实证明,通过投影追踪回归,我们实际上也将估计这些 f sub i 。 |
| 一般来说,它们会是某种更平滑的拟合或样条拟合。 通常,f sub i 称为岭函数。 现在我们有 alpha,我们有 beta,我们有需要优化的 F。 所以一般会进行阶段式拟合。 现在我不会太深入地讨论细节。 |
| 好的,我已经浏览了所有模型。 |
| 现在我将展示一些输出,希望一切看起来都不错。 因此,在开始使用 JMP 之前我要注意的一件事是 |
| 在 R、Python 和 Keras 中为神经网络设置种子确实很困难。 因此请注意,如果您获取我的代码并运行它,您可能不会得到与我所得到的完全相同的结果,但它应该非常接近。 话虽如此, |
| 让我们看看我们得到了什么。 这就是我得到的输出。 不幸的是,现在事情似乎并不完美。 |
| 所以, |
| 卢卡斯 | 我这里有什么? 所以我有我的培训、我的验证和我的测试。 因此我们很快发现其中一种模型不太适合。 不幸的是,R 中的神经网络发生了一些可怕的事情。 |
| 它一定是在输入空间中抓住了一个不好的地方,然后再开始。 所以它不适合一个很好的模型。 |
| 不幸的是,非线性模型的起始参数很重要;在某些情况下,我们会被它们咬。 |
| 但如果我们看看其他一切,其他一切似乎都很合适。 现在什么是相当好,我们可以争论这一点,但我看到 R 方,一个高于 0.5。 我看到根平均值 |
| 这里的平方误差大约为 5 左右,甚至我们的平均绝对误差也在 3 的范围内。 现在对于训练来说,看起来投影寻踪回归效果最好。 |
| 如果我归结为验证数据集,它看起来仍然像 R |
| 投射追踪表现最好。 但如果我们查看测试数据集,突然之间,不,投影追踪回归排在第二位,假设我们要忽略 R 中的神经网络,这是第二差的。 |
| 通常,在这样的框架中,我们会查看最接近的测试数据集,因为它没有以任何方式、形状或形式来确定模型拟合。 |
| 基于此我们看到,看起来像 |
| JMP 的岭回归拟合效果最好。 |
| 我们可以在这里看到,它的 R 平方为 0.71,之前约为 0.73,这里约为 0.73,所以我们可以看到它始终拟合 |
| 所有三个数据集都是同样的事情。 因此,如果我被迫做出决定,仅根据我目前所看到的情况,我可能会选择 |
| 岭回归。 话虽这么说,我们这里有一大堆诊断等等。 所以如果我想看看 R 神经网络发生了什么, |
| 我很快就看到了,刚走几步就发生了事情。 正如您所看到的,它的拟合工作非常糟糕,因为几乎所有内容都预测为 220 或数千。 |
| 所以我们知道在安装过程中出了问题。 |
| 所以我们看到岭回归看起来是最好的。 那么让我们看看它吐出了什么。 所以我很快就会展示我的 JSL 代码 |
| 显示了我是如何做到这一切的,但是,嗯,我们可以看到这里是岭回归的参数估计。 我们可以看到山脊诊断图,所以事情并没有比最初的估计缩小太多。 |
| 您可以从日志验证测试中看到,没有什么。 |
| 在右边,我们基本上有残差图。 这些都是实际的预测。 |
| 所以你可以从训练中看到,看起来有一些相当昂贵但没有得到很好的预测。 我们在这里看到的数量比测试集中的要少,看起来我们并没有遇到太多麻烦。 我们这里有几点有点奇怪,但我们可以看到一般情况 |
| 当我们住在价格较低的房子时,它非常适合所有三个数据集。 再次,我们可能想问自己这些发生了什么,但是, |
| 目前,这似乎是其中最好的。 所以我们可以从别人身上看到。 |
| 看这里。 我们将暂时了解一下 MATLAB。 |
| 因此,您也可以在这里看到训练测试验证。 所以我们在这里吐出...MATLAB 吐出一件事诊断,你可以看到它花了几个时期才能完成。 |
| 但值得庆幸的是,据我们所知,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 意味着什么,但他们应该知道训练、验证和测试是什么。 |
| 好的,现在我开始将预测添加到我的数据表中。 嗯,这就是我之前在演讲中提到的集合属性。 |
| 我的创建者是 MATLAB,我已经给出了列名称,所以,嘿,我知道这是 MATLAB 的神经网络预测。 所以我可能不一定需要创建者,但以防万一我在命名时有点草率 |
| 对于那个很抱歉。 |
| 所以我们可以获得所有的投影寻踪回归、神经网络等等。 |
| 然后我还注意到,嘿,我在 JMP 中拟合了岭回归、套索、线性回归。 |
| 所以我在这里做了这一切。 所以在这里我做了我的拟合模型,我的广义回归。 把这些都吐出来。 |
| 保存我的预测公式。 |
| 最后绘制我的实际输出和预测的完整输出。 |
| 我将适应我的神经网络。 我可以说验证栏吗? 我转移了我的协变量,一般来说,当我们将事物缩放到零附近时,神经网络往往会更适合一点,而不是通常的输出。 |
| 所以我的第一个隐藏层有三个节点。 我的第二个隐藏层有两个节点。 这里它们都是线性激活函数。 事实证明,对于上述三个,我使用受限线性单位激活函数,因此略有不同, |
| 但我发现无论如何它们似乎都差不多。 |
| 5. 这意味着,嘿,我将尝试五组不同的起始值,其中最好的一组就是我要保留的值。 |
| 正如您从我的代码中可以看出的那样,我可能应该使用 R 来完成此操作。 它完成了四次循环,完成了其中的几个,吐出做得最好的一个。 因此,对于未来的工作,这将是我会去的地方。 |
| 然后我把这些东西保存起来,现在我准备好进行模型比较了。 所以现在我将所有这些新列引入模型比较中。 |
| 滚动一点。 因此,正如我之前提到的,我在这里进行验证。 |
| 最后,我只是做了一些编码,使其看起来像我想要的样子。 |
| 所以我得到这些大纲框,只是说训练诊断、验证诊断、测试诊断,而不是 JMP 所说的通常内容。 |
| 我要得到这些诊断图。 |
| 现在我只是说我只想要部分输出来抓住它的句柄。 |
| 我将快速绘制一些残差图,因为并非所有残差图都会立即将其输出,尤其是来自 MATLAB、Python 和 R 的残差图。 |
| 设置这些标题,然后我在这里创建大的旧表格或大的旧对话。 |
| 然后我记录下一切。 |
| 所以它又漂亮又干净。 关闭一堆东西,这样我就不用担心事情了。 然后我最后所做的就是我想要发生的事情是当我打开其中一个时, |
| 它下面的所有其他内容都会立即打开,而不是 |
| 必须点击六七个不同的东西。 你可以看到,我必须点击这里和这里 |
| 这边,还有三个。 我猜还有一个。 对不起。 但这样,我就不必点击其中任何一个,它们会自动打开。 |
| 这就是最后一段代码的作用。 |
| 好的。 |
| 卢卡斯 | 所以这只是不同的输出和实时运行。 但这也是它的样子。 |
| 正如我提到的,在代码中,你看到了那里,你看到了我们所看到的其他东西。 |
| 理查德 |
| 卢卡斯 | 没有。 因此,总而言之,模型比较平台确实是一个非常好的工具,可以在一个地方比较多个模型的预测能力。 您不必在各种事情之间来回切换。 你可以只看眼前的一切。 |
| 这种灵活性甚至可以用于拟合不适合 JMP 的模型或比较不适合 JMP 的模型。 所以 |
| 有了这个,如果我们需要拟合需要很长时间才能拟合的非常大的模型,我们可以告诉它们去拟合。 将所有内容提取到 JMP 中,并轻松查看所有结果以尝试确定后续步骤。 |
| 感谢您抽出时间。 |