主要内容

incrementalClassificationLinear

增量学习的二元分类线性模型

描述

incrementalClassificationLinear创建一个incrementalClassificationLinear模型对象,表示增量学习的二进制分类线性模型。金宝app支持学习器包括支持向量机和逻辑回归。

与其他统计和机器学习工具箱™模型对象不同,incrementalClassificationLinear可直接调用。此外,在将模型与数据拟合之前,您可以指定学习选项,如性能指标配置、参数值和目标求解器。在创建一个incrementalClassificationLinear对象,则为其准备增量学习

incrementalClassificationLinear最适合增量学习。有关训练用于二进制分类的SVM或线性模型的传统方法(例如通过将模型拟合到数据、执行交叉验证、调优超参数等来创建模型),请参见fitcsvmfitclinear.有关使用朴素贝叶斯算法的多类增量学习,请参见incrementalClassificationNaiveBayes

创建

您可以创建incrementalClassificationLinear用以下几种方法对对象建模:

  • 直接调用函数-配置增量学习选项,或为线性模型参数和超参数指定初始值incrementalClassificationLinear直接。当你还没有数据或者你想立即开始增量学习时,这种方法是最好的。

  • 转换传统训练的模型-使用训练过的SVM或二元分类线性模型对象的模型系数和超参数初始化用于增量学习的二元分类线性模型,您可以将传统训练的模型转换为incrementalClassificationLinear对象通过将其传递给incrementalLearner函数。该表包含到适当参考页的链接。

  • 调用增量学习函数- - - - - -适合updateMetrics,updateMetricsAndFit接受已配置的incrementalClassificationLinear将对象和数据建模为输入,并返回incrementalClassificationLinear使用从输入模型和数据中学习到的信息更新的模型对象。

描述

例子

Mdl= incrementalClassificationLinear ()返回增量学习的默认二进制分类线性模型对象,Mdl.默认模型的属性包含未知模型参数的占位符。您必须训练一个默认模型,然后才能跟踪它的性能或从中生成预测。

例子

Mdl= incrementalClassificationLinear (的名字价值属性以及使用名称-值对参数的附加选项。每个名字用引号括起来。例如,incrementalClassificationLinear(“Beta”,[0.1 - 0.3],“偏见”,1,“MetricsWarmupPeriod”,100年)设置线性模型系数的向量β(0.1 - 0.3),偏差β01,参数预热期为One hundred.

输入参数

全部展开

名称-值对参数

的可选逗号分隔对名称,值参数。的名字参数名称和价值对应的值。的名字必须出现在引号内。您可以以任意顺序指定多个名称和值对参数Name1, Value1,…,的家

例子:“标准化”,真的使用估计期间估计的预测器均值和标准差对预测器数据进行标准化。

在增量学习期间要跟踪的建模性能指标,指定为内置损失函数名称、名称的字符串向量、函数句柄(@metricName),函数句柄的结构数组,或名称、函数句柄或结构数组的单元格向量。

Mdl温暖的(见IsWarm),updateMetrics而且updateMetricsAndFit中跟踪性能指标指标的属性Mdl

下表列出了内置的损失函数名称。您可以使用字符串向量指定多个。

的名字 描述
“binodeviance” 二项异常
“classiferror” 分类错误
“指数” 指数
“枢纽” 铰链
“分对数” 物流
“二次” 二次

有关内置损失函数的详细信息,请参见损失

例子:“指标”,(“classiferror”“枢纽”)

若要指定返回性能指标的自定义函数,请使用函数句柄表示法。函数必须是这样的形式:

度量= customMetric(C,S)

  • 输出参数度规是一个n-by-1数值向量,其中每个元素是增量学习函数在一个学习周期中处理的数据中相应观测值的损失。

  • 选择函数名(customMetric).

  • C是一个n-by-2逻辑矩阵,行表示对应观测值所属的类。类中的类顺序对应于列顺序一会财产。创建C通过设置C (p1,如果观察p在课堂上,为指定数据中的每个观测值。在行中设置另一个元素p0

  • 年代是一个n-by-2预测分类分数的数值矩阵。年代类似于分数的输出预测,其中行对应于数据中的观察值,列顺序对应于类顺序一会财产。S (p是观察分级评分吗p按班级分类

若要指定多个自定义指标并为每个指标分配自定义名称,请使用结构数组。要指定内置指标和自定义指标的组合,请使用单元格向量。

例子:“指标”,结构(‘Metric2’,‘Metric1’,@customMetric1 @customMetric2)

例子:'Metrics',{@customMetric1 @customeMetric2 'logit' struct('Metric3',@customMetric3)}

updateMetrics而且updateMetricsAndFit类中的表中存储指定的度量指标财产。的数据类型指标确定表的行名。

“指标”数据类型 的描述指标属性行名称 例子
字符串或字符向量 对应的内置度量的名称 行名称“classiferror”“ClassificationError”
结构数组 字段名 行名称结构(Metric1, @customMetric1)“Metric1”
存储在程序文件中的函数的函数句柄 函数名称 行名称@customMetric“customMetric”
匿名函数 CustomMetric_j,在那里j是度量j指标 行名称@ (C, S) customMetric (C, S)……CustomMetric_1

有关性能度量选项的详细信息,请参见性能指标

数据类型:字符|字符串|结构体|细胞|function_handle

标志来标准化预测器数据,指定为由逗号分隔的对组成“标准化”和这个表中的一个值。

价值 描述
“汽车” incrementalClassificationLinear确定预测变量是否需要标准化。看到标准化数据
真正的 该软件将预测数据标准化。详情请参见标准化数据
该软件没有标准化预测数据。

例子:“标准化”,真的

数据类型:逻辑|字符|字符串

属性

全部展开

只能在调用时使用名-值对参数语法来设置大多数属性incrementalClassificationLinear直接。您可以在调用时设置一些属性incrementalLearner转换传统训练的模型。不能设置属性FittedLossNumTrainingObservationsμσSolverOptions,IsWarm

分类模型参数

此属性是只读的。

线性模型系数β,指定为NumPredictors-by-1数值向量。

如果你将一个传统的训练模型转换为创建Mdlβ的值指定β传统训练模型的性质。否则,默认情况下,β0 (NumPredictors, 1)

数据类型:|

此属性是只读的。

模型的截距β0或偏置项,指定为数值标量。

如果你将一个传统的训练模型转换为创建Mdl偏见的值指定偏见传统训练模型的性质。否则,默认情况下,偏见0

数据类型:|

此属性是只读的。

训练模型时使用的唯一类标签,指定为类别或字符数组、逻辑或数字向量或字符向量的单元格数组。incrementalClassificationLinear将指定的字符串向量存储为字符向量的单元格数组。一会响应数据必须具有相同的数据类型。

  • 如果你将一个传统的训练模型转换为创建Mdl一会一会传统训练模型的性质。

  • 否则,增量拟合函数推断一会在培训。

数据类型:||逻辑|字符|细胞|分类

此属性是只读的。

用于拟合线性模型的损失函数,指定为“枢纽”分对数的

价值 算法 损失函数 学习者价值
“枢纽” 金宝app支持向量机 铰链: y f x 马克斯 0 1 y f x “支持向量机”
分对数的 逻辑回归 异常(物流): y f x 日志 1 + 经验值 y f x “物流”

此属性是只读的。

线性分类模型类型,指定为“物流”“支持向量机”

在下表中, f x x β + b

  • β的向量p系数。

  • x是来自p预测变量。

  • b是标量偏置。

价值 算法 损失函数 FittedLoss价值
“物流” 逻辑回归 异常(物流): y f x 日志 1 + 经验值 y f x 分对数的
“支持向量机” 金宝app支持向量机 铰链: y f x 马克斯 0 1 y f x “枢纽”

如果你将一个传统的训练模型转换为创建Mdl学习者是传统训练模式的学习者。

此属性是只读的。

预测变量的数目,指定为非负数值标量。

如果你将一个传统的训练模型转换为创建MdlNumPredictors由传统训练模型的同余性质指定。否则,增量拟合函数推断NumPredictors从训练期间的预测器数据。

数据类型:

此属性是只读的。

符合增量模型的观测数Mdl,指定为非负数字标量。NumTrainingObservations当你通过时增加Mdl训练数据适合updateMetricsAndFit

请注意

如果你将一个传统的训练模型转换为创建MdlincrementalClassificationLinear没有将符合传统训练模型的观察数添加到NumTrainingObservations

数据类型:

此属性是只读的。

先验类概率,在此表中指定为值。您可以使用名称-值对参数语法设置此属性,但是incrementalClassificationLinear始终存储数字向量。

价值 描述
“经验” 增量学习函数从增量训练期间(估计期后)响应数据中观察到的类相对频率推断先验类概率EstimationPeriod).
“统一” 对于每一类,先验概率为1/K,在那里K是类的数量。
数值向量 自定义,规范化先验概率。元素的顺序之前元素的元素一会财产。

  • 如果你将一个传统的训练模型转换为创建MdlincrementalClassificationLinear使用之前传统训练模型的性质。

  • 否则,之前“经验”

数据类型:|

此属性是只读的。

分数转换函数,描述增量学习函数如何转换指定为字符向量、字符串标量或函数句柄的原始响应值。incrementalClassificationLinear将指定的值存储为字符向量或函数句柄。

该表描述了可用于分数转换的内置函数。

价值 描述
“doublelogit” 1 / (1 +e2x
“invlogit” 日志(x/ (1 -x))
“ismax” 将得分最大的类的得分设置为1,并将所有其他类的得分设置为0
“分对数” 1 / (1 +e- - - - - -x
“没有”“身份” x(转换)
“标志” 1x< 0
为0x= 0
1x> 0
“对称” 2x- 1
“symmetricismax” 将得分最大的类的得分设置为1,并将所有其他类的得分设置为-1
“symmetriclogit” 2 / (1 +e- - - - - -x) - 1

对于MATLAB®函数或你定义的函数,输入它的函数句柄;例如,“ScoreTransform”@函数,地点:

  • 函数接受一个n——- - - - - -K矩阵(原始分数)并返回相同大小的矩阵(转换后的分数)。

  • n观察数和行数是多少j的矩阵中包含了班级成绩的观察j

  • K是课程的数量吗元素个数(类名),和列k是类类名(k

默认情况下:

  • 如果你将一个传统的训练模型转换为创建MdlScoreTransform由传统训练模型的同余性质指定。例如,如果ScoreTransform传统训练模型的性质是一个分数到后验概率的转换函数,由fitPosteriorfitSVMPosteriorMdl。年代c或eTransform包含匿名函数。

  • ScoreTransform“没有”学习者“支持向量机”

  • ScoreTransform分对数的学习者“物流”

数据类型:字符|function_handle

训练参数

此属性是只读的。

增量模型处理的用于在训练或跟踪性能指标之前估计超参数的观察数,指定为非负整数。

请注意

  • 如果Mdl为增量学习做好准备(指定了训练所需的所有超参数),incrementalClassificationLinear部队“EstimationPeriod”0

  • 如果Mdl没有为增量学习做好准备,incrementalClassificationLinear“EstimationPeriod”1000

详情请参见估计时间

数据类型:|

此属性是只读的。

线性模型截距包含标志,指定为真正的

价值 描述
真正的 incrementalClassificationLinear包括偏差项β0在线性模型中,哪些增量拟合函数适合数据。
incrementalClassificationLinearβ0= 0。

如果偏见≠0,FitBias必须真正的.换句话说,incrementalClassificationLinear不支持上的相等约束金宝appβ0

如果将传统训练的线性分类模型(ClassificationLinear)来创造MdlFitBias的值指定ModelParameters。FitBias传统训练模型的性质。

数据类型:逻辑

此属性是只读的。

预测器的意思是,指定为数字向量。

如果μ是空数组[]你指定“标准化”,真的,增量拟合函数集μ对预测变量的估计是指在所指定的估计期间内的估计EstimationPeriod

你不能指定μ直接。

数据类型:|

此属性是只读的。

预测器标准偏差,指定为数值向量。

如果σ是空数组[]你指定“标准化”,真的,增量拟合函数集σ对在指定的估计期间内估计的预测变量的标准差EstimationPeriod

你不能指定σ直接。

数据类型:|

此属性是只读的。

目标函数最小化技术,在本表中指定一个值。

价值 描述 笔记
“扇区”

增量学习的自适应尺度不变求解器[1]

  • 该算法不受参数影响,能适应预测器尺度的差异。在使用SGD或ASGD之前,请尝试此算法。

  • 来洗牌传入的批适合函数拟合模型,集洗牌真正的

“sgd” 随机梯度下降(SGD)[3][2]

  • 为了有效地使用SGD进行训练,请对数据进行标准化,并使用中列出的选项为超参数指定适当的值SGD和ASGD求解器参数

  • 适合函数总是在拟合模型之前打乱传入的一批数据。

“asgd” 平均随机梯度下降(ASGD)[4]

  • 为了有效地使用ASGD进行训练,请对数据进行标准化,并使用中列出的选项为超参数指定适当的值SGD和ASGD求解器参数

  • 适合函数总是在拟合模型之前打乱传入的一批数据。

如果将传统训练的线性模型转换为二进制分类(ClassificationLinear)来创造Mdl,他的ModelParameters。解算器属性是“sgd”“asgd”解算器ModelParameters。解算器传统训练模型的性质。

数据类型:字符|字符串

此属性是只读的。

目标求解器配置,指定为结构数组。的领域SolverOptions属性是否特定于指定的求解器解算器

数据类型:结构体

SGD和ASGD求解器参数

此属性是只读的。

小批处理大小,指定为正整数。在训练期间的每次迭代中,incrementalClassificationLinear使用min (BatchSize numObs)观察计算次梯度,其中numObs训练数据中的观察数据的数量是否传递适合updateMetricsAndFit

如果将传统训练的线性模型转换为二进制分类(ClassificationLinear)来创造Mdl,他的ModelParameters。解算器属性是“sgd”“asgd”BatchSizeModelParameters。BatchSize传统训练模型的性质。否则,默认为10

数据类型:|

此属性是只读的。

脊(l2)正则化项强度,指定为非负标量。

如果将传统训练的线性模型转换为带岭惩罚的二元分类(ClassificationLinear具有属性的对象正则化等于“岭(L2)”)来创造Mdlλ的值指定λ传统训练模型的性质。否则,默认为1 e-5

数据类型:|

此属性是只读的。

学习率,指定为“汽车”或者一个正标量。LearnRate通过缩放目标次梯度来控制优化步长。

当你指定“汽车”

  • 如果EstimationPeriod0,初始学习率为0.7

  • 如果EstimationPeriod>0,初始学习率为1 /√(1 + max (sum (x ^ 2, obsDim))),在那里obsDim1如果观测值组成预测器数据的列,和2否则。适合而且updateMetricsAndFit在将模型和训练数据传递给其中一个时设置该值。

如果将传统训练的线性模型转换为二进制分类(ClassificationLinear)来创造Mdl,他的ModelParameters。解算器属性是“sgd”“asgd”LearnRateModelParameters。LearnRate传统训练模型的性质。

LearnRateSchedule属性决定后续学习周期的学习率。

数据类型:||字符|字符串

此属性是只读的。

学习率计划,指定为本表中的值,其中LearnRate初始学习率ɣ0

价值 描述
“不变” 学习率为ɣ0对于所有的学习周期。
“腐烂”

学习周期的学习率t

γ t γ 0 1 + λ γ 0 t c

  • λ的值λ

  • 如果解算器“sgd”,然后c= 1。

  • 如果解算器“asgd”,然后c是0.75[4]

如果将传统训练的线性模型转换为二进制分类(ClassificationLinear)来创造Mdl,他的ModelParameters。解算器属性是“sgd”“asgd”LearnRate“腐烂”

数据类型:字符|字符串

自适应比例不变求解器选项

此属性是只读的。

标记,用于在每个学习周期中对批中的观察值进行洗牌,在此表中指定为值。

价值 描述
真正的 该软件在处理数据集之前,对每批传入数据中的观察结果进行洗牌。这个动作减少了抽样方案引起的偏差。
软件按接收到的顺序处理数据。

数据类型:逻辑

性能指标及参数

此属性是只读的。

标志,指示增量模型是否跟踪性能度量,指定为真正的.增量模型Mdl温暖的IsWarm就变成了真正的)后进行增量拟合函数拟合MetricsWarmupPeriod对增量模型(即EstimationPeriod+MetricsWarmupPeriod观察)。

价值 描述
真正的 增量模型Mdl是温暖的。因此,updateMetrics而且updateMetricsAndFit中跟踪性能指标指标的属性Mdl
updateMetrics而且updateMetricsAndFit不要跟踪性能指标。

数据类型:逻辑

此属性是只读的。

建模在增量学习期间更新的性能指标updateMetrics而且updateMetricsAndFit,指定为具有两列和的表行,指标的数量是否由“指标”名称-值对参数。

的列指标标记累积而且窗口

  • 累积:元素j模型的性能是通过度量来衡量的吗j,从模型变暖开始(IsWarm1).

  • 窗口:元素j模型的性能是通过度量来衡量的吗j属性指定的窗口内的所有观测值MetricsWindowSize财产。软件更新窗口处理之后MetricsWindowSize观察。

行由指定的度量进行标记。详细信息请参见“指标”

数据类型:表格

此属性是只读的。

增量模型在跟踪其性能指标之前必须适合的观察数指标属性,指定为非负整数。

详情请参见性能指标

数据类型:|

此属性是只读的。

用于计算窗口性能指标的观察数,指定为正整数。

有关性能度量选项的详细信息,请参见性能指标

数据类型:|

对象的功能

适合 为增量学习训练线性模型
updateMetricsAndFit 在线性模型中更新性能指标,为增量学习提供新的数据和训练模型
updateMetrics 更新性能指标在线性模型增量学习给定的新数据
损失 批量数据增量学习的线性模型缺失
预测 预测增量学习线性模型对新观测的响应

例子

全部折叠

创建一个默认的增量线性SVM模型用于二进制分类。

Mdl =增量分类线性()
Mdl = incrementalClassificationLinear IsWarm: 0 Metrics: [1x2 table] ClassNames: [1x0 double] ScoreTransform: 'none' Beta: [0x1 double]偏差:0学习者:'svm'属性,方法

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

Mdl在使用它执行任何其他操作之前,必须适合于数据。

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

负载humanactivityN = numel(actid);rng (1);%用于再现性Idx = randsample(n,n);X = feat(idx,:);Y = actid(idx);

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

回答可以分为五类:坐着、站着、走着、跑着或跳舞。通过识别被测者是否在移动(actid> 2)。

Y = Y > 2;

将增量模型拟合到训练数据中updateMetricsAndfit函数。通过一次处理50个观测数据块来模拟数据流。在每次迭代中:

  • 处理50个观察结果。

  • 将先前的增量模型覆盖为一个适合于新观测的新模型。

  • 商店 β 1 ,累积指标,以及窗口指标,以查看它们在增量学习期间是如何发展的。

%预先配置numObsPerChunk = 50;nchunk = floor(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。指标{“ClassificationError”,:};beta1(j + 1) = Mdl.Beta(1);结束

IncrementalMdl是一个incrementalClassificationLinear在流中的所有数据上训练的模型对象。在增量学习期间和模型预热后,updateMetricsAndFit检查模型对传入观测的性能,然后将模型与该观测拟合。

看看性能指标和 β 1 在训练过程中进化出来的,把它们画在单独的子图上。

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

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

情节表明updateMetricsAndFit做以下事情:

  • 适合 β 1 在所有增量学习迭代过程中

  • 仅在指标预热期之后计算性能指标。

  • 在每次迭代期间计算累计度量。

  • 在处理500个观测后计算窗口度量。

通过指定一个指标预热期来准备一个增量二进制支持向量机学习器,在此期间updateMetricsAndFit函数只适合模型。指定500个观测值的度量窗口大小。使用SGD训练模型,调整SGD的批大小、学习率和正则化参数。

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

负载humanactivityN = numel(actid);Idx = randsample(n,n);X = feat(idx,:);Y = actid(idx);

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

回答可以是五种类型之一:坐着、站着、走路、跑步或跳舞。通过识别被测者是否在移动(actid> 2)。

Y = Y > 2;

为二元分类创建增量线性模型。模型配置如下:

  • 指定增量拟合函数处理原始(非标准化)预测器数据。

  • 指定SGD求解器。

  • 假设岭正则化参数值为0.001,SGD批大小为20,学习率为0.002,可以很好地解决该问题。

  • 指定度量预热期为5000个观测值。

  • 指定500个观测值的度量窗口大小。

  • 跟踪分类和铰链误差指标,以衡量模型的性能。

Mdl =增量分类线性(“标准化”假的,...“规划求解”“sgd”“λ”, 0.001,“BatchSize”, 20岁,“LearnRate”, 0.002,...“MetricsWarmupPeriod”, 5000,“MetricsWindowSize”, 500,...“指标”,{“classiferror”“枢纽”})
Mdl = incrementalClassificationLinear IsWarm: 0 Metrics: [2x2 table] ClassNames: [1x0 double] ScoreTransform: 'none' Beta: [0x1 double]偏差:0学习者:'svm'属性,方法

Mdl是一个incrementalClassificationLinear为增量学习配置的模型对象。

方法将增量模型拟合到其余数据updateMetricsAndfit函数。在每次迭代中:

  • 通过处理50个观测数据块来模拟数据流。注意,块大小不同于SGD批大小。

  • 将先前的增量模型覆盖为一个适合于新观测的新模型。

  • 存储估计的系数 β 10 ,累积指标,以及窗口指标,以查看它们在增量学习期间是如何发展的。

%预先配置numObsPerChunk = 50;nchunk = floor(n/numObsPerChunk);Ce = array2table(0 (nchunk,2),“VariableNames”,[“累积”“窗口”]);铰链= array2table(零(nchunk,2),“VariableNames”,[“累积”“窗口”]);Beta10 = 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。指标{“ClassificationError”,:};铰链{j,:} = Mdl。指标{“HingeLoss”,:};beta10(j + 1) = Mdl.Beta(10);结束

IncrementalMdl是一个incrementalClassificationLinear在流中的所有数据上训练的模型对象。在增量学习期间和模型预热后,updateMetricsAndFit检查模型对传入观测的性能,然后将模型与该观测拟合。

看看性能指标和 β 10 在训练过程中进化出来的,把它们画在单独的子图上。

图;Subplot (2,2,1) plot(beta10)“\ beta_{10}”) xlim([0 nchunk]);参照线(Mdl。指标WarmupPeriod/numObsPerChunk,r -。);包含(“迭代”) subplot(2,2,2) h = plot(ce.Variables);xlim ([0 nchunk]);ylabel (分类错误的)参照线(Mdl。指标WarmupPeriod/numObsPerChunk,r -。);传奇(h, ce.Properties.VariableNames)包含(“迭代”) subplot(2,2,3) h = plot(hinge.Variables);xlim ([0 nchunk]);ylabel (“铰链损失”)参照线(Mdl。指标WarmupPeriod/numObsPerChunk,r -。);传奇(h, hinge.Properties.VariableNames)包含(“迭代”

图中包含3个轴对象。坐标轴对象1包含2个line、constantline类型的对象。坐标轴对象2包含3个line、constantline类型的对象。这些对象代表累积、窗口。坐标轴对象3包含3个line、constantline类型的对象。这些对象代表累积、窗口。

情节表明updateMetricsAndFit做以下事情:

  • 适合 β 10 在所有增量学习迭代过程中

  • 仅在指标预热期之后计算性能指标。

  • 在每次迭代期间计算累计度量。

  • 在处理500个观察结果(10次迭代)后计算窗口度量。

训练一个用于二元分类的线性模型fitclinear,将其转换为增量学习器,跟踪其性能,并使其适应流数据。从传统学习到增量学习。

加载和预处理数据

加载人类活动数据集。随机打乱数据。在列中定位预测器数据的观测值。

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

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

回答可以分为五类:坐着、站着、走着、跑着或跳舞。通过识别被测者是否在移动(actid> 2)。

Y = Y > 2;

假设在主题空闲时收集的数据(Y)的质量是物体移动时的两倍。创建一个权重变量,将2属性归为从空闲主体收集的观察结果,1属性归为移动主体。

W = ones(n,1) + ~Y;

二元分类训练线性模型

用二分之一的随机样本拟合二元分类的线性模型。

Idxtt = randsample([true false],n,true);TTMdl = fitclinear(X(:,idxtt),Y(idxtt),“ObservationsIn”“列”...“重量”W (idxtt))
TTMdl = ClassificationLinear ResponseName: 'Y' ClassNames: [0 1] ScoreTransform: 'none' Beta: [60x1 double]偏差:-0.1107 Lambda: 8.2967e-05学习者:'svm'属性,方法

TTMdl是一个ClassificationLinear模型对象,表示用于二进制分类的传统训练线性模型。

转换训练模型

将传统训练的分类模型转换为增量学习的二元分类线性模型。

IncrementalMdl =增量学习者(TTMdl)
IncrementalMdl = incrementalClassificationLinear IsWarm: 1 Metrics: [1x2 table] ClassNames: [0 1] ScoreTransform: 'none' Beta: [60x1 double]偏差:-0.1107 Learner: 'svm'属性,方法

分别跟踪绩效指标和适合模型

方法对其余数据执行增量学习updateMetrics而且适合功能。通过一次处理50个观测数据来模拟数据流。在每次迭代中:

  1. 调用updateMetrics在给定传入观测数据块的情况下,更新模型的累积和窗口分类误差。的增量模型中更新损失指标财产。注意,函数并没有将模型与数据块相匹配——数据块是模型的“新”数据。指定观测值以列为方向,并指定观测值权重。

  2. 调用适合使模型与观测数据相匹配。覆盖之前的增量模型以更新模型参数。指定观测值以列为方向,并指定观测值权重。

  3. 存储分类误差和第一次估计系数 β 1

%预先配置Idxil = ~idxtt;Nil = sum(idxil);numObsPerChunk = 50;nchunk = floor(nil/numObsPerChunk);Ce = array2table(0 (nchunk,2),“VariableNames”,[“累积”“窗口”]);beta1 = [incrementalmml . beta (1);0 (nchunk 1)];Xil = X(:,idxil);Yil = Y(idxil);Wil = W(idxil);%增量拟合j = 1:nchunk ibegin = min(nil,numObsPerChunk*(j-1) + 1);iend = min(nil,numObsPerChunk*j);Idx = ibegin:iend;增量mdl = updateMetrics(增量mdl,Xil(:,idx),Yil(idx),...“ObservationsIn”“列”“重量”会(idx));ce{j,:} = IncrementalMdl。指标{“ClassificationError”,:};增量mdl = fit(增量mdl,Xil(:,idx),Yil(idx),“ObservationsIn”“列”...“重量”会(idx));beta1(j + 1) = incrementalmml . beta (end);结束

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

或者,您可以使用updateMetricsAndFit更新给定数据块的模型的性能指标,然后将模型与数据进行拟合。

绘制性能指标和估计系数的轨迹图 β 1

图;subplot(2,1,1) h = plot(ce.Variables);xlim ([0 nchunk]);ylabel (分类错误的) subplot(2,1,2) plot(beta1) ylabel(“\ beta_1”) xlim([0 nchunk]);包含(“迭代”

图中包含2个轴对象。坐标轴对象1包含2个line类型的对象。这些对象代表累积、窗口。坐标轴对象2包含一个line类型的对象。

累积损失是稳定的,并逐渐减小,而窗口损失跳跃。

β 1 起初变化突然,然后逐渐趋于平稳适合处理更多的块。

更多关于

全部展开

提示

  • 在创建模型之后,您可以生成对数据流执行增量学习的C/ c++代码。生成C/ c++代码需要MATLAB编码器™.详细信息请参见代码生成简介

算法

全部展开

参考文献

[1]肯普卡,米夏拉,沃伊切赫·科茨沃斯基和曼弗雷德·k·瓦穆斯。线性模型学习的自适应比例不变在线算法相关系数(2019年2月)。https://arxiv.org/abs/1902.07528

[2] Langford, J., Li ., and T. Zhang。“通过截断梯度的稀疏在线学习。”j·马赫。学习。Res。, Vol. 10, 2009, pp. 777-801。

[3]沙利夫-施瓦兹,S. Y.辛格和N.斯雷布罗。Pegasos:支持向量机的原始估计次梯度求解器第24届机器学习国际会议论文集,ICML ' 07, 2007,第807-814页。

徐伟。“用平均随机梯度下降法实现最优一次大规模学习”相关系数, abs/1107.2490, 2011。

扩展功能

R2020b中介绍