使用简洁的工作流实现增量学习分类
这个例子展示了如何使用简洁的工作流来实现增量学习与prequential二进制分类评价。具体地说,这个例子如下:
创建一个默认为二进制增量学习模型分类。
模拟数据流使用一个for循环,喂小块观测的增量学习算法。
对于每个块,使用
updateMetricsAndFit
测量模型的性能考虑到输入数据,然后适应模型数据。
尽管这个示例将应用程序作为二元分类问题,您可以实现多级增量学习使用对象多类问题遵循同样的工作流。
创建默认的模型对象
创建一个默认为二进制增量学习模型分类。
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观测模拟数据流过程。
覆盖前面的增量式模型与一个新安装的观察。
存储累积指标,指标的窗口中,第一个系数 看到他们如何增量学习中发展。
%预先配置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);结束
Mdl
是一个incrementalClassificationLinear
模型对象培训中的所有数据流。在增量学习模型是热身之后,updateMetricsAndFit
检查模型的性能的观察,然后符合观测模型。
检查模型的进化
性能指标和 进化在训练,放到单独的瓷砖。
t = tiledlayout (2, 1);nexttile情节(beta1) ylabel (“\ beta_1”)xlim ([0 nchunk]) nexttile h =情节(ce.Variables);xlim ([0 nchunk]) ylabel (分类错误的)参照线(Mdl.MetricsWarmupPeriod / numObsPerChunk,“g -”。传奇(h, ce.Properties.VariableNames)包含(t)“迭代”)
情节表明updateMetricsAndFit
以下:
适合 在增量学习迭代。
计算后的性能指标度量预热期。
在每一次迭代计算累积度量。
计算窗口指标200年处理后观察(4迭代)。