主要内容

从分类学习者训练的逻辑回归模型初始化增量学习模型

方法训练逻辑回归模型分类学习者然后,在命令行,使用在app中训练获得的信息,初始化和训练一个用于二进制分类的增量模型。

加载和预处理数据

加载人类活动数据集。随机打乱数据。

负载humanactivityrng (1);%用于重现性N = numel(actid);Idx = randsample(n,n);X = feat(idx,:);Actid = Actid (idx);

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

反应可以是五种类型中的一种:坐、站、走、跑或跳舞。通过创建一个分类数组来对响应进行二分类,该数组确定主题是否在移动(Actid > 2).

Moveidx = actid > 2;Y = repmat(“NotMoving”n 1);Y (moveidx) =“移动”;Y =绝对的(Y);

考虑将逻辑回归模型训练到大约1%的数据,并保留剩下的数据进行增量学习。

通过调用将数据随机划分为1%和99%的子集cvpartition并指定了一个保持率(试验)样品的比例0.99.为1%和99%分区创建变量。

CVP = cvpartition(n,“坚持”, 0.99);Idxtt = cvv .training;Idxil = cvv .test;Xtt = X(idxtt,:);Xil = X(idxil,:);Ytt = Y(idxtt);Yil = Y(idxil);

使用分类学习者训练模型

开放分类学习者通过输入classificationLearner在命令行。

classificationLearner

或者,在应用程序选项卡,单击显示更多箭头打开应用程序库。下机器学习和深度学习,单击应用程序图标。

选择训练数据集和变量。

  1. 分类学习者选项卡,在文件部分中,选择从工作区新建会话>

  2. 从工作区新建会话对话框,在数据集变量,选择预测变量Xtt

  3. 响应,点击从工作空间;请注意,Ytt自动选择。

  4. 验证方案中,选择Resubstitution验证

  5. 点击开始会议

训练逻辑回归模型。

  1. 分类学习者选项卡,在模型部分,单击显示更多箭头打开画廊的模型。在逻辑回归分类器部分中,点击逻辑回归

  2. 分类学习者选项卡,在火车部分中,点击火车都并选择选择火车

    在训练模型后,应用程序显示一个混淆矩阵。

    混淆矩阵

    混淆矩阵表明该模型对样本内观察结果分类较好。

导出训练过的逻辑回归模型。

  1. 分类学习者选项卡,在出口部分中,选择出口模式>出口模式

  2. 出口模式对话框,单击好吧

应用程序在结构数组中传递经过训练的模型和其他变量trainedModel到工作区。关闭分类学习者

使用导出模型初始化增量模型

在命令行中,从中提取经过训练的逻辑回归模型和类名trainedModel.模型是GeneralizedLinearModel对象。因为类名必须匹配响应变量的数据类型,所以将存储值转换为分类

Mdl = trainedModel.GeneralizedLinearModel;ClassNames = categorical(trainedModel.ClassNames);

从模型中提取截距和系数。截距是第一个系数。

偏差= mdl . coefficient . estimate (1);Beta = Mdl.Coefficients.Estimate(2:end);

你不能转换GeneralizedLinearModel对象直接指向增量模型。但是,您可以通过传递从应用程序学习到的信息来初始化二元分类的增量模型,例如估计的系数和类名。

直接为二元分类创建增量模型。指定学习器、截距、系数估计和从中学习的类名称分类学习者.因为存在良好的系数初值,并且知道所有的类名,所以要指定度量预热期的长度0

增量mdl =增量分类线性(“学习者”“物流”...“β”,β,“偏见”偏见,“类名”一会,...“MetricsWarmupPeriod”, 0)
IncrementalMdl = incrementalClassificationLinear IsWarm: 0 Metrics: [1×2 table] ClassNames: [Moving NotMoving] ScoreTransform: 'logit' Beta: [60×1 double]偏差:-471.7873学习者:'logistic'属性,方法

IncrementalMdl是一个incrementalClassificationLinear使用逻辑回归模型进行增量学习的模型对象。因为已经指定了系数和所有类名,所以可以通过传递来预测响应IncrementalMdl数据是预测

实施增量学习

方法在99%数据分区上执行增量学习updateMetricsAndFit函数。通过一次处理50个观察数据来模拟数据流。在每次迭代中:

  1. 调用updateMetricsAndFit更新模型的累积分类误差和窗口分类误差。覆盖前面的增量模型以更新中的损失指标财产。

  2. 存储损失和估计的系数β14

%预先配置Nil = sum(idxil);numObsPerChunk = 50;nchunk =地板(nil/numObsPerChunk);Ce = array2table(0 (nchunk,2),“VariableNames”,[“累积”“窗口”]);beta14 = [IncrementalMdl.Beta(14);0 (nchunk 1)];%增量学习j = 1:nchunk ibegin = min(nil,numObsPerChunk*(j-1) + 1);iend = min(nil,numObsPerChunk*j);Idx = ibegin:iend;IncrementalMdl = updateMetricsAndFit(IncrementalMdl,Xil(idx,:),Yil(idx));ce{j,:} = IncrementalMdl。指标{“ClassificationError”,:};beta14(j + 1) = IncrementalMdl.Beta(14);结束

IncrementalMdl是一个incrementalClassificationLinear对流中的所有数据进行训练的模型对象。

绘制性能度量和的跟踪图β14

图;subplot(2,1,1) h = plot(ce.Variables);xlim ([0 nchunk]);ylabel (分类错误的(h,ce.Properties.VariableNames) subplot(2,1,2) plot(beta14) ylabel(“\ beta_{14}”) xlim([0 nchunk]);包含(“迭代”

不敏感损耗和最后系数的轨迹图

累积损失在每次迭代中逐渐变化(50个观测块),而窗口损失则会跳跃。因为默认情况下指标窗口是200updateMetricsAndFit每四次迭代测量一次性能。

β14适应数据为updateMetricsAndFit处理观察数据块。

另请参阅

应用程序

对象

功能

相关的话题