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