这个例子展示了如何使用灵活的工作流来实现增量学习与prequential二进制分类评价。传统训练模型初始化增量模型。具体地说,这个例子如下:
火车线性模型对二进制分类数据的一个子集。
传统训练模型转换为二进制增量学习模型分类。
模拟数据流使用一个for循环,喂小块观测的增量学习算法。
对于每个块,使用updateMetrics
测量模型的性能考虑到输入数据,然后使用适合
适合的模型数据。
尽管这个示例将应用程序作为二元分类问题,您可以实现多级增量学习使用朴素贝叶斯算法而不是遵循同样的工作流。看到incrementalClassificationNaiveBayes
对象。
载入人类活动数据集。随机洗牌数据。东方的观测指标数据列。
负载humanactivityrng (1);%的再现性n =元素个数(actid);idx = randsample (n, n);X =壮举(idx:)”;Y = actid (idx);
细节的数据集,输入描述
在命令行中。
响应可以是五类:坐着,站着,散步,跑步,或者跳舞。二分响应通过识别主题是否移动(actid
> 2)。
Y = Y > 2;
二进制分类符合线性模型的随机样本数据的一半。指定的观测是面向列的数据。
idxtt = randsample((真假),n, true);TTMdl = fitclinear (X (:, idxtt), Y (idxtt),“ObservationsIn”,“列”)
TTMdl = ClassificationLinear ResponseName:“Y”类名:[0 1]ScoreTransform:“没有一个”测试:[60 x1双]偏见:-0.3965λ:8.2967 e-05学习者:“支持向量机”属性,方法
TTMdl
是一个ClassificationLinear
模型对象代表二进制分类的传统训练的线性模型。
传统训练分类模型转换为一个二进制分类线性模型的增量学习。
IncrementalMdl = incrementalLearner (TTMdl)
IncrementalMdl = incrementalClassificationLinear IsWarm: 1指标:[1 x2表]一会:[0 1]ScoreTransform:“没有一个”测试:[60 x1双]偏见:-0.3965学习者:“支持向量机”属性,方法
使用灵活的工作流更新模型性能指标和适合的增量式模型训练数据通过调用updateMetrics
和适合
单独的功能。模拟数据流处理50观测一次。在每一次迭代:
调用updateMetrics
更新和窗口分类累积误差模型的输入块的观察。覆盖前面的增量式模型更新的损失指标
财产。注意,函数不符合模型的一部分数据,大部分是“新”的数据模型。指定列的观测是面向。
调用适合
适合的模型输入块的观察。覆盖前面的增量式模型更新模型参数。指定列的观测是面向。
存储分类错误,首先估计系数 。
%预先配置idxil = ~ idxtt;nil =总和(idxil);numObsPerChunk = 50;nchunk =地板(nil / numObsPerChunk);ce = array2table (0 (nchunk, 2),“VariableNames”,(“累积”“窗口”]);beta1 = [IncrementalMdl.Beta (1);0 (nchunk 1)];自= X (:, idxil);Yil = Y (idxil);%增量式拟合为j = 1: nchunk ibegin = min (nil, numObsPerChunk * (j - 1) + 1);iend = min (nil, numObsPerChunk * j);idx = ibegin: iend;IncrementalMdl = updateMetrics (IncrementalMdl自(:,idx) Yil (idx),…“ObservationsIn”,“列”);ce {j:} = IncrementalMdl.Metrics {“ClassificationError”,:};IncrementalMdl =适合(IncrementalMdl自(:,idx) Yil (idx),“ObservationsIn”,“列”);beta1 (j + 1) = IncrementalMdl.Beta(结束);结束
IncrementalMdl
是一个incrementalClassificationLinear
模型对象培训中的所有数据流。
或者,您可以使用updateMetricsAndFit
更新模型的性能指标给定一个新的数据块,然后适应模型数据。
画一个跟踪性能指标和估计系数的情节 。
图;次要情节(2,1,1)h =情节(ce.Variables);xlim ([0 nchunk]);ylabel (分类错误的传奇(h, ce.Properties.VariableNames)次要情节(2,1,2)情节(beta1) ylabel (“\ beta_1”)xlim ([0 nchunk]);包含(“迭代”)
累计损失稳定和逐渐减少,而跳窗的损失。
突然发生了变化,然后逐渐平缓适合
流程更大块的观察。