这个例子展示了如何训练使用逻辑回归模型分类学习者应用程序,然后在命令行中,初始化和火车二进制增量模型分类使用信息从培训中获得应用。
载入人类活动数据集。随机洗牌数据。
负载humanactivityrng (1);%的再现性n =元素个数(actid);idx = randsample (n, n);X =壮举(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%分区创建变量。
本量利= cvpartition (n,“坚持”,0.99);idxtt = cvp.training;idxil = cvp.test;Xtt = X (idxtt:);自= X (idxil:);Ytt = Y (idxtt);Yil = Y (idxil);
开放分类学习者通过输入classificationLearner
在命令行中。
classificationLearner
另外,在应用程序选项卡上,单击显示更多画廊箭头打开应用程序。下机器学习和深度的学习,点击应用程序图标。
选择训练数据集和变量。
在分类学习者选项卡,文件部分中,选择新会话>从工作区。
在新会话从工作区对话框,在数据集变量,选择预测变量Xtt。
下响应,点击从工作空间;请注意,Ytt自动选择。
下验证,点击Resubstitution验证。
点击开始会议。
火车一个逻辑回归模型。
在分类学习者选项卡,模型类型部分,单击显示更多箭头打开画廊的模型。在逻辑回归分类器部分中,点击逻辑回归。
在分类学习者选项卡,培训部分中,点击火车。
当应用程序完成训练模型,图一个混淆矩阵。在分类学习者选项卡,情节部分中,点击混淆矩阵并选择验证数据。
混淆矩阵表明,模型分类样本观察。
出口训练逻辑回归模型。
在分类学习者选项卡,出口部分中,选择出口模式>出口模式。
在出口模式对话框中,单击好吧。
应用程序通过训练模型,在其他变量,数组结构trainedModel
工作区。关闭分类学习者。
在命令行中,提取训练逻辑回归模型和类名trainedModel
。该模型是一个GeneralizedLinearModel
对象。因为类名称必须匹配的响应变量的数据类型,转换存储价值分类
。
Mdl = trainedModel.GeneralizedLinearModel;一会=分类(trainedModel.ClassNames);
从模型中提取拦截和系数。截距是第一个系数。
偏见= Mdl.Coefficients.Estimate (1);β= Mdl.Coefficients.Estimate(2:结束);
你不能把GeneralizedLinearModel
对象直接增量模型。然而,您可以初始化一个二进制增量模型分类通过从应用程序的信息,如估计系数和类名。
直接创建一个二进制增量式模型分类。指定学习者、拦截系数估计,从和类的名字分类学习者。因为良好的初始值系数存在已知类名称,指定一个度量预热期的长度0
。
IncrementalMdl = incrementalClassificationLinear (“学习者”,“物流”,…“β”,β,“偏见”偏见,“类名”一会,…“MetricsWarmupPeriod”,0)
IncrementalMdl = incrementalClassificationLinear IsWarm: 0指标:[1×2表]一会:[移动NotMoving] ScoreTransform:分对数的β:[60×1双)偏见:-471.7873学习者:“物流”属性,方法
IncrementalMdl
是一个incrementalClassificationLinear
使用逻辑回归模型对象的增量学习模型。因为系数和所有指定类名,您可以通过预测响应IncrementalMdl
和数据预测
。
99%的数据分区上执行增量学习使用updateMetricsAndFit
函数。模拟数据流处理50观测一次。在每一次迭代:
调用updateMetricsAndFit
更新和窗口分类累积误差模型的输入块的观察。覆盖前面的增量式模型更新的损失指标
财产。注意,函数不符合模型的一部分数据,大部分是“新”的数据模型。
商店的损失估计系数β14。
%预先配置nil =总和(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自(idx:), Yil (idx));ce {j:} = IncrementalMdl.Metrics {“ClassificationError”,:};beta14 (j + 1) = IncrementalMdl.Beta (14);结束
IncrementalMdl
是一个incrementalClassificationLinear
模型对象培训中的所有数据流。
跟踪性能指标的情节和情节β14。
图;次要情节(2,1,1)h =情节(ce.Variables);xlim ([0 nchunk]);ylabel (分类错误的传奇(h, ce.Properties.VariableNames)次要情节(2,1,2)情节(beta14) ylabel (“\ beta_ {14}”)xlim ([0 nchunk]);包含(“迭代”)
每次迭代的累计损失逐渐变化(50块的观察),而跳窗的损失。因为指标窗口默认是200,updateMetricsAndFit
每四迭代测量性能。
β14适应的数据updateMetricsAndFit
过程的观察。