incrementalClassificationLinear
二元分类线性增量学习模型
描述
incrementalClassificationLinear
创建一个incrementalClassificationLinear
模型对象,它表示一个用于增量学习的二元分类线性模型。金宝app支持学习者包括支持向量机和逻辑回归。
与其他统计和机器学习工具箱™模型对象不同,incrementalClassificationLinear
可以直接调用。此外,在将模型拟合到数据之前,您可以指定学习选项,例如性能度量配置、参数值和目标求解器。创建一个incrementalClassificationLinear
对象,就是为之准备增量学习.
incrementalClassificationLinear
最适合增量学习。有关训练用于二进制分类的支持向量机或线性模型的传统方法(如通过拟合数据创建模型、执行交叉验证、调优超参数等),请参见fitcsvm
或fitclinear
.关于多类增量学习,请参见incrementalClassificationECOC
而且incrementalClassificationNaiveBayes
.
创建
您可以创建incrementalClassificationLinear
用以下几种方法建模对象:
直接调用函数-配置增量学习选项,或为线性模型参数和超参数指定初始值
incrementalClassificationLinear
直接。当您还没有数据或者您想立即开始增量学习时,这种方法是最好的。转换一个传统训练的模型-使用训练过的模型对象的模型系数和超参数初始化一个二进制分类线性模型进行增量学习,可以将传统训练的模型转换为
incrementalClassificationLinear
对象进行建模,将其传递给incrementalLearner
函数。该表包含到相应参考页面的链接。转换模板对象—可以将模板对象转换为
incrementalClassificationLinear
对象进行建模,将其传递给incrementalLearner
函数。该表包含到相应参考页面的链接。可转换模板对象 转换函数 templateSVM
incrementalLearner
templateLinear
incrementalLearner
调用增量学习函数- - - - - -
适合
,updateMetrics
,updateMetricsAndFit
接受配置好的incrementalClassificationLinear
建模对象和数据作为输入,并返回一个incrementalClassificationLinear
使用从输入模型和数据中学到的信息更新的模型对象。
描述
返回一个用于二进制线性分类的默认增量学习模型对象,Mdl
= incrementalClassificationLinear ()Mdl
.默认模型的属性包含未知模型参数的占位符。您必须训练一个默认模型,然后才能跟踪它的性能或根据它生成预测。
输入参数
指定可选参数对为Name1 = Value1,…,以=家
,在那里的名字
参数名称和价值
对应的值。名-值参数必须出现在其他参数之后,但对的顺序并不重要。
在R2021a之前,名称和值之间用逗号隔开,并括起来的名字
在报价。
例子:“标准化”,真的
利用估计期间估计的预测器均值和标准差对预测器数据进行标准化。
指标
- - - - - -建模性能指标,以便在增量学习期间跟踪
“classiferror”
(默认)|字符串向量|函数处理|细胞向量|结构数组|“binodeviance”
|“指数”
|“枢纽”
|“分对数”
|“二次”
建模要在增量学习期间跟踪的性能指标,指定为内置损失函数名、名称的字符串向量、函数句柄(@metricName
),函数句柄的结构数组,或名称、函数句柄或结构数组的单元格向量。
当Mdl
是温暖的(见IsWarm
),updateMetrics
而且updateMetricsAndFit
中的跟踪性能指标指标
的属性Mdl
.
下表列出了内置损耗函数的名称。可以使用字符串向量指定多个。
的名字 | 描述 |
---|---|
“binodeviance” |
二项异常 |
“classiferror” |
分类错误 |
“指数” |
指数 |
“枢纽” |
铰链 |
“分对数” |
物流 |
“二次” |
二次 |
有关内置丢失函数的详细信息,请参见损失
.
例子:“指标”,(“classiferror”“枢纽”)
要指定返回性能指标的自定义函数,请使用函数句柄表示法。函数必须有这样的形式:
metric = customMetric(C,S)
输出参数
度规
是一个n——- - - - - -1
数值向量,其中每个元素都是在一个学习周期中由增量学习函数处理的数据中相应观察值的损失。指定函数名(
customMetric
).C
是一个n——- - - - - -2
逻辑矩阵,用行表示对应的观察结果所属的类别。中的类顺序对应一会
财产。创建C
通过设置C (
=p
,问
)1
如果观察
在课堂上p
,针对指定数据中的每项观察结果。设置行中的另一个元素问
来p
0
.年代
是一个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_ ,在那里 是度量 在指标 |
的行名@ (C, S) customMetric (C, S)…… 是CustomMetric_1 |
有关性能度量选项的详细信息,请参见性能指标.
数据类型:字符
|字符串
|结构体
|细胞
|function_handle
洗牌
- - - - - -洗牌观察标志
真正的
(默认)|假
标记,用于在每次迭代中洗牌观察,在此表中指定为一个值。
价值 | 描述 |
---|---|
真正的 |
该软件在传入的数据块中打乱观察结果适合 函数符合模型。这个动作减少了抽样方案引起的偏差。 |
假 |
软件按照收到的顺序处理数据。 |
此选项仅在以下情况下有效解算器
是“扇区”
.当解算器
是“sgd”
或“asgd”
在处理数据之前,该软件总是会打乱传入数据块中的观察结果。
例子:“洗牌”,假的
数据类型:逻辑
属性
只有在调用时才可以使用名称-值参数语法来设置大多数属性incrementalClassificationLinear
直接。您可以在调用时设置一些属性incrementalLearner
转换传统训练的模型对象或模型模板对象。不能设置属性FittedLoss
,NumTrainingObservations
,μ
,σ
,SolverOptions
,IsWarm
.
分类模型参数
β
- - - - - -线性模型系数β
数值向量
此属性是只读的。
线性模型系数β,指定为NumPredictors
-by-1数字向量。
增量拟合函数估计β
在培训。默认的初始值β
值取决于你如何创建模型:
如果您将传统训练的模型对象或模板模型对象转换为
Mdl
,初始值由对象的相应属性指定。否则,初始值为
0 (NumPredictors, 1)
.
数据类型:单
|双
偏见
- - - - - -模型的截距β0
数字标量
此属性是只读的。
模型的截距β0,或偏置项,指定为数值标量。
增量拟合函数估计偏见
在培训。默认的初始值偏见
值取决于你如何创建模型:
如果您将传统训练的模型对象或模板模型对象转换为
Mdl
,初始值由对象的相应属性指定。否则,初始值为
0
.
数据类型:单
|双
一会
- - - - - -唯一的类标签
分类数组|字符数组|字符串数组|逻辑向量|数值向量|字符向量的单元格数组
此属性是只读的。
用于训练模型的惟一类标签,指定为类别、字符或字符串数组、逻辑或数字向量或字符向量的单元格数组。一会
响应数据必须具有相同的数据类型。(该软件将字符串数组视为字符向量的单元格数组。)
默认的一会
值取决于你如何创建模型:
如果您将传统训练的模型转换为
Mdl
,一会
由传统训练模型的相应属性指定。否则,增量拟合函数推断
一会
在培训。
数据类型:单
|双
|逻辑
|字符
|字符串
|细胞
|分类
FittedLoss
- - - - - -用损失函数拟合线性模型
“枢纽”
|分对数的
此属性是只读的。
用于拟合线性模型的损失函数,指定为“枢纽”
或分对数的
.
价值 | 算法 | 损失函数 | 学习者 价值 |
---|---|---|---|
“枢纽” |
金宝app支持向量机 | 铰链: | “支持向量机” |
分对数的 |
逻辑回归 | 异常(物流): | “物流” |
学习者
- - - - - -线性分类模型类型
“支持向量机”
|“物流”
此属性是只读的。
线性分类模型类型,指定为“支持向量机”
或“物流”
.incrementalClassificationLinear
存储学习者
值作为字符向量。
在下表中,
β是的向量p系数。
x是一个观察p预测变量。
b是标量偏差。
价值 | 算法 | 损失函数 | FittedLoss 价值 |
---|---|---|---|
“支持向量机” |
金宝app支持向量机 | 铰链: | “枢纽” |
“物流” |
逻辑回归 | 异常(物流): | 分对数的 |
默认的学习者
值取决于你如何创建模型:
如果将传统训练的支持向量机分类模型对象(
ClassificationSVM
或CompactClassificationSVM
)或SVM模型模板对象(由templateSVM
)创造Mdl
,学习者
是“支持向量机”
.如果您将传统训练的线性分类模型对象(
ClassificationLinear
)或线性分类模型模板对象(由templateLinear
)创造Mdl
,学习者
由对象的相应属性指定。否则,默认值为
“支持向量机”
.
数据类型:字符
|字符串
NumPredictors
- - - - - -预测变量数量
非负数值标量
此属性是只读的。
预测变量的数目,指定为非负数值标量。
默认的NumPredictors
值取决于你如何创建模型:
如果您将传统训练的模型转换为
Mdl
,NumPredictors
由传统训练模型的相应属性指定。如果你创建
Mdl
通过调用incrementalClassificationLinear
您可以直接指定NumPredictors
通过使用名称-值参数语法。否则,默认值为
0
,增量拟合函数推断NumPredictors
从训练期间的预测数据。
数据类型:双
NumTrainingObservations
- - - - - -观测数符合增量模型
0
(默认)|非负数值标量
此属性是只读的。
观察数符合增量模型Mdl
,指定为非负数值标量。NumTrainingObservations
当你通过时增加Mdl
训练数据适合
或updateMetricsAndFit
.
请注意
如果您将传统训练的模型转换为Mdl
,incrementalClassificationLinear
是否将符合传统训练模型的观察数相加NumTrainingObservations
.
数据类型:双
之前
- - - - - -先验类概率
“经验”
|“统一”
|数值向量
此属性是只读的。
先验类概率,指定为“经验”
,“统一”
,或者一个数字向量。incrementalClassificationLinear
存储之前
值作为数字向量。
价值 | 描述 |
---|---|
“经验” |
增量学习函数从增量训练期间(估计期后)响应数据中观察到的类相对频率推断先验类概率EstimationPeriod ). |
“统一” |
对于每一类,先验概率都是1/2。 |
数值向量 | 自定义,归一化先验概率。元素的顺序之前 的元素对应一会 财产。 |
默认的之前
值取决于你如何创建模型:
如果您将传统训练的模型转换为
Mdl
,之前
由传统训练模型的相应属性指定。否则,默认值为
“经验”
.
数据类型:单
|双
|字符
|字符串
ScoreTransform
- - - - - -分数变换函数
特征向量|字符串标量|函数处理
此属性是只读的。
分数转换函数,描述增量学习函数如何转换原始响应值,这些值指定为字符向量、字符串标量或函数句柄。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
传统训练模型的性质是一个分数到后验概率的转换函数,由fitPosterior
或fitSVMPosterior
,Mdl。年代c或eTransform
包含匿名函数。否则,默认值为
“没有”
(当学习者
是“支持向量机”
)或分对数的
(当学习者
是“物流”
).
数据类型:字符
|字符串
|function_handle
训练参数
EstimationPeriod
- - - - - -用于估计超参数的观察数
非负整数
此属性是只读的。
在训练或跟踪性能指标之前,由增量模型处理的估计超参数的观察数,指定为非负整数。
请注意
如果
Mdl
为增量学习做好了准备(指定了训练所需的所有超参数),incrementalClassificationLinear
部队EstimationPeriod
来0
.如果
Mdl
没有为增量学习做好准备,incrementalClassificationLinear
集EstimationPeriod
来1000
.
有关更多细节,请参见估计时间.
数据类型:单
|双
FitBias
- - - - - -线性模型截距包含标志
真正的
|假
此属性是只读的。
线性模型截距包含标志,指定为真正的
或假
.
价值 | 描述 |
---|---|
真正的 |
incrementalClassificationLinear 包括偏差项β0在线性模型中,哪些增量拟合函数适合于数据。 |
假 |
incrementalClassificationLinear 集β0= 0。 |
如果偏见
≠0,FitBias
必须真正的
.换句话说,incrementalClassificationLinear
是否支持相等约束金宝appβ0.
默认的FitBias
值取决于你如何创建模型:
如果您将传统训练的线性分类模型对象(
ClassificationLinear
)创造Mdl
,FitBias
由FitBias
的价值ModelParameters
传统训练模型的性质。如果您转换线性模型模板对象(由
templateLinear)
创建Mdl
,FitBias
由对象的相应属性指定。否则,默认值为
真正的
.
数据类型:逻辑
μ
- - - - - -预测方法
数值向量|[]
此属性是只读的。
预测器是指,指定为数字向量。
如果μ
是一个空数组[]
你指定了“标准化”,真的
,增量拟合函数集μ
对预测变量的平均值在指定的估计期间内估计EstimationPeriod
.
您不能指定μ
直接。
数据类型:单
|双
σ
- - - - - -预测标准偏差
数值向量|[]
此属性是只读的。
预测标准偏差,指定为数字向量。
如果σ
是一个空数组[]
你指定了“标准化”,真的
,增量拟合函数集σ
所指定的估计期间内估计的预测变量标准差EstimationPeriod
.
您不能指定σ
直接。
数据类型:单
|双
解算器
- - - - - -目标函数最小化技术
“扇区”
|“sgd”
|“asgd”
此属性是只读的。
目标函数最小化技术,具体为“扇区”
,“sgd”
,或“asgd”
.incrementalClassificationLinear
存储解算器
值作为字符向量。
价值 | 描述 | 笔记 |
---|---|---|
“扇区” |
|
|
“sgd” |
随机梯度下降(SGD)[3][2] |
|
“asgd” |
平均随机梯度下降(ASGD)[4] |
|
默认的解算器
值取决于你如何创建模型:
如果你创建
Mdl
通过调用incrementalClassificationLinear
直接使用时,默认值为“扇区”
.如果您将传统训练的线性分类模型对象(
ClassificationLinear
)或一个线性模型模板对象(由templateLinear
)创造Mdl
,该对象使用脊正则化和SGD或ASGD求解器,Mdl
使用相同的求解器。(您可以查看
解算器
传统训练模型的价值(例如,TTMdl
)TTMdl.ModelParameters.Solver
.对于模型模板对象,您可以查看解算器
值通过在命令窗口或变量编辑器中显示对象。)否则,
解算器
的名称-值参数incrementalLearner
函数设置此属性。参数的默认值是“扇区”
.
数据类型:字符
|字符串
SolverOptions
- - - - - -目标求解器配置
结构数组
此属性是只读的。
目标求解器配置,指定为结构数组。的领域SolverOptions
属性是否特定于指定的求解器解算器
.
数据类型:结构体
SGD和ASGD求解器参数
BatchSize
- - - - - -Mini-batch大小
正整数
此属性是只读的。
小批大小,指定为正整数。在培训的每个学习周期中,incrementalClassificationLinear
使用BatchSize
计算亚梯度的观察结果。
的最后一个小批(每次函数调用的最后一个学习周期)的观察数适合
或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)正则化项强度
负的标量
此属性是只读的。
脊(l2)正则化项强度,指定为非负标量。
默认的λ
值取决于你如何创建模型:
如果你创建
Mdl
通过调用incrementalClassificationLinear
直接使用时,默认值为1 e-5
.如果您将传统训练的线性分类模型对象(
ClassificationLinear
)或一个线性模型模板对象(由templateLinear
)创造Mdl
,该对象使用脊正则化和SGD或ASGD求解器,λ
由对象的相应属性指定。否则,
λ
的名称-值参数incrementalLearner
函数设置此属性。参数的默认值是1 e-5
.
数据类型:双
|单
LearnRate
- - - - - -初始学习率
“汽车”
|积极的标量
此属性是只读的。
初始学习速率,指定为“汽车”
或者一个正的标量。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
函数设置此属性。参数的默认值是“汽车”
.
数据类型:单
|双
|字符
|字符串
LearnRateSchedule
- - - - - -学习率表
“腐烂”
|“不变”
此属性是只读的。
学习率时间表,指定为“腐烂”
或“不变”
,在那里LearnRate
初始学习率ɣ0.incrementalClassificationLinear
存储LearnRateSchedule
值作为字符向量。
价值 | 描述 |
---|---|
“不变” |
学习率为ɣ0适用于所有的学习周期。 |
“腐烂” |
学习周期内的学习率t是
|
默认的LearnRateSchedule
值取决于你如何创建模型:
如果您将传统训练的模型对象或模板模型对象转换为
Mdl
,LearnRateSchedule
的名称-值参数incrementalLearner
函数设置此属性。参数的默认值是“腐烂”
.否则,默认值为
“腐烂”
.
数据类型:字符
|字符串
性能指标及参数
IsWarm
- - - - - -指示模型是否跟踪性能指标的标志
假
或0
|真正的
或1
此属性是只读的。
标志,指示增量模型是否跟踪性能指标,指定为逻辑0
(假
)或1
(真正的
).
增量模型Mdl
是温暖的(IsWarm
就变成了真正的
)后增量拟合函数拟合(EstimationPeriod
+MetricsWarmupPeriod
)对增量模型的观测值。
价值 | 描述 |
---|---|
真正的 或1 |
增量模型Mdl 是温暖的。因此,updateMetrics 而且updateMetricsAndFit 中的跟踪性能指标指标 的属性Mdl . |
假 或0 |
updateMetrics 而且updateMetricsAndFit 不要跟踪性能指标。 |
数据类型:逻辑
指标
- - - - - -建模性能度量
表格
此属性是只读的。
在增量学习期间更新的模型性能度量updateMetrics
而且updateMetricsAndFit
,指定为一个包含两列和的表米行,米指标的数量是否由指标
名称-值参数。
的列指标
标记累积
而且窗口
.
累积
:元素j
模型性能是否如度量标准所衡量j
,从模型变暖开始(IsWarm
是1
).窗口
:元素j
模型性能是否如度量标准所衡量j
控件指定的窗口内的所有观察值MetricsWindowSize
财产。软件更新窗口
处理完之后MetricsWindowSize
观察。
行按指定的指标进行标记。详细信息请参见指标
的名值参数incrementalLearner
或incrementalClassificationLinear
.
数据类型:表格
MetricsWarmupPeriod
- - - - - -在跟踪性能指标之前,观察的数量符合要求
非负整数
此属性是只读的。
在跟踪其性能指标之前,增量模型必须适合的观察数指标
属性,指定为非负整数。
默认的MetricsWarmupPeriod
值取决于你如何创建模型:
如果您将传统训练的模型转换为
Mdl
,MetricsWarmupPeriod
的名称-值参数incrementalLearner
函数设置此属性。参数的默认值是0
.否则,默认值为
1000
.
有关更多细节,请参见性能指标.
数据类型:单
|双
MetricsWindowSize
- - - - - -用于计算窗口性能指标的观察数
正整数
此属性是只读的。
用于计算窗口性能度量的观察数,指定为正整数。
默认的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个观察结果。
用一个新模型覆盖先前的增量模型,以适应传入的观察结果。
商店 、累积度量和窗口度量,以查看它们在增量学习中如何发展。
%预先配置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
检查模型在传入观测数据上的性能,然后将模型与这些观测数据拟合。
看看绩效指标和 在训练过程中进化,将它们绘制在单独的贴图上。
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)“迭代”)
情节表明updateMetricsAndFit
做以下工作:
适合 在所有增量学习迭代过程中。
只在指标预热期之后计算性能指标。
计算每次迭代期间的累积度量。
在处理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批处理大小不同。
用一个新模型覆盖先前的增量模型,以适应传入的观察结果。
存储估计系数 、累积度量和窗口度量,以查看它们在增量学习中如何发展。
%预先配置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
检查模型在传入观测数据上的性能,然后将模型与这些观测数据拟合。
看看绩效指标和 在训练过程中进化,将它们绘制在单独的贴图上。
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)“迭代”)
情节表明updateMetricsAndFit
做以下工作:
适合 在所有增量学习迭代过程中。
只在指标预热期之后计算性能指标。
计算每次迭代期间的累积度量。
在处理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个观察数据来模拟数据流。在每次迭代中:
调用
updateMetrics
更新模型的累积分类误差和窗口分类误差。覆盖前面的增量模型以更新中的损失指标
财产。注意,该函数并没有使模型适合数据块—数据块是模型的“新”数据。指定观察值以列为方向,并指定观察值的权重。调用
适合
使模型与传入的观察数据块相匹配。覆盖前面的增量模型以更新模型参数。指定观察值以列为方向,并指定观察值的权重。存储分类误差和第一次估计系数 .
%预先配置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
更新给定新数据块的模型的性能度量,然后使模型与数据相匹配。
绘制性能指标和估计系数的轨迹图 .
T = tiledlayout(2,1);nexttile h = plot(ce.Variables);Xlim ([0 nchunk]) ylabel(分类错误的)图例(h,ce.Properties.VariableNames)“\ beta_1”) xlim([0 nchunk]) xlabel(t,“迭代”)
累积损耗是稳定的,并逐渐减小,而窗口损耗是跳变的。
起初变化突然,然后逐渐稳定下来适合
处理更多的块。
更多关于
增量学习
增量学习,或在线学习,是机器学习的一个分支,涉及处理来自数据流的传入数据,可能对预测变量的分布、预测或目标函数的各个方面(包括调优参数值)或观察结果是否有标记几乎没有了解。增量学习与传统机器学习不同,传统机器学习有足够的标记数据来适合模型,执行交叉验证来优化超参数,并推断预测器分布。
给定传入的观察结果,增量学习模型以以下任何一种方式处理数据,但通常按以下顺序:
预测标签。
测量预测性能。
检查模型中的结构断裂或漂移。
将模型与传入的观测值拟合。
有关更多细节,请参见增量学习概述.
增量学习的自适应尺度不变求解器
的增量学习的自适应尺度不变求解器,于[1],是一种基于梯度下降的目标求解器,用于训练线性预测模型。该求解器是无超参数的,对预测变量尺度的差异不敏感,并且不需要预测变量分布的先验知识。这些特点使它非常适合增量学习。
标准SGD和ASGD求解器对预测变量之间的不同尺度非常敏感,导致模型可能表现不佳。为了使用SGD和ASGD获得更好的精度,可以对预测器数据进行标准化,并调整正则化和学习率参数。对于传统的机器学习,有足够的数据可以通过交叉验证和预测器标准化实现超参数调优。然而,对于增量学习,可能没有足够的数据可用(例如,观察结果可能每次只提供一个),而且预测器的分布可能是未知的。这些特性使得在增量学习过程中很难或不可能进行参数调优和预测器标准化。
增量拟合功能用于分类适合
而且updateMetricsAndFit
使用更激进的ScInOL2版本的算法。
提示
在创建模型之后,您可以生成C/ c++代码,在数据流上执行增量学习。生成C/ c++代码需要MATLAB编码器™.详情请参见代码生成简介.
算法
估计时间
在估计期间,增量拟合函数适合
而且updateMetricsAndFit
使用第一个输入EstimationPeriod
通过观察来估计(调优)增量训练所需的超参数。估计只在以下情况发生EstimationPeriod
是正的。该表描述了超参数以及估计或调优它们的时间。
Hyperparameter | 模型属性 | 使用 | 条件 |
---|---|---|---|
预测均值和标准差 |
|
标准化预测器数据 | 当这两个条件都适用时,超参数将被估计:
|
学习速率 | LearnRate |
调整求解步长 | 当这两个条件都适用时,超参数将被估计:
|
在评估期内,适合
不符合模型,而且updateMetricsAndFit
不适合模型或不更新性能度量。在估计期结束时,函数更新存储超参数的属性。
标准化数据
如果将增量学习函数配置为标准化预测器变量,则使用存储在μ
而且σ
增量学习模型的属性Mdl
.
当你设置
“标准化”,真的
和一个积极的估计期(见EstimationPeriod
),Mdl。μ
而且Mdl。年代igma
为空,增量拟合函数使用估计周期观测值估计均值和标准差。当你设置
“标准化”、“汽车”
(默认值)时,适用以下条件:如果你创建
incrementalClassificationLinear
将传统训练的二元线性支持向量机模型(ClassificationSVM
或CompactClassificationSVM
)及μ
而且σ
传统训练模型的属性是空数组[]
,增量学习函数不标准化预测变量。如果μ
而且σ
传统训练的模型具有非空性质,增量学习函数使用指定的均值和标准差对预测变量进行标准化。增量拟合函数不估计新的均值和标准差,无论估计周期的长短。如果你创建
incrementalClassificationLinear
将线性分类模型(ClassificationLinear
),增量学习函数不标准化数据,不管估计周期的长度。如果不转换传统训练的模型,增量学习函数仅在指定SGD求解器(参见
解算器
)和一个积极的估计期(见EstimationPeriod
).
当增量拟合函数估计预测均值和标准差时,该函数使用估计周期观测值计算加权均值和加权标准差。具体来说,函数标准化了预测器j(xj)使用
xj是预测j,xjk是观察k的预测j在估计期间。
pk类的先验概率是多少k(
之前
属性)。wj是观察权重j.
性能指标
的
updateMetrics
而且updateMetricsAndFit
函数跟踪模型性能度量(“指标”
)从新数据中获取温暖的(IsWarm属性)。增量模型在之后变得温暖适合
或updateMetricsAndFit
拟合增量模型MetricsWarmupPeriod观察,也就是指标预热期.如果EstimationPeriod> 0,函数在模型拟合数据之前估计超参数。因此,函数必须处理附加的
EstimationPeriod
模型开始度量预热期之前的观察。的
指标
属性将每个性能指标的两种形式存储为表的变量(列),累积
而且窗口
,将单个指标按行排列。当增量模型是温暖的,updateMetrics
而且updateMetricsAndFit
按以下频率更新指标:累积
-函数计算自模型性能跟踪开始以来的累积度量。每次调用函数并基于整个提供的数据集进行计算时,函数都会更新度量。窗口
-函数根据窗口内的所有观察结果计算指标MetricsWindowSize名称-值对参数。MetricsWindowSize
还决定软件更新的频率窗口
指标。例如,如果MetricsWindowSize
为20,函数根据所提供数据中的最后20个观察值计算度量值(X((end - 20 + 1):end,:)
而且Y((end - 20 + 1):end)
).跟踪窗口内性能指标的增量函数使用以下过程:
存储一个长度的缓冲区
MetricsWindowSize
对于每个指定的度量,并存储一个观察权重的缓冲区。根据批量传入的观察数据,用模型性能填充度量缓冲区的元素,并在权重缓冲区中存储相应的观察权重。
当缓冲区被填满时,重写
Mdl.Metrics.Window
使用指标窗口中的加权平均性能。如果在函数处理一批观察时缓冲区被填满,则最新传入的MetricsWindowSize
观测数据进入缓冲区,最早的观测数据从缓冲区中删除。例如,假设MetricsWindowSize
为20时,指标缓冲区有10个值来自先前处理的批处理,15个值是传入的。为了组成长度为20的窗口,函数使用来自15个传入观察的测量值和来自前一批的最新5个测量值。
这个软件用一个
南
在计算累积
而且窗口
性能度量值。
参考文献
[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。
扩展功能
C/ c++代码生成
使用MATLAB®Coder™生成C和c++代码。
版本历史
在R2020b中引入
MATLAB命令
你点击了一个对应于这个MATLAB命令的链接:
在MATLAB命令窗口中输入命令来运行该命令。Web浏览器不支持MATLAB命令。金宝app
您也可以从以下列表中选择网站:
如何获得最佳的网站性能
选择中国网站(中文或英文)以获得最佳的网站表现。其他MathWorks国家网站没有针对从您的位置访问进行优化。