主要内容

incrementalClassificationLinear

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

自从R2020b

描述

incrementalClassificationLinear创建一个incrementalClassificationLinear代表二进制分类模型对象线性模型的增量学习。万博1manbetx支持学习者包括支持向量机(SVM)和逻辑回归。

不像其他的统计和机器学习工具箱™模型对象,incrementalClassificationLinear可以直接调用。此外,您可以指定学习选项,例如性能指标配置,参数值,和客观的解决者,拟合模型的数据。当你创建一个incrementalClassificationLinear对象,它是准备增量学习

incrementalClassificationLinear最适合增量学习。传统方法来训练支持向量机或线性模型二元分类(如创建模型通过拟合数据,进行交叉验证,优化hyperparameters,等等),看到的fitcsvmfitclinear。多级增量学习,看到incrementalClassificationECOCincrementalClassificationNaiveBayes

创建

您可以创建一个incrementalClassificationLinear模型对象在几个方面:

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

  • 将传统的训练模式——初始化一个二进制增量学习分类线性模型使用模型系数和hyperparameters训练模型对象,您可以转换到一个传统的训练模式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),updateMetricsupdateMetricsAndFit跟踪的性能指标指标的属性Mdl

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

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

内置的损失函数的更多细节,请参阅损失

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

指定一个自定义函数,返回一个性能指标,使用函数处理符号。函数必须有这种形式:

度量= customMetric (C, S)

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

  • 你指定函数名(customMetric)。

  • C是一个n——- - - - - -2逻辑矩阵行指示相应的观察所属的类。列顺序对应于类秩序一会财产。创建C通过设置C (p,)=1,如果观察p是在课堂上指定的数据,对于每一个观察。设置行中的其他元素p0

  • 年代是一个n——- - - - - -2数字矩阵的预测分类的分数。年代类似于分数的输出预测,行对应于观测数据和列顺序对应于类秩序一会财产。S (p,)分类的观察吗p在课堂上被分类

指定多个自定义指标和分配自定义名称,使用结构数组。指定一个内置的和自定义指标的组合,使用细胞向量。

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

例子:“指标”,{@customMetric1 @customMetric2分对数的结构(Metric3, @customMetric3)}

updateMetricsupdateMetricsAndFit中的一个表中存储指定的指标指标财产。的数据类型指标决定了行表的名称。

“指标”值数据类型 的描述指标属性行名称 例子
字符串或字符向量 相应的内置的度量 行名称“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将传统训练的模型对象或对象模型模板。你不能设置属性FittedLoss,NumTrainingObservations,μ,σ,SolverOptions,IsWarm

分类模型参数

这个属性是只读的。

线性模型系数β指定为一个NumPredictors1数字向量。

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

  • 如果你把一个传统训练模型对象创建模型对象或模板Mdl初始值是由对象的相应属性指定的。

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

数据类型:|

这个属性是只读的。

模型的截距β0,或者偏见,指定为数字标量。

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

  • 如果你把一个传统训练模型对象创建模型对象或模板Mdl初始值是由对象的相应属性指定的。

  • 否则,初始值0

数据类型:|

这个属性是只读的。

独特的类标签用于训练模型,指定分类,字符,或字符串数组,逻辑或数值向量,或单元阵列的特征向量。一会和响应的数据必须具有相同的数据类型。(软件对字符串数组作为细胞阵列特征向量)。

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

  • 如果你把一个传统训练模型创建Mdl,一会指定相应的属性的传统训练模式。

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

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

这个属性是只读的。

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

价值 算法 损失函数 学习者价值
“枢纽” 万博1manbetx支持向量机 铰链: ( 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价值
“支持向量机” 万博1manbetx支持向量机 铰链: ( y , f ( x ) ] = 马克斯 ( 0 , 1 y f ( x ) ] “枢纽”
“物流” 逻辑回归 异常(物流): ( y , f ( x ) ] = 日志 { 1 + 经验值 ( y f ( x ) ] } 分对数的

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

  • 如果你把一个传统训练支持向量机分类模型对象(ClassificationSVMCompactClassificationSVM)或模板对象(返回的SVM模型templateSVM)来创建Mdl,学习者“支持向量机”

  • 如果你把一个传统训练线性分类模型对象(ClassificationLinear),或者返回的模板对象(线性分类模型templateLinear)来创建Mdl,学习者指定相应的属性的对象。

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

数据类型:字符|字符串

这个属性是只读的。

指定数量的预测变量,作为一个非负数字标量。

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

  • 如果你把一个传统训练模型创建Mdl,NumPredictors指定相应的属性的传统训练模式。

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

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

数据类型:

这个属性是只读的。

观察适合增量模型的数量Mdl指定为一个非负数字标量。NumTrainingObservations当你通过增加Mdl和训练数据适合updateMetricsAndFit

请注意

如果你把一个传统训练模型创建Mdl,incrementalClassificationLinear不会增加观测的数量符合传统的训练模式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价值取决于你如何创建模型:

  • 如果你把一个传统训练模型创建Mdl,ScoreTransform指定相应的属性的传统训练模式。例如,如果ScoreTransform传统训练模型的属性是一个score-to-posterior-probability变换函数,计算fitPosteriorfitSVMPosterior,Mdl.ScoreTransform包含一个匿名函数。

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

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

训练参数

这个属性是只读的。

数量的观察处理的增量式模型来估计hyperparameters培训或跟踪性能指标之前,指定为一个非负整数。

请注意

  • 如果Mdl是准备增量学习(指定所有必需hyperparameters培训),incrementalClassificationLinear部队EstimationPeriod0

  • 如果Mdl不是准备增量学习,incrementalClassificationLinearEstimationPeriod1000年

更多细节,请参阅估计时间

数据类型:|

这个属性是只读的。

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

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

如果偏见≠0,FitBias必须真正的。换句话说,incrementalClassificationLinear不支持一个等式约束万博1manbetxβ0

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

  • 如果你把一个传统训练线性分类模型对象(ClassificationLinear)来创建Mdl,FitBias是指定的FitBias的价值ModelParameters财产的传统训练模式。

  • 如果你把一个线性模型模板对象(返回的templateLinear)来创建Mdl,FitBias指定相应的属性的对象。

  • 否则,默认值是真正的

数据类型:逻辑

这个属性是只读的。

预测方法,指定为一个数值向量。

如果μ是一个空数组[]你指定“标准化”,真的、增量拟合函数集μ预测变量意味着估计估计期间指定的EstimationPeriod

你不能指定μ直接。

数据类型:|

这个属性是只读的。

预测标准差,指定为一个数值向量。

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

你不能指定σ直接。

数据类型:|

这个属性是只读的。

目标函数最小化技术,指定为“扇区”,“sgd”,或“asgd”incrementalClassificationLinear存储解算器值作为特征向量。

价值 描述 笔记
“扇区”

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

  • 该算法参数是免费的,可以适应不同的预测。试试这个算法使用SGD或ASGD之前。

  • 前洗牌传入的数据适合函数的模型,设置洗牌真正的

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

  • 培训有效地与SGD,标准化数据并指定适当的值hyperparameters使用选项中列出SGD和ASGD解算器参数

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

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

  • 培训有效地与ASGD,标准化数据并指定适当的值hyperparameters使用选项中列出SGD和ASGD解算器参数

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

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

  • 如果您创建Mdl通过调用incrementalClassificationLinear直接默认值“扇区”

  • 如果你把一个传统训练线性分类模型对象(ClassificationLinear)或线性模型模板对象(返回的templateLinear)来创建Mdl,对象使用脊正规化和SGD或ASGD解算器,Mdl使用相同的解决者。

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

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

数据类型:字符|字符串

这个属性是只读的。

客观的解算器配置,指定为一个结构数组。等领域的SolverOptions属性指定特定于解算器吗解算器

数据类型:结构体

SGD和ASGD解算器参数

这个属性是只读的。

Mini-batch大小,指定为一个正整数。在每一个学习周期训练,incrementalClassificationLinear使用BatchSize观察计算次梯度。

观测的数量在过去mini-batch(最后一个学习周期的每个函数调用适合updateMetricsAndFit可以小于)BatchSize。例如,如果您提供25观测适合updateMetricsAndFit,前两个函数使用10观察学习周期和5观察过去的学习周期。

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

  • 如果您创建Mdl通过调用incrementalClassificationLinear直接默认值10

  • 如果你把一个传统训练线性分类模型对象(ClassificationLinear)来创建Mdl,对象使用脊正规化和SGD或ASGD解算器,BatchSize是指定的BatchSize的价值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解算器,LearnRate是指定的LearnRate的价值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是温暖的。因此,updateMetricsupdateMetricsAndFit跟踪的性能指标指标的属性Mdl
0 updateMetricsupdateMetricsAndFit不跟踪性能指标。

数据类型:逻辑

这个属性是只读的。

在增量学习模型更新的性能指标updateMetricsupdateMetricsAndFit,指定为一个表有两列和行,是指定的指标的数量吗指标名称-值参数。

的列指标标记累积窗口

  • 累积:元素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指标:[1 x2表]一会:[1 x0双]ScoreTransform:“没有一个”测试:[0 x1双]偏见:0学习者:“支持向量机”属性,方法

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

Mdl必须适合数据之前,您可以使用它来执行任何其他操作。

载入人类活动数据集。随机洗牌数据。

负载humanactivityn =元素个数(actid);rng (1)%的再现性idx = randsample (n, n);X =壮举(idx:);Y = actid (idx);

细节的数据集,输入描述在命令行中。

响应可以是五类:坐着,站着,散步,跑步,或者跳舞。二分响应通过识别主题是否移动(actid> 2)。

Y = Y > 2;

适应增量式模型通过使用训练数据updateMetricsAndFit函数。模拟数据流处理的50块一次观察。在每一次迭代:

  • 50的观察过程。

  • 覆盖前面的增量式模型与一个新安装的观察。

  • 商店 β 1 、累积度量和窗口指标增量学习期间看到他们如何演变。

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

IncrementalMdl是一个incrementalClassificationLinear模型对象培训中的所有数据流。在增量学习模型是热身之后,updateMetricsAndFit检查模型的性能的观察,然后符合观测模型。

性能指标和 β 1 进化在训练,放到单独的瓷砖。

t = tiledlayout (2, 1);nexttile情节(beta1) ylabel (“\ beta_1”)xlim ([0 nchunk]) nexttile h =情节(ce.Variables);xlim ([0 nchunk]) ylabel (分类错误的)参照线(Mdl.MetricsWarmupPeriod / numObsPerChunk,“g -”。传奇(h, ce.Properties.VariableNames)包含(t)“迭代”)

图包含2轴对象。坐标轴对象1 ylabel \ beta_1包含一个类型的对象。坐标轴对象2 ylabel分类错误包含3线类型的对象,constantline。这些对象代表累积,窗口。

情节表明updateMetricsAndFit以下:

  • 适合 β 1 在增量学习迭代。

  • 计算后的性能指标度量预热期。

  • 在每一次迭代计算累积度量。

  • 计算窗口指标200年处理后观察(4迭代)。

准备一个二进制增量SVM学习者通过指定指标预热期,在此期间updateMetricsAndFit功能只适合模型。指定一个指标500观察的窗口大小。通过使用SGD训练模型,并调整SGD批量大小,学习速率和正则化参数。

载入人类活动数据集。随机洗牌数据。

负载humanactivityn =元素个数(actid);rng (“默认”)%的再现性idx = randsample (n, n);X =壮举(idx:);Y = actid (idx);

细节的数据集,输入描述在命令行中。

响应可以是五类:坐着,站着,散步,跑步,或者跳舞。二分响应通过识别主题是否移动(actid> 2)。

Y = Y > 2;

创建一个二进制增量线性模型分类。配置模型如下:

  • 指定增量拟合函数过程原始(unstandardized)预测数据。

  • 指定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指标:[2 x2表]一会:[1 x0双]ScoreTransform:“没有一个”测试:[0 x1双]偏见:0学习者:“支持向量机”属性,方法

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

适应增量式模型通过使用其余的数据updateMetricsAndFit函数。在每一次迭代:

  • 模拟数据流处理一块50的观察。注意,块大小与SGD批大小不同。

  • 覆盖前面的增量式模型与一个新安装的观察。

  • 存储估计系数 β 10 、累积度量和窗口指标增量学习期间看到他们如何演变。

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

Mdl是一个incrementalClassificationLinear模型对象培训中的所有数据流。在增量学习模型是热身之后,updateMetricsAndFit检查模型的性能的观察,然后符合观测模型。

性能指标和 β 10 进化在训练,放到单独的瓷砖。

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

图包含3轴对象。轴与包含迭代对象1,ylabel \ beta_{10}包含2线类型的对象,constantline。轴与包含迭代对象2,ylabel分类误差包含3线类型的对象,constantline。这些对象代表累积,窗口。坐标轴对象和包含迭代3,ylabel铰链损失包含3线类型的对象,constantline。这些对象代表累积,窗口。

情节表明updateMetricsAndFit以下:

  • 适合 β 10 在增量学习迭代。

  • 计算后的性能指标度量预热期。

  • 在每一次迭代计算累积度量。

  • 计算窗口指标500年处理后观察(10迭代)。

火车二进制分类使用的线性模型fitclinear,将它转换成一个增量学习,跟踪其性能,并适合流媒体数据。从传统的增量学习延续培训的选项。

加载和数据预处理

载入人类活动数据集。随机洗牌数据。东方的观测指标数据列。

负载humanactivityrng (1);%的再现性n =元素个数(actid);idx = randsample (n, n);X =壮举(idx:)”;Y = actid (idx);

细节的数据集,输入描述在命令行中。

响应可以是五类:坐着,站着,散步,跑步,或者跳舞。二分响应通过识别主题是否移动(actid> 2)。

Y = Y > 2;

假设当主题是空闲的(收集的数据Y=)质量比主题是移动时的两倍。创建一个属性的权重变量2观察从懒懒的主题,收集和1一个移动的主题。

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

为二进制分类培训线性模型

二进制分类符合线性模型的随机样本数据的一半。

idxtt = randsample((真假),n, true);TTMdl = fitclinear (X (:, idxtt), Y (idxtt),“ObservationsIn”,“列”,“重量”W (idxtt))
TTMdl = ClassificationLinear ResponseName:“Y”类名:[0 1]ScoreTransform:“没有一个”测试:[60 x1双]偏见:-0.1107λ:8.2967 e-05学习者:“支持向量机”属性,方法

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

转换训练模型

传统训练分类模型转换为一个二进制分类线性模型的增量学习。

IncrementalMdl = incrementalLearner (TTMdl)
IncrementalMdl = incrementalClassificationLinear IsWarm: 1指标:[1 x2表]一会:[0 1]ScoreTransform:“没有一个”测试:[60 x1双]偏见:-0.1107学习者:“支持向量机”属性,方法

分别跟踪性能指标和模型

对其余的数据执行增量学习使用updateMetrics适合功能。模拟数据流处理50观测一次。在每一次迭代:

  1. 调用updateMetrics更新和窗口分类累积误差模型的输入块的观察。覆盖前面的增量式模型更新的损失指标财产。注意,函数不符合模型的一部分数据,大部分是“新”的数据模型。指定列的观测是面向,并指定观察权重。

  2. 调用适合适合的模型输入块的观察。覆盖前面的增量式模型更新模型参数。指定列的观测是面向,并指定观察权重。

  3. 存储分类错误,首先估计系数 β 1

%预先配置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);会= W (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”,“列”,“重量”会(idx));ce {j:} = IncrementalMdl.Metrics {“ClassificationError”,:};IncrementalMdl =适合(IncrementalMdl自(:,idx) Yil (idx),“ObservationsIn”,“列”,“重量”会(idx));beta1 (j + 1) = IncrementalMdl.Beta(结束);结束

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

或者,您可以使用updateMetricsAndFit更新模型的性能指标给定一个新的数据块,然后适应模型数据。

画一个跟踪性能指标和估计系数的情节 β 1

t = tiledlayout (2, 1);nexttile h =情节(ce.Variables);xlim ([0 nchunk]) ylabel (分类错误的传奇(h, ce.Properties.VariableNames) nexttile情节(beta1) ylabel (“\ beta_1”)xlim ([0 nchunk])包含(t)“迭代”)

图包含2轴对象。坐标轴对象1 ylabel分类错误包含2线类型的对象。这些对象代表累积,窗口。坐标轴对象2 ylabel \ beta_1包含一个类型的对象。

累计损失稳定和逐渐减少,而跳窗的损失。

β 1 突然发生了变化,然后逐渐平缓适合流程更块。

更多关于

全部展开

提示

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

算法

全部展开

引用

[1]Kempka、MichałWojciech Kotłowski,曼弗雷德·k·Warmuth。“自适应尺度不变的在线学习算法的线性模型”。Preprint, submitted February 10, 2019.https://arxiv.org/abs/1902.07528

[2]兰福德,J。,l。li, and T. Zhang. “Sparse Online Learning Via Truncated Gradient.”j·马赫。学习。Res。10卷,2009年,页777 - 801。

[3]Shalev-Shwartz, S。,Y。年代在ger, and N. Srebro. “Pegasos: Primal Estimated Sub-Gradient Solver for SVM.”《24日国际会议在机器学习,ICML ' 07,2007年,页807 - 814。

[4]徐,魏。“对最优传递规模与平均随机梯度下降学习。”相关系数、abs / 1107.2490, 2011年。

扩展功能

版本历史

介绍了R2020b