主要内容

使用简洁的工作流程实现回归的增量学习

这个例子展示了如何使用简洁的工作流程来实现线性回归的增量学习和前置评估。具体来说,这个例子执行了以下操作:

  1. 为线性回归创建默认的增量学习模型。

  2. 使用for循环模拟数据流,该循环将小块观测数据提供给增量学习算法。

  3. 对于每个块,使用updateMetricsAndFit测量给定传入数据的模型性能,然后将模型与该数据拟合。

创建默认模型对象

为线性回归创建默认的增量学习模型。

Mdl = incrementalRegressionLinear()
Mdl = incrementalRegressionLinear IsWarm: 0 Metrics: [1x2 table] ResponseTransform: 'none' Beta: [0x1 double]偏差:0学习者:'svm'属性,方法
Mdl。EstimationPeriod
Ans = 1000

Mdl是一个incrementalRegressionLinear模型对象。它的所有属性都是只读的。

Mdl在使用它执行任何其他操作之前,必须适合于数据。该软件将估计周期设置为1000,因为epsilon不敏感带宽度的一半ε是未知的。你可以设置ε转换为正浮点数‘ε’名称-值对参数。此操作导致默认估计周期为0。

加载数据

加载机械臂数据集。

负载robotarm

关于数据集的详细信息,请输入描述在命令行。

实施增量学习

方法来更新模型性能指标,并使增量模型适合训练数据updateMetricsAndFit函数。在每次迭代中:

  • 处理50个观测数据来模拟一个数据流。

  • 将先前的增量模型覆盖为一个适合于新观测值的新模型。

  • 存储累积指标、窗口指标和第一个系数 β 1 看看它们是如何在增量学习中进化的。

%预先配置N =数字(ytrain);numObsPerChunk = 50;nchunk = floor(n/numObsPerChunk);Ei = array2table(0 (nchunk,2),“VariableNames”,[“累积”“窗口”]);Beta1 = 0 (nchunk,1);%增量拟合j = 1:nchunk ibegin = min(n,numObsPerChunk*(j-1) + 1);iend = min(n,numObsPerChunk*j);Idx = ibegin:iend;Mdl = updateMetricsAndFit(Mdl,Xtrain(idx,:),ytrain(idx));ei{j,:} = Mdl。指标{“EpsilonInsensitiveLoss”,:};beta1(j + 1) = Mdl.Beta(1);结束

IncrementalMdl是一个incrementalRegressionLinear在流中的所有数据上训练的模型对象。在增量学习期间和模型预热后,updateMetricsAndFit检查模型在传入观测数据上的性能,然后将模型与这些观测数据拟合。

检查模型演化

看看性能指标和 β 1 在训练过程中进化,将它们绘制在单独的瓷砖上。

T = tiledlayout(2,1);Nexttile plot(beta1) ylabel(“\ beta_1”) xlim([0 nchunk]) xline(Mdl. txt)EstimationPeriod/numObsPerChunk,r -。) nexttile h = plot(ei.Variables);Xlim ([0 nchunk]) ylabel(“不敏感损失”)参照线(Mdl。EstimationPeriod / numObsPerChunk,r -。((Mdl)参照线。估计周期+ Mdl.MetricsWarmupPeriod)/numObsPerChunk“g -”。xlabel(t, i. properties . variablenames)“迭代”

图中包含2个轴对象。坐标轴对象1包含2个line、constantline类型的对象。坐标轴对象2包含4个line、constantline类型的对象。这些对象代表累积、窗口。

情节表明updateMetricsAndFit做以下事情:

  • 在估计周期之后(前20次迭代),拟合 β 1 在所有增量学习迭代过程中。

  • 仅在指标预热期之后计算性能指标。

  • 在每次迭代期间计算累计度量。

  • 在处理200个观测结果(4次迭代)后计算窗口度量。

另请参阅

对象

功能

相关的话题