主要内容

incrementalClassificationLinear

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

描述

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

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

incrementalClassificationLinear最适合增量学习。有关训练用于二进制分类的支持向量机或线性模型的传统方法(如通过拟合数据创建模型、执行交叉验证、调优超参数等),请参见fitcsvmfitclinear.关于多类增量学习,请参见incrementalClassificationECOC而且incrementalClassificationNaiveBayes

创建

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

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

  • 转换一个传统训练的模型-使用训练过的模型对象的模型系数和超参数初始化一个二进制分类线性模型进行增量学习,可以将传统训练的模型转换为incrementalClassificationLinear对象进行建模,将其传递给incrementalLearner函数。该表包含到相应参考页面的链接。

  • 转换模板对象—可以将模板对象转换为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,…,以=家,在那里的名字参数名称和价值对应的值。名-值参数必须出现在其他参数之后,但对的顺序并不重要。

在R2021a之前,名称和值之间用逗号隔开,并括起来的名字在报价。

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

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

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

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

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

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

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

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

metric = customMetric(C,S)

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

  • 指定函数名(customMetric).

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

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

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

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

例子:'Metrics',{@customMetric1 @customMetric2 '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确定是否需要对预测器变量进行标准化。看到标准化数据
真正的 该软件使预测数据标准化。有关更多细节,请参见标准化数据
该软件没有对预测数据进行标准化。

例子:“标准化”,真的

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

标记,用于在每次迭代中洗牌观察,在此表中指定为一个值。

价值 描述
真正的 该软件在传入的数据块中打乱观察结果适合函数符合模型。这个动作减少了抽样方案引起的偏差。
软件按照收到的顺序处理数据。

此选项仅在以下情况下有效解算器“扇区”.当解算器“sgd”“asgd”在处理数据之前,该软件总是会打乱传入数据块中的观察结果。

例子:“洗牌”,假的

数据类型:逻辑

属性

全部展开

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

分类模型参数

此属性是只读的。

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

增量拟合函数估计β在培训。默认的初始值β值取决于你如何创建模型:

  • 如果您将传统训练的模型对象或模板模型对象转换为Mdl,初始值由对象的相应属性指定。

  • 否则,初始值为0 (NumPredictors, 1)

数据类型:|

此属性是只读的。

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

增量拟合函数估计偏见在培训。默认的初始值偏见值取决于你如何创建模型:

  • 如果您将传统训练的模型对象或模板模型对象转换为Mdl,初始值由对象的相应属性指定。

  • 否则,初始值为0

数据类型:|

此属性是只读的。

用于训练模型的惟一类标签,指定为类别、字符或字符串数组、逻辑或数字向量或字符向量的单元格数组。一会响应数据必须具有相同的数据类型。(该软件将字符串数组视为字符向量的单元格数组。)

默认的一会值取决于你如何创建模型:

  • 如果您将传统训练的模型转换为Mdl一会由传统训练模型的相应属性指定。

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

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

此属性是只读的。

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

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

此属性是只读的。

线性分类模型类型,指定为“支持向量机”“物流”incrementalClassificationLinear存储学习者值作为字符向量。

在下表中, f x x β + b

  • β是的向量p系数。

  • x是一个观察p预测变量。

  • b是标量偏差。

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

默认的学习者值取决于你如何创建模型:

  • 如果将传统训练的支持向量机分类模型对象(ClassificationSVMCompactClassificationSVM)或SVM模型模板对象(由templateSVM)创造Mdl学习者“支持向量机”

  • 如果您将传统训练的线性分类模型对象(ClassificationLinear)或线性分类模型模板对象(由templateLinear)创造Mdl学习者由对象的相应属性指定。

  • 否则,默认值为“支持向量机”

数据类型:字符|字符串

此属性是只读的。

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

默认的NumPredictors值取决于你如何创建模型:

  • 如果您将传统训练的模型转换为MdlNumPredictors由传统训练模型的相应属性指定。

  • 如果你创建Mdl通过调用incrementalClassificationLinear您可以直接指定NumPredictors通过使用名称-值参数语法。

  • 否则,默认值为0,增量拟合函数推断NumPredictors从训练期间的预测数据。

数据类型:

此属性是只读的。

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

请注意

如果您将传统训练的模型转换为MdlincrementalClassificationLinear是否将符合传统训练模型的观察数相加NumTrainingObservations

数据类型:

此属性是只读的。

先验类概率,指定为“经验”“统一”,或者一个数字向量。incrementalClassificationLinear存储之前值作为数字向量。

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

默认的之前值取决于你如何创建模型:

  • 如果您将传统训练的模型转换为Mdl之前由传统训练模型的相应属性指定。

  • 否则,默认值为“经验”

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

此属性是只读的。

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

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

价值 描述
“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——- - - - - -2矩阵(原始分数),并返回一个相同大小的矩阵(转换后的分数)。中的类顺序对应一会财产。

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

默认的ScoreTransform值取决于你如何创建模型:

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

  • 否则,默认值为“没有”(当学习者“支持向量机”)或分对数的(当学习者“物流”).

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

训练参数

此属性是只读的。

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

请注意

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

  • 如果Mdl没有为增量学习做好准备,incrementalClassificationLinearEstimationPeriod1000

有关更多细节,请参见估计时间

数据类型:|

此属性是只读的。

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

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

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

默认的FitBias值取决于你如何创建模型:

  • 如果您将传统训练的线性分类模型对象(ClassificationLinear)创造MdlFitBiasFitBias的价值ModelParameters传统训练模型的性质。

  • 如果您转换线性模型模板对象(由templateLinear)创建MdlFitBias由对象的相应属性指定。

  • 否则,默认值为真正的

数据类型:逻辑

此属性是只读的。

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

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

您不能指定μ直接。

数据类型:|

此属性是只读的。

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

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

您不能指定σ直接。

数据类型:|

此属性是只读的。

目标函数最小化技术,具体为“扇区”“sgd”,或“asgd”incrementalClassificationLinear存储解算器值作为字符向量。

价值 描述 笔记
“扇区”

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

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

  • 来打乱传入的数据块适合功能符合模型,集洗牌真正的

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

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

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

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

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

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

默认的解算器值取决于你如何创建模型:

  • 如果你创建Mdl通过调用incrementalClassificationLinear直接使用时,默认值为“扇区”

  • 如果您将传统训练的线性分类模型对象(ClassificationLinear)或一个线性模型模板对象(由templateLinear)创造Mdl,该对象使用脊正则化和SGD或ASGD求解器,Mdl使用相同的求解器。

    (您可以查看解算器传统训练模型的价值(例如,TTMdl)TTMdl.ModelParameters.Solver.对于模型模板对象,您可以查看解算器值通过在命令窗口或变量编辑器中显示对象。)

  • 否则,解算器的名称-值参数incrementalLearner函数设置此属性。参数的默认值是“扇区”

数据类型:字符|字符串

此属性是只读的。

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

数据类型:结构体

SGD和ASGD求解器参数

此属性是只读的。

小批大小,指定为正整数。在培训的每个学习周期中,incrementalClassificationLinear使用BatchSize计算亚梯度的观察结果。

的最后一个小批(每次函数调用的最后一个学习周期)的观察数适合updateMetricsAndFit)可以小于BatchSize.例如,如果你提供25个观察适合updateMetricsAndFit,函数在前两个学习周期使用10个观察值,在最后一个学习周期使用5个观察值。

默认的BatchSize值取决于你如何创建模型:

  • 如果你创建Mdl通过调用incrementalClassificationLinear直接使用时,默认值为10

  • 如果您将传统训练的线性分类模型对象(ClassificationLinear)创造Mdl,该对象使用脊正则化和SGD或ASGD求解器,BatchSizeBatchSize的价值ModelParameters传统训练模型的性质。

  • 如果您转换线性模型模板对象(由templateLinear)创建Mdl,该对象使用脊正则化和SGD或ASGD求解器,BatchSize由对象的相应属性指定。

  • 否则,BatchSize的名称-值参数incrementalLearner函数设置此属性。参数的默认值是10

数据类型:|

此属性是只读的。

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

默认的λ值取决于你如何创建模型:

  • 如果你创建Mdl通过调用incrementalClassificationLinear直接使用时,默认值为1 e-5

  • 如果您将传统训练的线性分类模型对象(ClassificationLinear)或一个线性模型模板对象(由templateLinear)创造Mdl,该对象使用脊正则化和SGD或ASGD求解器,λ由对象的相应属性指定。

  • 否则,λ的名称-值参数incrementalLearner函数设置此属性。参数的默认值是1 e-5

数据类型:|

此属性是只读的。

初始学习速率,指定为“汽车”或者一个正的标量。incrementalClassificationLinear存储LearnRate值作为数值标量。

学习率通过缩放目标子梯度来控制优化步长。LearnRate指定学习率的初始值和LearnRateSchedule确定后续学习周期的学习率。

当你指定“汽车”

  • 初始学习率为0.7

  • 如果EstimationPeriod>0适合而且updateMetricsAndFit将速率更改为1 /√(1 + max (sum (x ^ 2, obsDim)))最后EstimationPeriod.的obsDim值是1如果观察结果构成预测数据的列;否则,取值为2

默认的LearnRate值取决于你如何创建模型:

  • 如果你创建Mdl通过调用incrementalClassificationLinear直接使用时,默认值为“汽车”

  • 如果您将传统训练的线性分类模型对象(ClassificationLinear)创造Mdl,该对象使用脊正则化和SGD或ASGD求解器,LearnRateLearnRate的价值ModelParameters传统训练模型的性质。

  • 如果您转换线性模型模板对象(由templateLinear)创建Mdl,该对象使用脊正则化和SGD或ASGD求解器,LearnRate由对象的相应属性指定。

  • 否则,LearnRate的名称-值参数incrementalLearner函数设置此属性。参数的默认值是“汽车”

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

此属性是只读的。

学习率时间表,指定为“腐烂”“不变”,在那里LearnRate初始学习率ɣ0incrementalClassificationLinear存储LearnRateSchedule值作为字符向量。

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

学习周期内的学习率t

γ t γ 0 1 + λ γ 0 t c

  • λ的值λ

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

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

默认的LearnRateSchedule值取决于你如何创建模型:

  • 如果您将传统训练的模型对象或模板模型对象转换为Mdl,LearnRateSchedule的名称-值参数incrementalLearner函数设置此属性。参数的默认值是“腐烂”

  • 否则,默认值为“腐烂”

数据类型:字符|字符串

性能指标及参数

此属性是只读的。

标志,指示增量模型是否跟踪性能指标,指定为逻辑0)或1真正的).

增量模型Mdl温暖的IsWarm就变成了真正的)后增量拟合函数拟合(EstimationPeriod+MetricsWarmupPeriod)对增量模型的观测值。

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

数据类型:逻辑

此属性是只读的。

在增量学习期间更新的模型性能度量updateMetrics而且updateMetricsAndFit,指定为一个包含两列和的表行,指标的数量是否由指标名称-值参数。

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

  • 累积:元素j模型性能是否如度量标准所衡量j,从模型变暖开始(IsWarm1).

  • 窗口:元素j模型性能是否如度量标准所衡量j控件指定的窗口内的所有观察值MetricsWindowSize财产。软件更新窗口处理完之后MetricsWindowSize观察。

行按指定的指标进行标记。详细信息请参见指标的名值参数incrementalLearnerincrementalClassificationLinear

数据类型:表格

此属性是只读的。

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

默认的MetricsWarmupPeriod值取决于你如何创建模型:

  • 如果您将传统训练的模型转换为Mdl,MetricsWarmupPeriod的名称-值参数incrementalLearner函数设置此属性。参数的默认值是0

  • 否则,默认值为1000

有关更多细节,请参见性能指标

数据类型:|

此属性是只读的。

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

默认的MetricsWindowSize值取决于你如何创建模型:

  • 如果您将传统训练的模型转换为Mdl,MetricsWindowSize的名称-值参数incrementalLearner函数设置此属性。参数的默认值是200

  • 否则,默认值为200

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

数据类型:|

对象的功能

适合 训练线性模型进行增量学习
updateMetricsAndFit 根据新的数据和训练模型,更新线性增量学习模型中的性能指标
updateMetrics 在给定新数据的情况下,更新线性增量学习模型中的性能指标
损失 批量数据线性增量学习模型的损失
预测 用线性增量学习模型预测新观察结果的响应
perObservationLoss 根据模型的观察分类误差进行增量学习
重置 重置增量分类模型

例子

全部折叠

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

Mdl = incrementalClassificationLinear()
Mdl = incrementalClassificationLinear IsWarm: 0 Metrics: [1x2 table] ClassNames: [1x0 double] ScoreTransform: 'none' Beta: [0x1 double] Bias: 0 Learner: '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 在训练过程中进化,将它们绘制在单独的贴图上。

T = tiledlayout(2,1);Nexttile plot(beta1)“\ beta_1”) xlim([0 nchunk]) nexttile h = plot(ce.Variables);Xlim ([0 nchunk]) ylabel(分类错误的)参照线(Mdl。指标WarmupPeriod/numObsPerChunk,“g -”。) legend(h,ce.Properties.VariableNames)“迭代”

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

情节表明updateMetricsAndFit做以下工作:

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

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

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

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

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

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

负载humanactivityN = numel(actid);rng (“默认”%用于重现性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 = incrementalClassificationLinear“标准化”假的,“规划求解”“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] Bias: 0 Learner: '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);结束

Mdl是一个incrementalClassificationLinear对流中的所有数据进行训练的模型对象。在增量学习过程中和模型预热之后,updateMetricsAndFit检查模型在传入观测数据上的性能,然后将模型与这些观测数据拟合。

看看绩效指标和 β 10 在训练过程中进化,将它们绘制在单独的贴图上。

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

图中包含3个轴对象。坐标轴对象1包含两个类型为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学习者:'svm'属性,方法

分别跟踪性能指标和拟合模型

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

  1. 调用updateMetrics更新模型的累积分类误差和窗口分类误差。覆盖前面的增量模型以更新中的损失指标财产。注意,该函数并没有使模型适合数据块—数据块是模型的“新”数据。指定观察值以列为方向,并指定观察值的权重。

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

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

%预先配置Idxil = ~idxtt;Nil = sum(idxil);numObsPerChunk = 50;nchunk =地板(nil/numObsPerChunk);Ce = array2table(0 (nchunk,2),“VariableNames”,[“累积”“窗口”]);beta1 = [IncrementalMdl.Beta(1);0 (nchunk 1)];Xil = X(:,idxil);Yil = Y(idxil);will = 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

T = tiledlayout(2,1);nexttile h = plot(ce.Variables);Xlim ([0 nchunk]) ylabel(分类错误的)图例(h,ce.Properties.VariableNames)“\ beta_1”) xlim([0 nchunk]) xlabel(t,“迭代”

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

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

β 1 起初变化突然,然后逐渐稳定下来适合处理更多的块。

更多关于

全部展开

提示

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

算法

全部展开

参考文献

[1]坎普卡,米夏沃维,沃伊切赫·科托科夫斯基,曼弗雷德·k·瓦穆斯。学习线性模型的自适应比例不变在线算法。预印本,2019年2月10日提交。https://arxiv.org/abs/1902.07528

[2]兰福德,J.,李丽,张泰。基于截断梯度的稀疏在线学习。j·马赫。学习。Res。2009年,第10卷,第777-801页。

sherv - schwartz, S, Y. Singer, N. Srebro。Pegasos:支持向量机的原始估计亚梯度求解器。第24届国际机器学习会议论文集,ICML ' 07, 2007, pp. 807-814。

[4]徐伟。"基于平均随机梯度下降的最优单次大规模学习"相关系数, abs/1107.2490, 2011。

扩展功能

版本历史

在R2020b中引入