主要内容

使用简洁的工作流实现增量学习分类

这个例子展示了如何使用简洁的工作流来实现增量学习与prequential二进制分类评价。具体地说,这个例子如下:

  1. 创建一个默认为二进制增量学习模型分类。

  2. 模拟数据流使用一个for循环,喂小块观测的增量学习算法。

  3. 对于每个块,使用updateMetricsAndFit测量模型的性能考虑到输入数据,然后适应模型数据。

尽管这个示例将应用程序作为二元分类问题,您可以实现多级增量学习使用朴素贝叶斯算法而不是遵循同样的工作流。看到incrementalClassificationNaiveBayes对象。

创建默认的模型对象

创建一个默认为二进制增量学习模型分类。

Mdl = incrementalClassificationLinear ()
Mdl = incrementalClassificationLinear IsWarm: 0指标:[1 x2表]一会:[1 x0双]ScoreTransform:“没有一个”测试:[0 x1双]偏见:0学习者:“支持向量机”属性,方法

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

Mdl必须适合数据之前,您可以使用它来执行任何其他操作。

加载和数据预处理

载入人类活动数据集。随机洗牌数据。

负载humanactivityn =元素个数(actid);rng (1);%的再现性idx = randsample (n, n);X =壮举(idx:);Y = actid (idx);

细节的数据集,输入描述在命令行中。

响应可以是五类:坐着,站着,散步,跑步,或者跳舞。二分响应通过识别主题是否移动(actid> 2)。

Y = Y > 2;

实现增量学习

使用简洁的工作流更新模型的性能指标和适合的增量式模型训练数据通过调用updateMetricsAndFit函数。在每一次迭代:

  • 50观测模拟数据流过程。

  • 覆盖前面的增量式模型与一个新安装的观察。

  • 存储累积指标,指标的窗口中,第一个系数 β 1 看到他们如何增量学习中发展。

%预先配置numObsPerChunk = 50;nchunk =地板(n / numObsPerChunk);ce = 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 X (idx:), Y (idx));ce {j:} = Mdl.Metrics {“ClassificationError”,:};beta1 (j + 1) = Mdl.Beta (1);结束

IncrementalMdl是一个incrementalClassificationLinear模型对象培训中的所有数据流。在增量学习模型是热身之后,updateMetricsAndFit检查模型的性能的观察,然后符合模型观察。

检查模型的进化

性能指标和 β 1 进化在训练,放到单独的次要情节。

图;次要情节(2,1,1)情节(beta1) ylabel (“\ beta_1”)xlim ([0 nchunk]);参照线(Mdl.EstimationPeriod / numObsPerChunk,r -。);次要情节(2,1,2)h =情节(ce.Variables);xlim ([0 nchunk]);ylabel (分类错误的)参照线(Mdl.EstimationPeriod / numObsPerChunk,r -。);参照线(Mdl。EstimationPeriod + Mdl.MetricsWarmupPeriod) / numObsPerChunk,“g -”。);传奇(h, ce.Properties.VariableNames)包含(“迭代”)

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

情节表明updateMetricsAndFit以下:

  • 适合 β 1 在增量学习迭代。

  • 计算性能指标度量后预热期。

  • 在每一次迭代计算累积度量。

  • 计算窗口指标200年处理后观察(4迭代)。

另请参阅

对象

功能

相关的话题