主要内容

使用回归支持向量机预测块预测响应

这个例子展示了如何训练支持向量机(SVM)回归模型使用回归的学习者App,然后使用RegressionSVM预测用于Simulink®中的响应预测。该块接受一个观察结果(预测器数据),并使用训练过的SVM回归模型返回该观察结果的预测响应。

在回归学习者App中训练回归模型

在回归学习者App中使用超参数优化训练支持向量机回归模型。

1.在MATLAB®命令窗口中,加载carbig数据集,并创建一个包含大部分预测变量和响应变量的向量的矩阵。

负载carbigX =(加速度、汽缸、排量、马力、Model_Year重量);Y = MPG;

2.删除X和Y中任意一个数组缺少值的行。

R = rmmissing([X Y]);X = R (:, 1: end-1);Y = R(:,结束);

3.回归学习者开放。在应用程序选项卡,应用程序部分,单击显示更多箭头显示应用程序库。在机器学习和深度学习组中,单击回归的学习者

4.在回归的学习者选项卡,文件部分中,选择新会话并选择从工作空间

5.在“从工作区新建会话”对话框中,选择矩阵X数据集变量列表。下响应,单击从工作空间选项按钮,并从工作区中选择向量Y。默认的验证选项是5倍交叉验证,以防止过拟合。对于本例,不更改默认设置。

RegressionSVMPredictExample_LearnerApp_import_data.png

6.若要接受默认选项并继续,请单击开始会议

7.选择一个可优化的支持向量机模型进行训练。在回归的学习者选项卡,模型部分,单击显示更多箭头打开画廊。在支持向量机组中,单击Optimizable支持向量机

8.选择要优化的模型超参数。在总结选项卡,您可以选择优化选中要优化的超参数的复选框。默认情况下,选中可用超参数的所有复选框。对于本例,清除优化复选框的核函数而且标准化数据.默认情况下,应用程序禁用优化复选框的内核规模每当核函数有一个固定的值,而不是高斯.选择一个高斯核函数,并选择优化复选框的内核规模

RegressionSVMPredictExample_LearnerApp1_optimizable_tree.png

9.在火车部分中,点击火车都并选择选择火车.应用程序显示一个最小均方误差图因为它运行优化过程。在每次迭代中,应用程序都会尝试不同的超参数值组合,并使用迭代之前观察到的最小验证均方误差(MSE)更新图表,以深蓝色表示。当应用程序完成优化过程时,它会选择优化后的超参数集,用红色方块表示。有关更多信息,请参见最小均方误差图

该应用程序列出了优化的超参数优化结果Section的右边是plot和模型Hyperparameters模型截面总结选项卡。一般情况下,优化结果是不可重复的。

10.将模型导出到MATLAB工作区。在回归的学习者选项卡,出口部分中,点击出口模式并选择出口模式,然后单击好吧.导出模型的默认名称为trainedModel

或者,您可以生成MATLAB代码,用与应用程序中训练支持向量机模型相同的设置来训练回归模型回归的学习者选项卡,出口部分中,点击生成函数.该应用程序从您的会话生成代码,并在MATLAB编辑器中显示文件。该文件定义了一个函数,该函数接受预测器和响应变量,训练回归模型,并执行交叉验证。将函数名更改为trainRegressionSVMModel并保存函数文件。训练支持向量机模型trainRegressionSVMModel函数。

trainedModel = trainRegressionSVMModel (X, Y);

11.提取经过训练的支持向量机模型trainedModel变量。trainedModel包含一个RegressionSVM中的模型对象RegressionSVM字段。

svmMdl = trainedModel.RegressionSVM;

因为超参数优化可能导致模型过度拟合,推荐的方法是在将数据导入Regression Learner应用程序之前创建一个单独的测试集,并查看优化的模型在测试集上的表现。有关更多细节,请参见在回归学习软件中使用超参数优化训练回归模型

创建模型模型

本示例提供了Simulink模型slexCarDataRegressionSVMPredictExample.slx,其中包括RegressionSVM预测块。您可以打开Simulink模型或创建一个新的模型,如本节所述。

打开Simulink模型slexCarDataRegressionSVMPredictExample.slx

SimMdlName =“slexCarDataRegressionSVMPredictExample”;open_system (SimMdlName)

slexCarDataRegressionSVMPredictExampleAfterOpenSystem.png

PreLoadFcn回调函数的slexCarDataRegressionSVMPredictExample包括加载样本数据、训练支持向量机模型以及为Simulink模型创建输入信号的代码。如果您打开Simulink模型,那么软件将在其中运行代码PreLoadFcn在加载Simulink模型之前。查看回调函数设置上节建模选项卡上,单击模型设置并选择模型属性.然后,在回调选项卡中,选择PreLoadFcn的回调函数模型的回调窗格。

要创建一个新的Simulink模型,请打开空白模型模板,并添加RegressionSVM预测块。添加import和Outport块,并将它们连接到RegressionSVM Predict块。

双击RegressionSVM Predict块以打开块参数对话框。您可以指定包含训练过的SVM模型的工作空间变量的名称。默认变量名为svmMdl.单击刷新按钮。对话框显示用于训练SVM模型的选项svmMdl训练过的机器学习模型

RegressionSVMPredictExample_BlockDialog.png

回归支持向量机预测块期望一个包含6个预测值的观测值。双击import块,并设置港维到6信号的属性选项卡。

为Simulink模型创建一个结构数组形式的输入信号。结构数组必须包含以下字段:

  • 时间-观察结果进入模型的时间点。方向必须与预测数据中的观测值相对应。在这个例子中,时间必须是列向量。

  • 信号-一个描述输入数据并包含字段的1乘1结构数组而且,在那里是预测数据的矩阵,和是预测变量的数量。

对象创建适当的结构数组slexCarDataRegressionSVMPredictExample模型的carsmall数据集。

负载carsmalltestX =(加速度、汽缸、排量、马力、Model_Year重量);testX = rmmissing (testX);carsmallInput。时间= (0:size(testX,1)-1)'; carsmallInput.signals(1).values = testX; carsmallInput.signals(1).dimensions = size(testX,2);

从工作区导入信号数据:

  • 打开“配置参数”对话框。在建模选项卡上,单击模型设置

  • 数据导入/导出窗格中,选择输入复选框并输入carsmallInput在相邻的文本框中。

  • 解算器窗格中,在仿真时间,设置停止时间carsmallInput.time(结束).下解算器的选择,设置类型固定步,并设置解算器离散(无连续状态)

有关更多细节,请参见模拟负载信号数据(模型)

模拟模型。

sim (SimMdlName);

当import块检测到一个观察结果时,它将该观察结果导向RegressionSVM Predict块。您可以使用仿真数据检查(模型),查看Outport块的日志数据。

另请参阅

相关的话题

Baidu
map