什么是新的MATLAB金融专业人士
从系列中:MATLAB在金融2020中的应用
MATLAB®具有与金融服务行业相关的重要能力。查看MATLAB开发环境中的工具,您可以使用这些工具将您的想法变为现实。主题包括将数据引入MATLAB,理解您的数据,新支持的金融分析算法和交易功能,高级分析,使用统一的建模平台,开发代码,有效的协作技术,以及共享您的模型万博1manbetx。
亮点:
- 在MATLAB中创建和回测投资策略
- 利用MATLAB进行可解释性机器学习
- 通过浏览器访问MATLAB
- 将MATLAB应用程序和模型部署到系统内部和云端
你好。我是MathWorks的Bob Meindl,我想感谢大家参加我们的讲座题目是MATLAB对金融专业人士的新启示?只是一个简单的家务整理。如果您有任何问题,请使用问答窗口,而不是聊天窗口。
我们不太关注聊天窗口,所以请把它们放在问答中。如果我们在会议中不能及时回答你的问题,最后我们会有一些时间。如果我们那时还没处理好,我们会确认后再联系你。现在,我想把话筒交给Greg McGean,金融服务部门的客户经理。格雷格?格雷格,我觉得你应该闭嘴。
哦,好了。大家下午好。我叫格雷格·麦克金。我是北美金融业的客户经理之一。Bob完成了大部分的后勤工作,但我想补充的是,这个演讲大约有一个小时,很多主题都可以展开。所以,如果你有一些可能感兴趣的话题,也许想深入研究,请告诉我。我很乐意将您的信息和问题转发给相应的客户经理,以便他们跟进。再次感谢大家,祝大家愉快。
史蒂夫,把它拿走。
太棒了。非常感谢大家。我叫Steve Notley。我是The MathWorks的应用工程师,我的专长是帮助金融服务行业的客户。所以我所做的就是和客户谈论他们正在解决什么样的问题,他们对我们的工具有什么样有趣的应用,并帮助他们找到一种方法,他们可以使用我们的工具的组合,来真正解决行业中那些紧迫的问题。
今天我们要讨论的是MATLAB中过去几个版本到R2020a当前版本的很多新特性,我们要讨论的是这些新特性如何帮助解决我们在金融领域看到的一些紧迫问题。就像格雷格说的,这是很多不同主题的一个样本。所以如果你真的有什么感兴趣的或者你认为与你相关的东西,一定要联系我们,我们很乐意安排时间详细讨论这些话题中的任何一个。所以绝对不要害怕伸出援手。说到这里,我们开始吧。
所以我们今天的议程将是这些新的功能组我们认为它们为你们提供了价值当你们在解决这些紧迫的问题时。所以今天我们将从,怎样才能发展得像你想象的那么快开始?所以这个问题的关键是激励我们在MathWorks所做的很多事情,我们如何设计我们的产品,这是一个中心问题,我如何让我的想法从一个想法变成一个原型,摩擦尽可能小?s manbetx 845我们想要确保从你一觉醒来脑中就有了一个绝妙的想法到你能够向人们展示你的原型之间的时间越短越好。
所以我们真正解决这个问题并帮助你降低障碍的方法是在我们的开发环境中添加许多新功能,以确保当你表达所有这些想法时,它是一个简单的,无缝的体验。与其停留在幻灯片上,我想我更愿意在MATLAB中展示。你可以在这里看到MATLAB,这里是我们的实时编辑器。你们中可能有一段时间没有使用过MATLAB并且习惯于编写。m文件的人,这看起来可能和你们上次看到的有点不同。所以我们的实时编辑器主要是用来创作我们所谓的实时脚本的环境,那些就是这些。mlx文件。如你所见,我这里开了一个。
因此,实时编辑器和实时脚本已经出现了相当多的版本。大概五年左右吧。但我们已经添加了很多功能,使其健壮,并扩展了可用的东西,使开发过程尽可能无缝地为您服务。我绝对推荐你检查一下它,因为在我们的生活脚本中,它的功能已经变得如此强大,以至于我在绝大多数的开发中都不再使用常规的。m文件了。在这样的环境中工作更容易。
因此,实时编辑器和实时脚本的真正含义是更多的是一个基于笔记本的环境,让你表达你的想法。因此,我将逐步通过一个示例脚本向您展示这些功能。首先我要运行这个,然后我会解释它们的不同特性。
我们这里有一个脚本来执行基本的投资组合优化。从它的外观来看,您可以看到脚本具有格式化的文本。它有一个目录之类的东西,它有可以独立运行的代码段。你会在这里看到运行这部分代码的输出显示成一行。
这是投资组合优化的第一步,我们从Excel表格中引入数据。我们有来自不同国家不同指数基金的价格数据。你可以在这里看到输出。
但是,让实时脚本与众不同的是,输出不只是静态的。我可以与它完全交互,我可以滚动,我可以右键点击它,复制输出,或者将它转换为脚本中的数据类型。所以这些不仅仅是静态输出。我可以通过这些东西来改变这个脚本的功能。
下一步我们画出这些价格信号,我们可以看到我们的图是一样的。这不是静态的。如果我想的话,我可以放大一部分。我可以看到,当我这样做时,实时编辑器实际上建议了我需要的代码片段。
我可以选择更新这段代码并将这些更改推回到代码中以便在下次运行这部分时以这种方式显示。所以我可以和它互动。我可以用任何我认为合适的方式来操作这些输出。
继续我的投资组合优化例子,我计算我的收益,得到我的均值和协方差,然后我继续使用我们的投资组合框架来建立实际的优化。之后我还会多讲一些关于投资组合框架的内容。一旦我完成了所有这些基本的东西,我就可以继续添加基团约束条件了。
我们要把资产分成三组,你可以看到这里我有这些小滑块对应这些边界。当然,我可以正常地编程这些,但我们的实时编辑器的一个新特性是能够插入这样的控件到你的脚本中。这些可以在屏幕的顶部找到你可以看到有一小部分有控件。如果我把它拉下来,你可以看到我有很多不同的东西我可以在这里插入这些小控件使我的脚本具有交互性。脚本的其余部分继续绘制这个有效边界,显示在这个边界上的最优投资组合权重,最后根据最大夏普比率选择一个最优投资组合。
所以像这些实时控制真的很有用,我认为,如果我想做一些事情,比如把它交给我的验证团队,这样他们就可以探索我的算法的不同输入,看看这是如何改变输出空间的。我可以隐藏这里的代码让它更像是笔记本上的一个轻量级应用,我可以利用这些约束看我的有效边界更新,我的最佳投资组合选项更新,以及所有这些是如何反应的。这是一种非常强大的方式,可以让人们很容易地探索你的代码,也可以很容易地记录你的思路和你在分析过程中所采取的步骤。
在我们的控件旁边,你可能已经注意到这里有另一种新的部分叫做任务。实时任务是我们整合到最新版本的MATLAB中的东西。这是我们的新功能。这里的想法是,如果我点击这些,如果你能看到我有很多小组件的任务,我可能经常做。比如清理丢失的数据或连接表。
这背后的想法是,我们发现人们花了很多时间在这些小事上,而这些小事并不是工作流所特有的。在进行数据探索时,你可能会从清理缺失数据和清理异常数据开始。所以与其每次都花时间重写代码或者带着相同的10或15行代码去做这些不同的项目,我们希望你基本上能够挥挥手说,让它发生。这是足够的基线,我们应该能够做到。
我要在这里打开另一个脚本它是关于负载预测的这样你们就能看到其中的一些。我要在纽约ISO电网的负载附近输入一些数据。这类数据可以用于能源定价或直接的负荷预测。
然后我加载这个数据集,就像我之前说的,在这些数据分析工作流程的开始我可能想要清理我的数据或者去除我的异常值。我们可以继续使用实时任务。你可以看到我在这里插入了一个关于清除缺失数据的,我要做的就是选择我的输入数据,指定我想要的任何选项。这里我用它来填充缺失的数据。我们可以说我们想做这个线性插值,它会运行这个值,给我一个漂亮的图来显示它到底做了什么,并返回干净的数据。
你可以在下一节看到我们也有一个离群值数据,做同样的事情。我想用线性插值来插值离群点,我们可以从另一个角度看到修正后的结果。如果我在任何时候想要看到支撑这些的代码,我总是可以选择显示控件和代码,这样我就能知道这个在底层是做什么的,什么是可视化的,诸如此类的东西。所以我强烈建议检查实时任务来自动化这些工作流的某些部分。让我切换回幻灯片。
以同样的方式,我们有实时任务来自动化很多工作流程的部分,我们在MATLAB中也有这些叫做app的东西,它们已经存在了很长一段时间了,它们被设计来做同样的事情,但针对的是整个特定的工作流程。所以像机器学习或数据库访问是端到端自动化的。我将在后面的演示中展示其中的一些作为其他类别的一部分。
下面来看我们的数据。所以数据对于我们今天解决的很多问题都是至关重要的,我们总是发现人们会问类似这样的问题。我怎样才能花更多的时间来增加价值,并减少处理所有数据的时间?
我们所说的杂耍数据是什么意思呢?我们的意思是,我如何把它放到我的环境中在它上面进行计算?我要怎么格式化,我要用什么数据类型来表示这些?诸如此类的事情。我们不希望这成为你需要花很多时间担心的事情的一部分。我们希望你把时间花在增加价值上,做你的工作,而不是担心你将如何处理这些工作流程的末尾。
MATLAB有很多选项可以把数据输入到它里面不管你用什么方式存储数据。如果文件中有数据,或者很多文件中有数据我们有一个导入工具可以让你一键导入数据。它还允许您生成代码来读取类似的文件。你可以让MATLAB自动为这样的文件写一个读卡器函数。
如果您在数据库中有代码,我们有能力编写SQL查询并在MATLAB代码中直接执行它们。我们也有一个应用程序可以让你交互式地操作这些表,它会自动为你构造SQL查询。你也可以用这种方式执行它们。如果你有NoSQL数据库,如果你有Hadoop数据库或其他NoSQL框架,我们也有对各种数据库的支持。万博1manbetx所以一定要联系我们。
最后,如果你需要实时数据,MATLAB可以连接到一系列实时数据。像彭博,FactSet,路透社,不管你用的是什么,我们有很多合作伙伴公司的支持,让你可以把这些数据直接输入MATLAB。万博1manbetx所以一旦你输入了数据,用正确的方式表达是很重要的。因此,我们要复习一些数据类型,它们不是全新的,但在最近的几个版本中已经出现了,如果你还没有使用它们,我们绝对建议你检查一下。
其中之一就是表格,它非常适合混合类型或表格格式的数据。当涉及到索引和组织数据时,它给了你很大的灵活性。同样,在金融领域,时间戳显然非常重要。我们的datetime数据类型允许您在这些时间戳之上构建许多功能。
这是一个非常丰富,表达能力很强的数据类型它允许你做很多很好的事情,比如计算时间戳。一个例子是减去两个时间戳来计算它们之间经过了多少时间。它们还会自动考虑时区和夏令时等因素,让使用时间戳的工作更容易一些。
把这两者结合起来就是时间表,这对处理财务数据和解决财务问题有很大的影响。就像我说的,它结合了其他两种方法的优点。它具有表的所有灵活性,它受时间戳数据和datetime值的控制这些值是表中数据的主键。因此我们在此基础上构建了许多强大的功能,比如聚合和重新计时时间戳数据的能力。
因此,如果您有每天的数据,您想要聚合所有的值,例如,一个月的值,这是非常容易做到的时间表。也很容易做一些事情,比如同步两个不同的时间表并重新计算时间,以便它们具有相同的采样时间。诸如此类的事情。因此,如果您不使用这些数据类型,我绝对建议您使用它们,因为它们使您在处理财务数据时的工作变得容易得多。
因此,我们在金融服务领域看到的另一个日益普遍的挑战是处理大数据。现在,大量的数据通常是做各种复杂分析的起点。因此,如果你的数据不适合内存,有时这可能是很多工作。在某些语言中,这意味着编写自己的分块算法,决定如何将数据分段放入内存,决定如何更改算法,以确保每次操作更小的分段是安全的。它真的可以把一个平凡的任务变成一些更复杂的东西。
在MATLAB中,我们试着把这些抽象出来并在底层处理好这样你就不用担心这里的细节了。在MATLAB中,一个文件和100个文件之间的变化实际上就是这三行代码。我们设置了数据类型,这样你就可以保持所有的分析,所有的核心功能都是一样的,只需要稍微改变一下设置的方式并最终将数据收集到内存中,这样就可以流畅地处理任何大小的数据。所以我可以直接进入MATLAB给你们一个在MATLAB中处理大数据的感觉。
我们打开这个示例脚本。你可以看到我这里有什么,我的第一个命令有点不同它是大数据工作流的一部分是这个数据存储命令。这实际上是创建一个指向数据仓库的指针。对于这个例子,我将只使用一个CSV文件。但这可能是任何数量的CSV文件。我可以在这里加一个星号,它就会把这种模式的所有CSV文件当作一个大数据存储库。
类似地,我可以让这个点指向数据库,也可以让它指向云中的某个S3桶。它非常灵活,可以指向并用作数据存储库。这是第一步——创建数据存储的指针是大数据工作流的第一步。
我可以继续创建它。我们可以看到这里的一些设置,我可以预览我的数据是什么样的。然后我可以做一些事情,比如设置我想操作该表的哪些列来减少一些,然后我就可以创建我的高表数据类型。这是用这个高高的命令完成的。这是大数据工作流的第二条命令。
这就是神奇发生的地方,因为它的输出就是所谓的高表。但是我可以把它当作普通的表来处理。我可以使用很多相同的功能。我可以在内存中的表上做所有我期望能做的事情。在一个高桌子的场景中,我可以很容易地做所有这些事情。
我可以看到输出是一个m × 6的高桌子。所以是m因为我们不知道它到底有多高,对吧?这就是为什么——它还不在内存中,这就是我们处理大数据的方式。
从那里,就像我说的,我可以做很多相同的功能。我可以复制另一个变量并创建它的一个子集作为其中一列。我可以计算均值和标准差然后对输出进行运算。现在你会注意到输出看起来有点不同。它们只是这些问号因为计算被延迟了直到你把它写入数据,抱歉,写入内存。
最后,完成之后,我可以使用最后一个关键字,也就是这个gather命令。这就是MATLAB做一些跑腿工作的地方来确保你的代码在大数据上也能表现良好。因为它要做的是查看所有排队要在高台表上运行的命令。它会映射它们来计算,如何用最少的数据传递来执行所有这些操作?然后,它将使用并行计算,在可能的情况下使这个进程瘫痪,因为它正在运行所有这些计算,并将数据存入内存。
当处理非常大的数据时,这可以带来非常显著的性能提升。运行这个,你可以看到它会告诉我它正在使用什么并行资源,它会告诉我它需要多少个通道,它会给我一个它完成这些的速度的总结。最后,给我我想要的结果。
所有这些,就像我之前说的,我可以在普通的桌子上做。我可以做很多这样的操作而不用担心我的数据可能会耗尽内存。这段代码现在基本上是大数据安全的,我不必太担心支撑它的数据量。
这就是我们为处理大数据而增加的功能的变化。让我们来谈谈我们在这里添加的一些特定于金融的功能。所以我们的很多金融功能都适合一些不同的工具箱,这些工具箱是为计算金融的特定领域设计的。
所以我们经常看到的一个问题是,我有这些很平常的财务任务——这些我每天都要做的事情——我想以一种快速的方式来完成它们,而且这种方式也有可能实现自动化。我们的其中一个产品就是我们的金融工具s manbetx 845箱它有很多关于资产配置的功能以及一些基本的风险管理和定价功能。所以我们最近的一些更新是有约束的投资组合优化的能力我们最近增加了一些额外的约束比如设置最小和最大资产数量的能力。我们已经扩展了这些完整性约束,以允许使用和平均方差,MAD和CVaR投资组合优化。这个框架的使用就是我们在投资组合优化的第一个例子中看到的。
其中,我们有一系列新的仿真方法和一些新的默认概率建模方法。我强烈建议大家看看下面的例子。特别是Black Litterman投资组合优化和HRP实例。很多人在这方面做了很多有趣的研究,所以我绝对推荐大家去看看。
在定价和对冲方面再深入一点,我们有金融工具工具箱可以让你设计和定价各种金融工具。所以我们在这个版本中增加了很多功能围绕不同的选项和不同的定价方法,基于树的方法,封闭形式的解决方案,等等。万博 尤文图斯但最大的变化是你在上面看到的第一个。我们真的把这些都转化成了一个面向对象的框架来给你的工具定价。
从图中可以看到,我们现在有了一个通用工具和价格对象。作为这些的一个参数,你指定了你想使用的工具类型和定价器。光线曲线和模型对象也一样。这里的代码对于不同的对象,抱歉,不同的工具和不同的定价器看起来很不一样现在看起来很像了,你可以重用很多代码并很容易地针对不同的定价应用进行更改。如果你在做这类定价工作,我强烈建议你检查一下。
在计量经济学和时间序列预测方面,我们增加了一些强大的新的时间序列预测模型,一些额外的测试和特征选择选项。我们在几个版本之前增加了一个很大的特性,它确实影响了我们如何进行计量经济学建模和时间序列建模,这就是计量经济学建模器应用程序。所以我可以直接进入MATLAB,让你们了解它是什么样子的。
这是我之前提到的第一个我们今天要在这里看到的应用。我有一些标普500指数的数据可以加载到MATLAB中。你可以看到它进入了这个索引变量。我可以打开它,你可以看到它只是一个直线列变量显示了标准普尔500指数随时间变化的值。
从这里,我可以转到app选项卡。这些都是MATLAB中可用的应用程序它们对应于所有不同的工作流程我们可以使它们变得非常简单和交互式。如你所见,有很多不同的应用领域。我强烈建议,如果你从来没有看过这个,检查一下这些,看看是否有与你经常使用的东西相对应的。因为它们可能会为你节省一些时间,让你的生活更容易一些,当你下次经历那个工作流程时。
出于我们的目的,我们将使用计量经济学建模器。我们可以打开它。我的另一台显示器上出现了这个。
从这里开始,我们可以把数据带进这个工作区。我们可以导入索引数据,可以看到上面的图。这是标准普尔500指数随时间变化的价值。从这里开始,我就可以进行完整的时间序列建模工作流程了。
因此,如果我想做一个平稳性测试作为第一步,我可以进入我的测试,选择一个KPSS测试,并运行它。虽然我们很确定它不是静止的,我们可以从测试结果中看到这一点。因此,也许我想改变这个。我可以看到这里有一个用于差分的按钮,我可以继续使用它来差分我的时间序列。如果我想再做一次测试来确认,我可以这样做,看到这一次它似乎表明它是静止的,这是我们所期望的。
从那里,我可以看看我的ACF, PACF图,并做任何我想做的诊断,当我通过这个过程来弄清楚我将如何构建这个模型什么样的模型可能能够准确地捕捉这个时间序列。做了这些之后,我们就可以继续建立一个模型了。所以我可以通过下面这个工作看到我可以使用的所有类型的模型,现在我们只做一个简单的ARIMA模型。
当我点击它时,它会给我一个选项来选择所有的参数。我们做了一次积分,假设我们想要两个自回归函数和两个移动平均阶。这会给我这个方程,然后我可以继续估计它。
这将会继续下去并适合我的ARIMA模型。它会告诉我它的拟合程度,给我一些重要的度量,比如拟合的优度,它估计的实际参数,残差图。从这里开始,如果我想继续做一些诊断,我有很多东西可以看。
如果我想做残差直方图,它也会出现在这里。我们可以看到,这很好地分布在0附近,这是我们期望看到的。一旦我完成了这个过程,实际上,我显然会进行更多的测试。我可能会尝试一些不同类型的模型并检查其中一些模型的外观以及它们在数据上的表现。但一旦我完成了所有这些,我可能最终会得到一个我觉得舒服的模型我想用它来进行时间序列预测。
一旦我达到了这一点,我可以到我的出口区,我有一些选择。我可以把这个模型和其他任何变量导出到我的工作区中去预测或者用我想要的方式处理它。我还可以生成一个函数来遍历所有这些并在未来的任何时候对模型进行改装,这是我以后会详细讨论的内容。
我非常喜欢计量经济学建模师的一点是最后一个选项,生成报告的能力。我现在就开始做这个。我可以选择我想在报告中包含的内容,然后点击确定。我就叫它我的报告吧。
它实际上要做的是通过我所做的所有事情,我所做的所有图,我所做的所有测试,一直到拟合模型和做残差分析。它会运行所有这些,显示所有的数学运算,显示所有的可视化输出,它会将所有这些编译成一个PDF格式的报告,我可以用它来捕捉我的整个工作流程,我的思维过程,并确保我有一个工件我在执行这个时间序列分析时所采取的步骤。现在载入了。我的另一台显示器上突然出现了这个。
我们可以看到这个PDF这是它的结果,它经历了和我们一样的步骤。我们可以看到KPSS检验的表达式和结果,我们的差分结果,我们创建的图,最终方程,统计数据,我们模型的图拟合以及我们的残差诊断。当你在做这些时间序列分析的时候这对于捕捉和记录你的工作流程是非常强大的。我先把它关闭。
所以,如果你做这类工作,我绝对建议你检查一下。进入MATLAB对风险管理的功能,我们有很多公司和消费者信贷风险以及市场风险的选择。我们有能力使用copula对违约概率进行建模,我们有能力为您的消费信贷风险创建信用评分卡,我们也有一个完整的反向测试框架,其中包含一套广泛的模型,用于反向测试您的风险价值和预期短缺模型。
最后在交易方面,我们有功能可以让你直接从MATLAB中使用我们的交易工具箱来执行交易。在最近发布的版本中,有一些新的功能是合并了交易成本分析,并能够在执行交易之前运行计算来确定最优交易量和最小交易成本。我们还整合了对风力数据传输服务的支持万博1manbetx
从我们的一些基本金融模型开始,我们来谈谈如何在模型中思考。我们听到很多人对这个领域感兴趣的一个问题是,如果我是MATLAB新手,我如何进入高级分析?也许我更喜欢使用传统的金融模型或者我更喜欢使用优化或者机器学习等等。但是如果我是MATLAB的新手,其中的一些技术可能是相当令人生畏的或者是相当复杂的,用一门新语言学习这些东西可能会有很多开销。问题是,我们如何在MATLAB中让这个过程尽可能简单?
MATLAB的优点之一就是我们为所有这些分析提供了一个统一的平台。所以,无论你是在做传统的财务分析,还是基础的数学分析优化回归,一直到更尖端的或基于研究的技术——机器学习,深度学习,自然语言处理,不管它是什么——我们有一个平台,你可以用它来做所有这些事情。这样你就可以尝试这些不同的技巧,弄清楚它们是如何工作的,看看哪种方法最适合你。在此基础上,我们还为这些事情提供了非常简单,非常交互式的工作流程。
作为一个例子,让我们看看在MATLAB中进行机器学习工作流程是什么样子的。我能做的就是用一些我有的信用评级数据,我们会在MATLAB中打开它。你可以看到我有一些数字和分类指标,最终我这里有一个债券评级。
也许我从一个评级服务公司得到了这样的数据,我想对这个评级引擎进行逆向工程,使它能够在那些大评级公司可能没有提供评级的东西上使用评级引擎。也许我有私募股权或非上市公司,我想用这种方式估值,或者用这种方式提供评级,所以我想创建自己的引擎。也许我想用机器学习来做这件事。
我有这样的数据。我有数据来启动这个过程,我可以继续使用我们的导入工具把它从Excel表格中导入到MATLAB中。最后,我有了newdata。mat文件,我要加载。如果我看一下这个,我可以看到它看起来和我们刚刚看到的数据几乎一样。只是还没有评级。我的目标是为这些资产提供评级。
为了开始我的机器学习工作流程,我们将再次使用你们刚刚看到的其中一个应用程序。所以我们这里有一整类的应用程序用于机器学习和深度学习来帮助你完成这些工作流程,所以今天这是一个分类问题。我们要讲的是分类学习者。对于基于回归的问题,我们也有一个外观和感觉非常相似的配套应用程序。
让我们打开分类学习器。这将在这里启动一个会话。我可以通过从这里的工作区引入数据来开始一个会话。我有我的信用评级数据。我可以指定我想要预测的评级,然后我们可以看到它显示了所有的预测器,我可以选择或取消选择我想要的。例如这里,ID与这些变量都没有关联因为它只是一个数字记录标识符。我可以取消选择,这样它就不是我分析的一部分。
我也可以选择一种方法进行验证,以防止数据过度拟合。我就把它作为标准推荐,你也可以在这里读到更多关于验证的内容,如果你想知道它是如何工作的,它是做什么的。但最终,这将被用于我们的模型选择。
我可以从这里开始,我要做的第一件事就是把数据带进来,然后画出来。它会告诉我这些预测器是什么样的。我可以看到所有颜色编码的类,我可以看到这些不同组合的数据是怎样的。看看我的类是如何被分割成这些预测器的组合的。也许基于此,我可以做一些特征选择,或者主成分分析,或者指定一些错误分类的代价。
一旦我完成了这些建模前的步骤,我就可以开始训练模型了。你可以看到当我打开这个下拉菜单时,我有一个很大的菜单里面有各种各样的分类器可供我选择。如果我想从所有基于树的模型开始,我可以选中它,然后点击这里的train。你可以看到它在这里训练这些,你可能会注意到它在同时训练一些这些。这是因为我选中了上面这个use parallel button。
所以我基本上告诉了MATLAB,我已经知道了一些硬件资源。我要你们利用我所有的并行资源尽快完成这个。然后MATLAB将使用我笔记本电脑上的四个核心意识到它可以在这四个核心上同时训练4个模型,它将做到这一点。
它被训练成这三种树模型。为了更好的测量,我可以在这里放几个集成模型来做一些不同的实验,看看结果如何。然后当这些结果开始出来的时候,我可以开始看看这些是如何表现的。举个例子,如果我看这个模型,我可以看到在左下角这里我有一些基线结果,比如准确性,总成本,预测速度,训练时间,这些都是我在选择模型时很重要的东西。
我也有一堆图形工具供我使用。所以如果我想看这个在一个类的级别上是如何执行的,我可以打开我的混淆矩阵来了解它是如何执行的。看看这些,我们可以看到,例如,这个模型在aaa级债券上表现很好,但在双b级债券上却表现不佳。因此,这取决于我想强调的地方,这可能是我用来选择不同模型的一些信息,或者可能包含错误分类成本,以引导我的模型回到正轨。诸如此类的事情。
一旦我完成了这个分析,下一步就是调优这些模型的参数。这些模型是用一些基线特征来训练的,但我可能想深入研究一个模型的特定特征并改变其中一些参数来看看这对我的训练有什么影响。在MATLAB中,我们现在有能力在这个应用中使用优化例程来调整这些。
如果我说我最适应树形模型,我想选择一个树,我可以优化这个树的超参数。这里有一个可优化的树选项。我可以点击它。当我开始训练这个的时候,它实际上要做的是在所有可能的超参数空间中对这些树型模型进行贝叶斯优化。
这将是一种非常有效的优化方式来训练一堆不同的树模型用不同的参数组合来观察哪种表现最好,哪种在我正在处理的特定训练集中准确率最低。我们给大家一点时间把这个做完。最终,当这个完成时,我们将得到一个完全调谐的机器学习模型。
这里执行了30次迭代,我们可以看到我的这个调优模型比这里最好的树表现得更好一些。假设这是我想用的模型。我很满意这一点,我想把它用于我的评级引擎。
从那开始,我有几个选择。我可以将这个模型直接导出到我的工作区中,我将继续这样做。我们称它为训练模型。那太好了。
但我还有一些其他的选择。我们在这里再次看到这个generate function按钮我之前承诺过我会用到它,我们会在这里使用它。所以当我像这样交互地处理一个工作流时,这是很好的。它让我的生活变得轻松,但它确实提出了一个问题,我如何将其自动化并真正将其引入生产环境?
如果我点击这个生成函数按钮,它实际上会生成一堆代码这些代码会以编程的方式执行我以交互方式做的很多事情。你可以看到我的特征选择在这里完成。你会注意到取消选中的ID在这里不见了。这里包含了所选择的优化参数。它执行训练,最终执行交叉验证并给出相关的统计数据。
这真的复制了我刚才以交互方式概述的整个训练工作流程允许我把这段代码集成到我的生产设置中这样我就可以说,嘿,每次我得到这个新数据块,重新训练它。给我这种型号的最新型号。回到我们的基础工作区,你可以看到我们的训练模型在我的工作区中。我可以继续用它来分类这些新的数据点。我们有我们想要的资产的评级。
花点时间后退一步,想想我们在这里做了什么,我可以是一个机器学习专家,而不是MATLAB的大量经验,我可以很容易地解决这个问题。因为我们所做的只是导入我们的数据,我们执行特征选择,我们执行模型选择,我们使用优化程序调优我们的超参数,我们检查结果并生成代码,我们可以定期集成来重新训练这个模型,我们做了所有这些,而没有写一行MATLAB代码。我只写了这一行来最终对新数据进行分类。这说明我有能力使用MATLAB来真正进入这些工作流程并且能够真正在建模的层面上思考,在优化的层面上思考,在机器学习的层面上思考而不会在过程中被单个代码行绊倒。
我们可以把这里清理一下。与这些应用程序类似的是,我们必须让机器学习变得更简单一些,我们也有类似的应用程序,试图让深度学习变得尽可能容易。我们的第一个应用程序是我们的深度网络设计器,它将允许你在这里可视化和交互式地创建深度网络。你们可以看到,我将在这个视频中打开一个预先训练过的模型,我们可以可视化这个模型,看看层是如何相互连接的,并在视图中拖放新层,调整选项。
一旦我完成了这些,我就可以继续导入训练数据了。选择我所有的训练选项,并进行互动训练,并在我训练这个深度网络时,密切关注结果。这可以帮助你设计这些网络。但在更元的层面上,在更高的层面上,用深度学习解决问题的过程是一个真正实验性的,真正迭代的过程。
我们这里有一个更新的应用程序是我们的实验管理器,它允许你尝试不同的网络架构,不同的参数选项看看它们在测试数据中的表现,并对比这些方法。我们可以看到这里有很多不同的实验,不同的网络用这些不同的选项进行训练,我们可以实时监控训练过程并查看任何一个实验的结果。使用MATLAB代码,我们可以编程设置这些实验来指定我们想要尝试的各种架构或者我们想要探索的训练选项的网格。然后,MATLAB会自动构造各种网格混合和匹配所有我想要的各种选项的实验,以看看这些不同的实验是如何成功的,并从那里观察结果。
所以MATLAB真的代表了一个完整的深度学习生态系统。我们有工具来做一些事情,比如标记数据,还有工具来从各种其他流行的框架导入和导出你的网络,通过这里的ONNX框架导入和导出这些神经网络。通过Keras-Tensorflow和Caffe,你可以直接将这些网络引入MATLAB,甚至不需要通过ONNX。在此基础上,我们有能力为您的深度网络进行多GPU训练,并能够生成高性能的C, C+或Cuda代码进行推理。
在这种情况下,还经常出现的另一件事是通过使用并行计算来最大化利用硬件的能力,MATLAB确实有很多选项从并行启用的工具箱中,你可以指定使用我的并行资源的函数,就像我们在分类学习者应用中看到的那样,而MATLAB内部会决定如何并行化它,一直到做你自己的并行编程,甚至是做一些相当低层次的并行编程,并指定像消息传递这样的事情。所以对于每个人来说,从打开一个开关到开启并行一直到一些非常高级的并行编程技术对于更有经验的并行程序员来说。
类似地,在我们的最新版本中,我们有基于线程的并行池和基于进程的并行池,这确实减少了内存使用量,并允许对某些应用程序进行更快的调度和更少的数据传输。我们也有能力扩展到集群和云。如果你想在AWS或Azure上旋转这些集群中的一个,这在MATLAB中是很容易做到的。正如我之前提到的,我们支持GPU计算。万博1manbetx深度网络将在GPU上进行训练,我们也有能力在GPU上明确地完成矩阵数学。
我们已经谈了一点我们如何设计这些不同类型的模型,但在一天结束的时候,这些是一个更大的软件工程项目的一部分。这就引出了一个问题,如果我有很多人一起工作,并且需要真正组织这些工作,那么我如何编写干净、健壮的代码呢?对,还有MATLAB,它实际上是一个功能齐全的软件工程环境。
除了我们看到的那些让你的生活变得更简单的花哨的东西,这些交互的工作流程,它还有很多熟悉的软件工程特性,作为一个程序员,你期待看到的,你真的需要做你的工作。这意味着要有类结构和单元测试框架之类的东西。这也意味着对DevOps任务的支持。万博1manbetx所以要确保它与你的CI/CD工作流和源代码控制之类的东西无缝地工作。
因此,我们的单元测试框架有一个功能齐全的测试框架,它可以与持续集成服务器一起工作。我们也有我们的性能测试框架,以查看您的代码的性能和效率如何,以及一个用于测试您的可视化应用程序的框架。在我们的最新版本中,我们还有一个Jenkins插件,可以将您的工作流程与Jenkins结合起来,并进行自动化、构建、测试和由此产生的报告等工作。
所以当与其他MATLAB开发人员合作时,这里的一个很大的关键是一个在19a出现的特性,叫做MATLAB Projects。这允许你做很多很好的事情,比如配置开发环境,做依赖分析,与源代码控制集成。让我们用MATLAB看看是什么样子的。
你可以在这里看到,我有一个文件夹里面有一些不同的脚本。这些是不同的风险值模型和不同的计算方法。我也有一些它依赖的功能——数据,模型,辅助函数,测试。这就是我们项目的全部内容。所以在我从别人那里继承了这个的情况下,我可能想要打开这个项目以便开始。
如果我点击它,MATLAB就会启动这个项目。它会把所有这些东西都添加到我需要的路径中,它还会运行自动脚本来设置我创建项目时指定的环境,诸如此类。因此,从这里开始,如果我试图了解这段代码,我可以进入我的依赖分析程序,运行一个依赖分析,看看这些东西是如何相互关联的。我可以从图形的角度来理解这一点。
类似地,你可能注意到,当我进入这个项目视图时,我有一堆与Git相关的选项。这是我链接到Git的东西。所以我有能力从我的MATLAB环境来实际管理这些Git基本工作流。
举个例子,如果我回到正常的风险值计算我想在这里加上97%的计算我可以继续保存它。现在你会注意到,在我的项目工作流中,在我的Git列中,你可以看到我现在有一个蓝色的方框在它旁边,表示这里有一个未提交的更改。我可以直接在这里提交,比如我添加了97%的var,它就会提交。这个会变回绿色。如果我愿意,我可以从那里推送它,或者我也可以检查这里的各个分支并查看提交历史。
这使得传递和与他人合作这些不同的项目变得非常容易。我们可以回到ppt。项目的另一个非常重要的特性是它有助于升级到最新最好的MATLAB版本。因此,如果您有一些较旧的代码,您想看看是否有可能升级到新版本,以利用一些新功能,您可以将这些代码包装在项目中并运行升级检查。
这个的作用是查找在不同版本之间可能发生的任何变化看看你的代码是否能在最新的版本中运行或者它是否需要一些改变才能正常运行。它会通知你需要修改的地方,告诉你需要修改的文档以确保你在正确的轨道上。在一对一变化的情况下,这是一个很明显的替换方法。它会自动在代码中为你做出这些改变并提醒你。所以,如果你在一个更新的版本中看到一些你想要的东西,绝对建议你检查一下,作为一种使过渡更容易的方法。
最后,我们想看看我们如何在这里合作和分享。这就引出了一个问题,我的同事访问我的模型的最佳方式是什么?因此,我们可以很容易地将我们的模型分享给那些想要更互动的界面的同事,他们可能不是程序员,那就是使用我们的应用设计程序。
MATLAB有App Designer,这是一种创建这些功能齐全的图形应用程序的方法-这可以通过拖放的方式完成也可以通过使用MATLAB代码来指定在这里发生的事情。让我们进入一个App Designer App看看这个过程是怎样的。如果我在命令窗口输入App Designer,就会打开App Designer。
我可以从一个空白的应用开始,这是任何应用创作过程的开始。我可以在这里拖放各种组件。如果我想画点什么,我可以把坐标轴拖到这里。我可以拖一个按钮到这里。我可以,假设我想把这个图画出来。我可以重命名这个图。
很简单,我可以指定应用的样子。在指定当我与这个东西交互时实际发生了什么,我可以通过指定所谓的回调函数来实现。如果我可以右键点击这里,下到回调,我可以有一个选项来指定,当我按下这个按钮时,会发生什么?我可以这样做,你会看到它会把我带到这里的代码视图。
你可以看到MATLAB已经为我生成了一堆基于ui的代码它指定了所有的图形部分,我只需要指定上面的回调函数。如果我想让这个绘图,我可以指定我想要这个绘图。我想让它在我刚画的那个轴上,我们会有这个图假设是随机的10条线。
我可以保存并在这里运行。就像这样,我创建了一个简单的应用程序。当我点击按钮时,你可以看到它和我预期的一样。这显然只是一个简单的例子,但你可以在这里探索很多高级功能来制作真正健壮的仪表板和其他可视化工具。
一旦你创建了你的应用程序,分享它们就像点击这里的分享按钮一样简单。你可以看到我可以选择打包成一个MATLAB应用程序,这是给其他MATLAB用户的。我可以创建一个独立的桌面应用程序,这将是一个可执行文件,我可以与没有安装MATLAB的人共享。最后,我甚至可以把它作为一个网络应用来分享,这样任何人都可以通过我的网络连接在网络浏览器上访问它。
作为一个网络应用来分享是一种新的能力,它为那些想要分享他们基于matlab的可视化应用的人打开了很多大门。这也支持身份验证,这样您就可万博1manbetx以控制对这些文件的访问。如果你有更多想要共享的函数代码,比如前面没有GUI的东西,我们可以选择将这种函数代码部署到其他语言中,比如编译Python或Java的库。甚至编译Excel外接程序,以便使用其他语言、其他工具的同事也可以从您的MATLAB代码中获得完整的功能。
我们也有能力将MATLAB分析集成到一个完整的生产企业环境中。这意味着你可以启动一个服务器,部署你的MATLAB代码,让它作为一个RESTful端点运行,这样人们就可以通过开放的互联网从任何地方访问它。因此,对于许多公司来说,分享他们的代码以开放访问,这无疑是一件改变收益的事情。所以如果你对这个感兴趣,我们当然也很乐意讨论这个。
如你所料,你也可以从其他编程语言中使用MATLAB也可以从MATLAB中调用那些语言。最后,我意识到我们现在时间紧迫,但我确实想花点时间谈谈我们提供的服务。我们提供定制的培训课程,可以由我们的培训工程师之一提供,以帮助您在MATLAB中的特定主题上建立和运行,我们也有一个完整的咨询机构,允许您在MATLAB工程师的全力支持下处理有较短时间线的问题。为了避免这成为一个黑箱解决方案,我们的顾问还对你们的工程师进行培训,让他们了解解决方案是如何工作的,以及如何在未来维护它。
这就是我今天所拥有的一切。如果你有任何问题,可以随时联系我们。我知道我们的时间正好,但我可以看看现在是否有一两个问题可以提问。
相关产品s manbetx 845
了解更多
您也可以从以下列表中选择网站:
如何获得最佳的网站性能
选择中国网站(中文或英文)以获得最佳的网站表现。其他MathWorks国家网站没有针对从您的位置访问进行优化。