主要内容

updateMetricsAndFit

在给定新数据和训练模型的情况下,更新朴素贝叶斯分类模型的增量学习性能指标

描述

给定流数据,updateMetricsAndFit首先评估用于增量学习的配置朴素贝叶斯分类模型的性能(incrementalClassificationNaiveBayes对象)updateMetrics输入数据。然后updateMetricsAndFit将模型与数据匹配,调用适合。换句话说,updateMetricsAndFit执行prequential评价因为它将每个传入数据块视为测试集,并跟踪在指定窗口内累积测量的性能指标[1]

updateMetricsAndFit提供一种简单的方法来更新模型性能指标,并在每个数据块上训练模型。或者,您也可以通过调用updateMetrics然后适合,这样可以提供更大的灵活性(例如,您可以决定是否需要根据模型在数据块上的性能来训练模型)。

例子

Mdl= updateMetricsAndFit (MdlXY返回用于增量学习的朴素贝叶斯分类模型Mdl,这是用于增量学习的输入朴素贝叶斯分类模型Mdl修改如下:

  1. updateMetricsAndFit测量模型在传入预测器和响应数据上的性能;XY分别。当输入模型为温暖的Mdl。我年代Warm真正的),updateMetricsAndFit中存储的先前计算的指标指标属性,并使用新值。否则,updateMetricsAndFit商店指标代替。

  2. updateMetricsAndFit通过更新给定类别的每个预测变量的条件后验均值和标准差,将修改后的模型拟合到输入数据中,并在输出模型中存储新的估计以及其他配置Mdl

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

例子

Mdl= updateMetricsAndFit (MdlXY“重量”,权重指定观测值权重权重

例子

全部折叠

为增量学习创建朴素贝叶斯分类模型incrementalClassificationNaiveBayes并在数据中指定最多5个期望的类。

Mdl = incrementalClassificationNaiveBayes()“MaxNumClasses”5)
Mdl = incrementalClassificationNaiveBayes IsWarm: 0 Metrics: [1×2 table] ClassNames: [1×0 double] ScoreTransform: 'none' DistributionNames: 'normal' DistributionParameters:{}属性,方法

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

Mdl必须适合数据,然后才能使用它执行任何其他操作。

加载人员活动数据集。随机洗牌数据。

负载humanactivityN = numel(actid);rng (1);%为了重现性Idx = randsample(n,n);X = feat(idx,:);Y = actid(idx);

有关数据集的详细信息,请输入描述在命令行。

通过在每次迭代中执行以下操作来实现增量学习:

  • 通过处理50个观察数据块来模拟数据流。

  • 用一个新的拟合进入观测值的增量模型覆盖先前的增量模型。

  • 将第一个预测器的条件均值存储在第一个类中 μ 11 ,累积度量,以及窗口度量,以查看它们在增量学习期间是如何演变的。

%预先配置numObsPerChunk = 50;nchunk = floor(n/numObsPerChunk);MC = array2table(0 (nchunk,2),“VariableNames”,[“累积”“窗口”]);Mu11 = 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));mc{j,:} = Mdl。指标{“MinimalCost”,:};mu11(j + 1) = Mdl.DistributionParameters{1,1}(1);结束

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

以了解性能指标和 μ 11 在训练中进化,把它们画在单独的子图上。

图;Subplot (2,1,1) plot(mu11) ylabel(“\ beta_1”) xlim([0 nchunk]);subplot(2,1,2) h = plot(mc.Variables);xlim ([0 nchunk]);ylabel (“最小成本”)参照线(Mdl。指标WarmupPeriod/numObsPerChunk,r -。);传奇(h, mc.Properties.VariableNames)包含(“迭代”

情节表明updateMetricsAndFit做以下事情:

  • 适合 μ 11 在所有增量学习迭代中。

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

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

  • 在处理500个观察值后计算窗口度量。

训练朴素贝叶斯分类模型fitcnb,将其转换为增量学习器,跟踪其在流数据上的表现,并在一次调用中使其适应数据。指定观测值权重。

加载和预处理数据

加载人员活动数据集。随机洗牌数据。

负载humanactivityrng (1);%为了重现性N = numel(actid);Idx = randsample(n,n);X = feat(idx,:);Y = actid(idx);

有关数据集的详细信息,请输入描述在命令行。

假设受试者不移动时收集的数据(Y<= 2)的质量是主体运动时的两倍。创建一个权重变量,将从静止对象收集的观察值属性为2,将从移动对象收集的观察值属性为1。

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

训练朴素贝叶斯分类模型

拟合一个朴素贝叶斯分类模型的随机样本的一半的数据。

Idxtt = randsample([true false],n,true);TTMdl = fitcnb(X(idxtt,:),Y(idxtt),“重量”W (idxtt))
TTMdl = ClassificationNaiveBayes ResponseName: 'Y' CategoricalPredictors: [] ClassNames: [1 2 3 4 5] ScoreTransform: 'none' NumObservations: 12053 DistributionNames: {1×60 cell} DistributionParameters: {5×60 cell}属性,方法

TTMdl是一个ClassificationNaiveBayes模型对象表示传统训练的朴素贝叶斯分类模型。

转换训练模型

将传统训练的模型转换为朴素贝叶斯分类进行增量学习。指定跟踪增量学习过程中的误分类错误率。

增量学习器(增量学习器)“指标”“classiferror”
IncrementalMdl = incrementalClassificationNaiveBayes IsWarm: 1 Metrics: [2×2 table] ClassNames: [1 2 3 4 5] ScoreTransform: 'none' DistributionNames: {1×60 cell} DistributionParameters: {5×60 cell}属性,方法

IncrementalMdl是一个incrementalClassificationNaiveBayes模型。中指定了类名Mdl。一会,在增量学习过程中遇到的标签必须在Mdl。一会

单独跟踪性能指标和适合模型

对其余数据执行增量学习updateMetricsAndfit函数。在每次迭代中:

  1. 通过一次处理50个观测值来模拟数据流。

  2. 调用updateMetricsAndFit在给定观测数据块的情况下,更新模型的累积和窗口性能指标,然后将模型拟合到数据中。的增量模型中更新的损失指标财产。指定观测值权重。

  3. 存储误分类错误率。

%预先配置idxtt = ~idxtt;Nil = sum(idxil);numObsPerChunk = 50;nchunk = floor(nil/numObsPerChunk);MC = array2table(0 (nchunk,2),“VariableNames”,[“累积”“窗口”]);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;IncrementalMdl = updateMetricsAndFit(IncrementalMdl,Xil(idx,:),Yil(idx),“重量”会(idx));mc{j,:} = IncrementalMdl。指标{“ClassificationError”,:};结束

IncrementalMdl是一个incrementalClassificationNaiveBayes在流中的所有数据上训练的模型对象。

绘制误分类错误率的跟踪图。

h = plot(mc.Variables);xlim ([0 nchunk]);ylabel (分类错误的) legend(h,mc.Properties.VariableNames) xlabel(“迭代”

累积损失开始跳跃,但稳定在0.05左右,而窗口损失跳跃。

输入参数

全部折叠

用于增量学习的朴素贝叶斯分类模型,其性能被测量,然后模型拟合数据,指定为incrementalClassificationNaiveBayes模型对象。你可以创建Mdl直接或通过转换一个支持的、传统训练的机器学习模型金宝appincrementalLearner函数。详细信息请参见相应的参考页面。

如果Mdl。我年代WarmupdateMetricsAndFit不跟踪模型的性能。有关详细信息,请参见性能指标

用于度量模型性能并用于拟合模型的预测数据块,指定为一个n——- - - - - -Mdl。NumPredictors浮点矩阵。

观察标签的长度Y以及观察到的次数X必须相等;Y (j是观察的标签吗j(行或列)在X

请注意

如果Mdl。NumPredictors= 0,updateMetricsAndFit从中推断预测因子的数量X,并设置输出模型的同余属性。否则,如果流数据中的预测变量的数量从Mdl。NumPredictorsupdateMetricsAndFit发出错误。

数据类型:|

用于度量模型性能并对其进行拟合的标签块,指定为分类、字符或字符串数组、逻辑或浮点向量,或字符向量的单元数组。

观察标签的长度Y以及观察到的次数X必须相等;Y (j是观察的标签吗j(行或列)在XupdateMetricsAndFit当至少满足其中一个条件时发出错误:

  • Y包含新遇到的标签和先前已达到的最大类数(请参阅MaxNumClasses一会参数的incrementalClassificationNaiveBayes)。

  • 的数据类型YMdl。一会是不同的。

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

观察权重块,指定为正值的浮点向量。updateMetricsAndFit权衡观察结果X中对应的值权重。的大小权重必须等于n,即中观测值的个数X

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

有关更多详细信息,包括规范化方案,请参见观察权重

数据类型:|

请注意

如果观察(预测或标签)或权重重量包含至少一个缺失的()的值,updateMetricsAndFit忽略观察结果。因此,updateMetricsAndFit使用少于n观测值来计算模型的性能。

输出参数

全部折叠

更新用于增量学习的朴素贝叶斯分类模型,作为与输入模型相同数据类型的增量学习模型对象返回MdlincrementalClassificationNaiveBayes

如果模型不温,updateMetricsAndFit不计算性能指标。结果,指标的属性Mdl完全由值。如果模型是暖的,updateMetricsAndFit计算新数据的累积和窗口性能指标XY,并覆盖的相应元素Mdl。指标。输入模型的所有其他属性Mdl转到输出模型Mdl。有关详细信息,请参见性能指标

除了更新分布模型参数,updateMetricsAndFit时执行以下操作Y包含预期但未处理的类:

  • 方法指定所有期望的类一会创建输入模型时的名称-值参数Mdl使用incrementalClassificationNaiveBayesupdateMetricsAndFit

    1. 中追加任何新遇到的标签Y在…的尾部Mdl。一会

    2. 扩展Mdl。成本到一个c——- - - - - -c矩阵,c班级的数量是多少Mdl。一会。错误分类的代价矩阵是平衡的。

    3. 扩展Mdl。Prior一定程度上c一个更新的经验类分布向量。

  • 如果您在创建输入模型时指定了所有期望的类Mdl或将传统训练的朴素贝叶斯模型转换为incrementalLearner,但您没有指定错误分类成本矩阵(Mdl。成本),updateMetricsAndFit将处理过的类的错误分类代价设置为1和未处理的类。例如,如果updateMetricsAndFit处理可能的三个类中的前两个类,Mdl。成本[0 1 NaN;10 NaN;[10]

更多关于

全部折叠

Bag-of-Tokens模型

在令牌袋模型中,预测器的值jtoken的出现次数是否为非负数j在观察中。多项模型中的类别(箱)的数量是不同标记的数量(预测器的数量)。

算法

全部折叠

正态分布估计量

If预测变量j具有条件正态分布(参见DistributionNames属性),软件通过计算特定类别的加权平均值和加权标准差的偏倚(最大似然)估计来拟合数据的分布。对于每个班级k

  • 预测因子的加权平均值j

    x ¯ j | k { y k } w x j { y k } w

    在哪里w重量是用来观察的吗。该软件对一个类中的权重进行规范化,使它们之和等于该类的先验概率。

  • 加权标准差的无偏估计量j

    年代 j | k { y k } w x j x ¯ j | k 2 { y k } w 1 / 2

多项式分布的估计概率

如果所有预测变量构成条件多项分布(参见DistributionNames属性),则该软件适合使用Bag-of-Tokens模型。软件存储令牌的概率j出现在课堂上k在财产中DistributionParameters {kj}。加性平滑[2],则估计概率为

P 令牌 j | k 1 + c j | k P + c k

地点:

  • c j | k n k { y k } x j w { y k } w 哪个是token出现的加权次数j在课堂上k

  • nk课堂上观察的次数是多少k

  • w 重量是用来观察的吗。该软件将类中的权重归一化,使它们之和等于该类的先验概率。

  • c k j 1 P c j | k 所有标记在类中出现的总加权次数是多少k

多元多项式分布的估计概率

If预测变量j具有条件多元多项分布(参见DistributionNames属性),软件遵循以下程序:

  1. 该软件收集唯一级别的列表,将排序列表存储在CategoricalLevels,并将每一层视为一个箱子。预测器和类的每一个组合都是一个独立的、独立的多项随机变量。

  2. 对于每个班级k中存储的列表对每个分类级别的实例进行计数CategoricalLevels {j}

  3. 该软件存储预测器的概率j在课堂上k有水平l在财产中DistributionParameters {kj},适用于所有级别CategoricalLevels {j}。加性平滑[2],则估计概率为

    P 预测 j l | k 1 + j | k l j + k

    地点:

    • j | k l n k { y k } { x j l } w { y k } w 哪个是哪个预测器的加权观测数j=l在课堂上k

    • nk课堂上观察的次数是多少k

    • { x j l } 1 如果xijl,否则为0。

    • w 重量是用来观察的吗。该软件将类中的权重归一化,使它们之和等于该类的先验概率。

    • j预测器中不同层次的数量是多少j

    • k是课堂上观察的加权数吗k

性能指标

  • updateMetricsAndFit中的表的行标签指定的跟踪模型性能指标Mdl。指标,当增量模型为时,从新数据温暖的IsWarm属性是真正的)。增量模型在增量拟合时是温暖的,比如updateMetricsAndFit执行以下两个操作:

    • 将增量模型拟合到Mdl。MetricsWarmupPeriod观察,也就是指标预热期

    • 将增量模型拟合到所有期望的类(参见MaxNumClasses一会参数的incrementalClassificationNaiveBayes

  • Mdl。指标将每个性能指标的两种形式存储为表的变量(列);累积窗口,以行表示单个指标。当增量模型为暖时,updateMetricsAndFit以下列频率更新指标:

    • 累积—该函数计算自模型性能跟踪开始以来的累积指标。每次调用该函数时,该函数都会更新指标,并根据所提供的整个数据集进行计算。

    • 窗口-该函数根据窗口内的所有观测值计算度量Mdl。MetricsWindowSize财产。Mdl。MetricsWindowSize还决定了软件更新的频率窗口指标。例如,如果Mdl。MetricsWindowSize= 20,该函数根据所提供数据中的最后20个观察值计算度量(X((end - 20 + 1):end,:)Y((end - 20 + 1):end))。

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

      1. 对于每个指定的度量,存储一个长度相同的缓冲区Mdl。MetricsWindowSize还有一个观察权值的缓冲。

      2. 使用基于传入观察值批次的模型性能填充度量缓冲区的元素,并在权重缓冲区中存储相应的观察值权重。

      3. 当缓冲区被填满时,覆盖Mdl.Metrics.Window在指标窗口中显示加权平均性能。如果在函数处理一批观察值时缓冲区被填满,则最新传入的Mdl。MetricsWindowSize观察值进入缓冲区,最早的观察值从缓冲区中删除。例如,假设Mdl。MetricsWindowSize如果是20,则度量缓冲区有来自先前处理的批处理的10个值,还有15个值是传入的。为了组成长度为20的窗口,该函数使用来自15个传入观测值的测量值和来自前一批的最新5个测量值。

观察权重

对于每个条件预测分布,updateMetricsAndFit计算加权平均值和标准差。

如果先验类概率分布是已知的(换句话说,先验分布不是经验的),updateMetricsAndFit将观测值权重归一化,使其与各自类中的先验类概率相加。这个动作意味着默认的观测权重是各自的先验类概率。

如果先验类概率分布是经验性的,则每次调用时,软件将指定的观察权重归一化,使其总和为1updateMetricsAndFit

兼容性的考虑

全部展开

行为在R2021b中改变

参考文献

[1] biet, Albert, richard gavald, Geoffrey Holmes和Bernhard Pfahringer。数据流的机器学习与MOA实例。剑桥,马萨诸塞州:麻省理工学院出版社,2007年。

[2] Manning, Christopher D., Prabhakar Raghavan和Hinrich sch信息检索概论,纽约:剑桥大学出版社,2008。

在R2021a中引入