主要内容

updateMetricsAndFit

更新性能指标在线性增量学习模型给定的新数据和训练模式

描述

给定的流数据,updateMetricsAndFit第一次评估的性能配置增量学习模型为线性回归(incrementalRegressionLinear(对象)或线性二元分类incrementalClassificationLinear对象)通过调用updateMetrics在输入数据。然后updateMetricsAndFit适合的模型,通过调用数据适合。换句话说,updateMetricsAndFit执行prequential评价因为它对待每个传入的数据作为测试集,并跟踪性能指标测量累计,在指定的窗口[1]

updateMetricsAndFit提供了一个简单的方法来更新模型性能指标和训练模型在每个块的数据。或者,您可以分别通过调用执行的操作updateMetrics然后适合允许更大的灵活性(例如,您可以决定你是否需要训练一块的模型根据其性能数据)。

例子

Mdl= updateMetricsAndFit (Mdl,X,Y)返回一个增量学习模型Mdl,这是输入增量学习模型Mdl以下修改:

  1. updateMetricsAndFit测量模型性能的预测和响应数据,XY分别。当输入模型温暖的(Mdl.IsWarm真正的),updateMetricsAndFit覆盖之前的计算指标,存储在指标财产,用新的价值观。否则,updateMetricsAndFit商店指标代替。

  2. updateMetricsAndFit符合修改后的模型输入数据遵循这个过程:

    1. 初始化配置和线性模型的解算器输入模型的系数和偏差估计Mdl

    2. 适合的模型数据,并将更新后的系数估计和配置存储在输出模型Mdl

输入和输出模型具有相同的数据类型。

例子

Mdl= updateMetricsAndFit (Mdl,X,Y,名称,值)使用附加选项指定一个或多个参数名称-值对。例如,您可以指定预测数据矩阵的列对应于观测,并设置观察权重。

例子

全部折叠

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

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的观察。

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

  • 商店 β 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);结束

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

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

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

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

情节表明updateMetricsAndFit以下:

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

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

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

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

火车通过使用线性回归模型fitrlinear,将它转换成一个增量学习,跟踪其性能,并适合流媒体数据。从传统的增量学习延续培训的选项。

加载和数据预处理

负载2015纽约住房数据集和随机数据。详细数据,请参阅纽约市公开的数据

负载NYCHousing2015rng (1)%的再现性n =大小(NYCHousing2015, 1);idxshuff = randsample (n, n);NYCHousing2015 = NYCHousing2015 (idxshuff:);

假设从曼哈顿(收集的数据=1)收集使用双打其质量的新方法。创建一个属性2的重量变量观测收集来自曼哈顿,和1到所有其他的观察。

n =大小(NYCHousing2015, 1);NYCHousing2015。W=(n,1)+ (NYCHousing2015.BOROUGH == 1);

提取反应变量SALEPRICE从表中。数值稳定、规模SALEPRICE通过1 e6

Y = NYCHousing2015.SALEPRICE / 1 e6;NYCHousing2015。SALEPRICE = [];

创建虚拟变量分类预测矩阵。

catvars = [“区”“BUILDINGCLASSCATEGORY”“社区”];dumvarstbl = varfun (@ (x) dummyvar(分类(x)), NYCHousing2015,“数据源”,catvars);dumvarmat = table2array (dumvarstbl);NYCHousing2015 (:, catvars) = [];

对所有其他表中的数值变量的线性预测销售价格。连接矩阵的虚变量的预测数据。转置矩阵生成的预测。

idxnum = varfun (@isnumeric NYCHousing2015,“OutputFormat”,“统一”);X = [dumvarmat NYCHousing2015 {:, idxnum}] ';

火车线性回归模型

适合一个线性回归模型的随机样本数据的一半。

idxtt = randsample((真假),n, true);TTMdl = fitrlinear (X (:, idxtt), Y (idxtt),“ObservationsIn”,“列”,“重量”NYCHousing2015.W (idxtt))
TTMdl = RegressionLinear ResponseName:‘Y’ResponseTransform:“没有一个”测试:[313 x1双]偏见:0.1116λ:2.1977 e-05学习者:“支持向量机”属性,方法

TTMdl是一个RegressionLinear模型对象代表了一个传统上训练有素的线性回归模型。

转换训练模型

传统训练的线性回归模型转换为一个线性回归模型的增量学习。

IncrementalMdl = incrementalLearner (TTMdl)
IncrementalMdl = incrementalRegressionLinear IsWarm: 1指标:[1 x2表]ResponseTransform:“没有一个”测试:[313 x1双]偏见:0.1116学习者:“支持向量机”属性,方法

跟踪性能指标和模型

对其余的数据执行增量学习使用updateMetricsAndFit函数。在每一次迭代:

  1. 模拟数据流处理一块500年的观察。

  2. 调用updateMetricsAndFit更新模型的累积和窗口ε不敏感损失由于传入的观察,然后适应模型数据。覆盖前面的增量式模型与一个新的。指定列的观测是面向,并指定观察权重。

  3. 商店的损失和最后估计系数 β 313年

%预先配置idxil = ~ idxtt;nil =总和(idxil);numObsPerChunk = 500;nchunk =地板(nil / numObsPerChunk);(nchunk ei = array2table (0, 2),“VariableNames”,(“累积”“窗口”]);beta313 = [IncrementalMdl.Beta(结束);0 (nchunk 1)];自= X (:, idxil);Yil = Y (idxil);会= NYCHousing2015.W (idxil);%增量式拟合j = 1: nchunk ibegin = min (nil, numObsPerChunk * (j - 1) + 1);iend = min (nil, numObsPerChunk * j);idx = ibegin: iend;IncrementalMdl = updateMetricsAndFit (IncrementalMdl自(:,idx) Yil (idx),“ObservationsIn”,“列”,“重量”会(idx));ei {j:} = IncrementalMdl.Metrics {“EpsilonInsensitiveLoss”,:};beta313 (j + 1) = IncrementalMdl.Beta(结束);结束

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

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

t = tiledlayout (2, 1);nexttile h =情节(ei.Variables);xlim ([0 nchunk]) ylabel (“ε不敏感损失”传奇(h, ei.Properties.VariableNames) nexttile情节(beta313) ylabel (“\ beta_”{313})xlim ([0 nchunk])包含(t)“迭代”)

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

每次迭代的累计损失逐渐变化(500块观测),而跳窗的损失。因为指标窗口默认是200,updateMetricsAndFit措施的性能基于最新的200年每500观察观察块。

β 313年 变化,但水平迅速,适合过程的观察。

输入参数

全部折叠

增量学习模型的性能测量和模型适合数据,指定为一个incrementalClassificationLinearincrementalRegressionLinear模型对象。您可以创建Mdl直接或通过转换支持,传统上使用训练有素的机器学习模型金宝appincrementalLearner函数。更多细节,请参阅相应的引用页面。

如果Mdl.IsWarm,updateMetricsAndFit没有跟踪的性能模型。更多细节,请参阅性能指标

模型的预测数据来衡量性能以适应模型,指定为一个浮点矩阵n观察和Mdl.NumPredictors预测变量。的值ObservationsIn名称-值参数确定变量和观测的方向。默认的ObservationsIn值是“行”,这表明观察预测数据是面向的行X

观察标签的长度Y和观察的数量X必须是相等的;Y (j)观察的标签吗j(行或列)X

请注意

  • 如果Mdl.NumPredictors= 0,updateMetricsAndFit推断预测的数量X,并设置相应的属性的输出模型。否则,如果流数据中预测变量的数量变化Mdl.NumPredictors,updateMetricsAndFit一个错误的问题。

  • updateMetricsAndFit金宝app只支持浮点输入预测数据。如果你的输入数据包括分类数据,您必须准备一个编码版本的分类数据。使用dummyvar每个分类变量转换为一个数字矩阵的虚变量。然后,连接所有哑变量矩阵和任何其他数值预测。更多细节,请参阅虚拟变量

数据类型:|

块的反应(或标签)来测量模型的性能,然后适应模型,指定分类,字符,或字符串数组,逻辑或浮点向量,或单元阵列的特征向量分类问题;或一个浮点向量回归问题。

观察标签的长度Y和观察的数量X必须是相等的;Y (j)观察的标签吗j(行或列)X

对于分类问题:

  • updateMetricsAndFit金宝app只支持二进制分类。

  • 一会输入模型的属性Mdl非空的,适用下列条件:

    • 如果Y包含一个标签,它不是一个成员Mdl.ClassNames,updateMetricsAndFit一个错误的问题。

    • 的数据类型YMdl.ClassNames必须相同。

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

请注意

  • 如果一个观察(预测或标签)或重量包含至少一个失踪()的值,updateMetricsAndFit忽略了观察。因此,updateMetricsAndFit使用不到n观察计算模型性能和创建一个更新模型,n观察的数量吗X

  • 块的大小n随机梯度下降法(SGD) hyperparameter mini-batch大小(Mdl.BatchSize)可以不同的值n不需要一个精确的mini-batch大小的倍数。如果n<Mdl.BatchSize,updateMetricsAndFit使用n观察应用SGD时可用。如果n>Mdl.BatchSize,函数更新模型的mini-batch多次指定的大小,然后使用其余的观察过去mini-batch。观察的数量在过去mini-batch可以小于Mdl.BatchSize

名称-值参数

指定可选的双参数作为Name1 = Value1,…,以=家,在那里的名字参数名称和吗价值相应的价值。名称-值参数必须出现在其他参数,但对的顺序无关紧要。

R2021a之前,用逗号来分隔每一个名称和值,并附上的名字在报价。

例子:“ObservationsIn”、“列”、“重量”,W指定的列预测矩阵对应于观测,和向量W在增量学习包含观察权重应用。

预测数据观察维度,指定为逗号分隔组成的“ObservationsIn”“列”“行”

数据类型:字符|字符串

块的观察重量、指定为逗号分隔组成的“重量”和一个浮点矢量的积极的价值观。updateMetricsAndFit重的观察X与相应的值权重。的大小权重必须等于n,这是观察的数量X

默认情况下,权重(n,1)

更多细节,包括标准化方案,请参阅观察权重

数据类型:|

输出参数

全部折叠

增量学习模型更新,作为增量学习模型对象返回相同的数据类型作为输入模型Mdl,要么incrementalClassificationLinearincrementalRegressionLinear

当你打电话updateMetricsAndFit下列条件适用:

  • 如果模型没有温暖,updateMetricsAndFit不计算性能指标。结果,指标的属性Mdl是完全由值。更多细节,请参阅性能指标

  • 如果Mdl.EstimationPeriod> 0,updateMetricsAndFit估计hyperparameters使用第一Mdl.EstimationPeriod传递给它的观察;函数不训练使用数据输入模型。然而,如果传入的一部分n观察是大于或等于估计时期观察剩余的数量,updateMetricsAndFit估计hyperparameters使用第一n- - - - - -观察,和其余符合输入模型观察。因此,软件更新β偏见属性、hyperparameter属性和记录属性等NumTrainingObservations

对于分类问题,如果一会输入模型的属性Mdl是一个空数组,updateMetricsAndFit设置一会输出模型的属性Mdl独特的(Y)

算法

全部折叠

性能指标

  • updateMetricsAndFit跟踪模型性能指标,表的行指定的标签Mdl.Metrics当增量式模型,从新的数据温暖的(IsWarm属性是真正的)。增量模型是温暖的增量拟合后,updateMetricsAndFit,适合增量式模型Mdl.MetricsWarmupPeriod观察,这是度量预热期

    如果Mdl.EstimationPeriod> 0,updateMetricsAndFit估计hyperparameters之前拟合模型的数据。因此,必须处理一个额外的功能EstimationPeriod观察模型开始前预热期的指标。

  • 指标增量模型的属性存储两种形式的各性能指标作为一个表的变量(列),累积窗口行,个别指标。当增量模型是温暖的,updateMetricsAndFit在以下的频率更新指标:

    • 累积——函数计算累积度量模型以来的跟踪性能。功能更新指标每次调用这个函数和基地提供的计算对整个数据集。

    • 窗口——函数计算指标基于观测由在一个窗口Mdl.MetricsWindowSize财产。Mdl.MetricsWindowSize也决定了软件更新的频率窗口指标。例如,如果Mdl.MetricsWindowSize是20,函数计算指标根据过去的20的观察提供的数据(X((结束- 20 + 1):,:)Y((- 20 + 1)结束:结束))。

      增量跟踪性能指标的函数在一个窗口中使用以下过程:

      1. 存储一个缓冲区的长度Mdl.MetricsWindowSize为每个指定的度量,并存储一个缓冲区的观察权重。

      2. 填充的元素指标基于批次缓冲与模型性能的观察,并存储相应的权重观察权重缓冲区。

      3. 当缓冲区满,覆盖Mdl.Metrics.Window窗口的加权平均性能指标。如果缓冲区溢出时,函数过程一批观察,最新的传入Mdl.MetricsWindowSize观察输入缓冲区,和最早的观察从缓冲区中删除。例如,假设Mdl.MetricsWindowSize是20,缓冲区的指标有10个值从一个以前批处理,和15值传入的。组成20窗口长度,函数使用的测量15传入的观察和最新5测量前一批。

  • 省略了一个观察的软件预测(得分为分类和响应回归)计算累积窗口性能度量值。

观察权重

对于分类问题,如果之前类概率分布是已知的(换句话说,先验分布不是经验),updateMetricsAndFit规范化观察权重总和之前类概率在各自的类。这个动作意味着观察权重前各自的默认类概率。

回归问题或者类概率分布是经验之前,软件可实现指定观察权重之和为1每次调用updateMetricsAndFit

引用

[1]Bifet,阿尔伯特·里卡德Gavalda,杰弗里·霍姆斯和Bernhard Pfahringer。机器学习的数据流在农业部实例。剑桥,麻州:麻省理工学院出版社,2007年。

扩展功能

版本历史

介绍了R2020b