updateMetricsAndFit
在给定新的数据和训练模型的情况下,更新朴素贝叶斯增量学习分类模型的性能指标
描述
给定流数据,updateMetricsAndFit
首先评估用于增量学习的配置朴素贝叶斯分类模型的性能(incrementalClassificationNaiveBayes
对象)通过调用updateMetrics
输入数据。然后updateMetricsAndFit
通过调用使模型与该数据匹配适合
.换句话说,updateMetricsAndFit
执行prequential评价因为它将每个传入的数据块视为一个测试集,并跟踪累积测量的性能指标,并超过指定的窗口[1].
updateMetricsAndFit
提供一种简单的方法来更新模型性能指标,并在每个数据块上训练模型。或者,您也可以通过调用分别执行这些操作updateMetrics
然后适合
,这允许更大的灵活性(例如,您可以根据模型在数据块上的性能来决定是否需要训练模型)。
返回用于增量学习的朴素贝叶斯分类模型Mdl
= updateMetricsAndFit (Mdl
,X
,Y
)Mdl
,为增量学习的输入朴素贝叶斯分类模型Mdl
修改如下:
updateMetricsAndFit
测量模型在传入预测器和响应数据上的性能,X
而且Y
分别。当输入模型为时温暖的(Mdl。我年代Warm
是真正的
),updateMetricsAndFit
对象中存储的计算指标指标
属性中的新值。否则,updateMetricsAndFit
商店南
值指标
代替。updateMetricsAndFit
通过更新给定类别的每个预测变量的条件后验均值和标准差,将修改后的模型拟合到传入数据,并在输出模型中存储新的估计值和其他配置Mdl
.
例子
更新数据流的性能指标和训练模型
通过调用创建一个用于增量学习的朴素贝叶斯分类模型incrementalClassificationNaiveBayes
并在数据中指定最多5个期望的类。
Mdl = incrementalClassificationNaiveBayes(“MaxNumClasses”5)
Mdl = incrementalClassificationNaiveBayes IsWarm: 0 Metrics: [1x2 table] ClassNames: [1x0 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个观测数据块来模拟数据流。
将先前的增量模型覆盖为一个适合于新观测值的新模型。
将第一个预测器的条件均值存储在第一个类中 ,累积指标,以及窗口指标,以查看它们在增量学习期间是如何发展的。
%预先配置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) = mld . distributionparameters {1,1}(1);结束
现在,Mdl
是一个incrementalClassificationNaiveBayes
在流中的所有数据上训练的模型对象。在增量学习期间和模型预热后,updateMetricsAndFit
检查模型在传入观测数据上的性能,然后将模型与这些观测数据拟合。
看看性能指标和 在训练过程中进化,将它们绘制在单独的瓷砖上。
T = tiledlayout(2,1);Nexttile plot(mu11)“\ mu_{11}”) xlim([0 nchunk]) nexttile h = plot(mc.Variables);Xlim ([0 nchunk]) ylabel(“最小成本”)参照线(Mdl。指标WarmupPeriod/numObsPerChunk,r -。xlabel(t, mc.Properties.VariableNames)“迭代”)
图表显示updateMetricsAndFit
执行以下操作:
适合 在所有增量学习迭代过程中。
仅在指标预热期之后计算性能指标。
在每次迭代期间计算累计度量。
在处理200个观测结果(4次迭代)后计算窗口度量。
指定观察权重
训练朴素贝叶斯分类模型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 <= 2);
训练朴素贝叶斯分类模型
将朴素贝叶斯分类模型拟合到一半数据的随机样本中。
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: {1x60 cell} DistributionParameters: {5x60 cell}属性,方法
TTMdl
是一个ClassificationNaiveBayes
模型对象表示传统训练朴素贝叶斯分类模型。
转换训练模型
将传统训练模型转换为朴素贝叶斯分类模型进行增量学习。指定在增量学习过程中跟踪错分类错误率。
增量mdl =增量学习者(TTMdl,“指标”,“classiferror”)
IncrementalMdl = incrementalClassificationNaiveBayes IsWarm: 1 Metrics: [2x2 table] ClassNames: [1 2 3 4 5] ScoreTransform: 'none' DistributionNames: {1x60 cell} DistributionParameters: {5x60 cell}属性,方法
IncrementalMdl
是一个incrementalClassificationNaiveBayes
模型。因为类名是在IncrementalMdl。一会
,在增量学习过程中遇到的标签必须在IncrementalMdl。一会
.
跟踪绩效指标和适合模型
方法对其余数据执行增量学习updateMetricsAndFit
函数。在每次迭代中:
通过一次处理50个观测数据来模拟数据流。
调用
updateMetricsAndFit
在给定传入的观察数据块的情况下,更新模型的累积和窗口性能指标,然后将模型与数据拟合。用一个新的增量模型覆盖以前的增量模型。指定观察权重。存储误分类错误率。
%预先配置Idxil = ~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;增量mdl = updateMetricsAndFit(增量mdl,Xil(idx,:),Yil(idx),...“重量”会(idx));mc{j,:} = IncrementalMdl。指标{“ClassificationError”,:};结束
现在,IncrementalMdl
是一个incrementalClassificationNaiveBayes
在流中的所有数据上训练的模型对象。
创建一个错误分类错误率的轨迹图。
h = plot(mc.Variables);Xlim ([0 nchunk]) ylabel(分类错误的xlabel(h,mc.Properties.VariableNames)“迭代”)
累积损失最初会跳跃,但稳定在0.05左右,而窗口损失在整个训练过程中都会跳跃。
输入参数
Mdl
- - - - - -增量学习的朴素贝叶斯分类模型
incrementalClassificationNaiveBayes
模型对象
朴素贝叶斯分类模型用于度量增量学习的性能,然后对数据进行拟合,指定为incrementalClassificationNaiveBayes
模型对象。你可以创建Mdl
直接或通过转换支持的,传统训练的机器学习模型使用万博1manbetxincrementalLearner
函数。更多详细信息,请参见相应的参考页面。
如果Mdl。我年代Warm
是假
,updateMetricsAndFit
不跟踪模型的性能。详情请参见性能指标.
X
- - - - - -预测数据块
浮点矩阵
用于测量模型性能的预测器数据块,然后对模型进行拟合,指定为n——- - - - - -Mdl。NumPredictors
浮点矩阵。
观察标签的长度Y
观察的次数X
必须平等;Y (
是观察的标签吗j(行)j
)X
.
请注意
如果Mdl。NumPredictors
= 0,updateMetricsAndFit
从中推断预测器的数量X
,并设置输出模型的相应属性。否则,如果流数据中的预测变量数量从Mdl。NumPredictors
,updateMetricsAndFit
产生一个错误。
数据类型:单
|双
Y
- - - - - -标签块
分类数组|字符数组|字符串数组|逻辑向量|浮点矢量|字符向量的单元格数组
标签块,用于测量模型性能,然后将模型拟合到,指定为类别、字符或字符串数组;逻辑或浮点向量;或者是字符向量的单元格数组。
观察标签的长度Y
观察的次数X
必须平等;Y (
是观察的标签吗j(行)j
)X
.
updateMetricsAndFit
当满足以下一个或两个条件时发出错误:
Y
包含一个新标签,并且已经达到最大类数(请参阅MaxNumClasses
而且一会
参数的incrementalClassificationNaiveBayes
).的
一会
属性的输入模型Mdl
是否为非空,数据类型为Y
而且Mdl。一会
是不同的。
数据类型:字符
|字符串
|细胞
|分类
|逻辑
|单
|双
请注意
如果一个观察值(预测值或标签)或权重包含至少一个缺失(南
)的值,updateMetricsAndFit
忽略观察结果。因此,updateMetricsAndFit
使用少于n计算模型性能并创建一个更新的模型,其中n观察的数量在吗X
.
输出参数
Mdl
-更新朴素贝叶斯分类模型,用于增量学习
incrementalClassificationNaiveBayes
模型对象
用于增量学习的更新朴素贝叶斯分类模型,作为与输入模型具有相同数据类型的增量学习模型对象返回Mdl
,incrementalClassificationNaiveBayes
.
如果模型温度不高,updateMetricsAndFit
不计算性能指标。结果,指标
的属性Mdl
完全由南
值。如果模型是温暖的,updateMetricsAndFit
计算新数据上的累积和窗口性能指标X
而且Y
的对应元素Mdl。指标
.详情请参见性能指标.
除了更新分布模型参数外,updateMetricsAndFit
时执行以下操作Y
包含预期的但未处理的类:
类未指定所有预期类
一会
创建输入模型时的名称-值参数Mdl
使用incrementalClassificationNaiveBayes
,updateMetricsAndFit
:添加任何新标签
Y
在…的尾部Mdl。一会
.扩展
Mdl。成本
到一个c——- - - - - -c矩阵,c上课的数量是多少Mdl。一会
.由此产生的错误分类成本矩阵是平衡的。扩展
Mdl。Prior
到一定程度c更新的经验类分布的向量。
如果您在创建输入模型时指定了所有期望的类
Mdl
或转换传统训练的朴素贝叶斯模型使用incrementalLearner
,但你没有指定错误分类代价矩阵(Mdl。成本
),updateMetricsAndFit
将已处理类的错误分类代价设置为1
和未处理的类南
.例如,如果updateMetricsAndFit
处理可能的三个类中的前两个类,Mdl。成本
是[0 1 NaN;10个NaN;11 10 0]
.
更多关于
Bag-of-Tokens模型
在代币袋模型中,预测器的值j令牌出现的非负数吗j在观察中。多项模型中类别(箱子)的数量是不同标记的数量(预测器的数量)。
算法
正态分布估计
如果预测变量j
有一个条件正态分布(见DistributionNames
属性),软件通过计算特定类别的加权平均值和加权标准差的偏倚(最大似然)估计来拟合数据的分布。每门课k:
预测器的加权平均值j是
在哪里w我重量是用来观察的吗我.该软件将一个类中的权重规范化,使它们之和为该类的先验概率。
预测器加权标准差的无偏估计量j是
多项式分布的估计概率
如果所有预测变量组成条件多项分布(参见DistributionNames
属性),该软件适合使用Bag-of-Tokens模型.软件存储该令牌的概率j
出现在课堂上k
在财产中DistributionParameters {
.添加平滑[2],则估计概率为k
,j
}
地点:
哪个是令牌出现的加权次数j在课堂上k.
nk课堂上的观察次数是多少k.
重量是用来观察的吗我.该软件将一个类中的权重规范化,使它们之和为该类的先验概率。
类中所有令牌出现的加权总数是多少k.
多元多项分布的估计概率
如果预测变量j
具有条件多元多项分布(参见DistributionNames
属性),软件遵循以下过程:
该软件收集的唯一级别的列表,存储排序的列表
CategoricalLevels
,并将每一层视为一个箱子。预测器和类的每个组合都是一个独立的多项式随机变量。每门课k,该软件使用存储在
CategoricalLevels {
.j
}该软件存储概率预测器
j
在课堂上k
有水平l在财产中DistributionParameters {
,适用于各级k
,j
}CategoricalLevels {
.添加平滑[2],则估计概率为j
}地点:
哪个是哪个预测器的加权观测数j=l在课堂上k.
nk课堂上的观察次数是多少k.
如果xij=l,否则为0。
重量是用来观察的吗我.该软件将一个类中的权重规范化,使它们之和为该类的先验概率。
米j不同水平的数量是预测因素吗j.
米k在课堂上观察的加权数是多少k.
性能指标
updateMetricsAndFit
中表的行标签指定的模型性能指标Mdl。指标
,只有当增量模型为时,才能从新数据中获得温暖的(IsWarm
属性是真正的
).如果您通过使用
incrementalLearner
而且MetricsWarmupPeriod
为0(默认为incrementalLearner
),模型在创作时是温暖的。否则,增量模型在增量拟合函数后变暖,例如
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)
).跟踪窗口内性能指标的增量函数使用以下过程:
存储一个长度的缓冲区
Mdl。MetricsWindowSize
对于每个指定的度量,并存储一个观察权重的缓冲区。用基于批量传入观察的模型性能填充度量缓冲区的元素,并在权重缓冲区中存储相应的观察权重。
当缓冲区已满时,覆盖
Mdl.Metrics.Window
在指标窗口中使用加权平均性能。如果函数处理一批观测值时缓冲区溢出,则最新的传入Mdl。MetricsWindowSize
观测值进入缓冲区,最早的观测值从缓冲区中删除。例如,假设Mdl。MetricsWindowSize
为20时,度量缓冲区中有10个来自先前处理的批处理的值,15个值是传入的。为了组成长度为20的窗口,该函数使用来自15个传入观测值的测量值和来自前一批的最新5个测量值。
观察权重
对于每个条件预测器分布,updateMetricsAndFit
计算加权平均值和标准差。
如果先验类概率分布是已知的(换句话说,先验分布不是经验的),updateMetricsAndFit
将观察权重归一化,使其与各自类中的先验类概率相加。这个动作意味着默认的观察权重是各自的先验类概率。
如果先验类概率分布是经验的,软件将指定的观察权重归一化,每次调用时求和为1updateMetricsAndFit
.
参考文献
[1]比菲特,阿尔伯特,里卡尔Gavaldá,杰弗里·霍姆斯和伯恩哈德·法林格。数据流的机器学习及其在MOA中的应用.马萨诸塞州剑桥:麻省理工学院出版社,2007年。
[2]曼宁,克里斯托弗·D,普拉巴卡尔·拉格哈万,辛里奇Schütze。信息检索概论纽约:剑桥大学出版社,2008年。
版本历史
R2021a中引入R2021b:朴素贝叶斯增量拟合函数计算有条件正态预测变量的偏倚(最大似然)标准差
R2021b的行为发生了变化
从R2021b开始,朴素贝叶斯增量拟合函数适合
而且updateMetricsAndFit
在训练过程中计算有条件正常预测变量的加权标准差的偏倚(最大似然)估计。换句话说,对于每个类k,增量拟合函数对条件正态预测因子的加权方差平方和进行归一化xj通过类中权重的和k.在R2021b之前,朴素贝叶斯增量拟合函数计算无偏标准差,如fitcnb
.目前返回的加权标准差估计值与R2021b之前计算的估计值相差一个因素
随着样本量的增加,因子趋于1。
MATLAB命令
你点击了一个对应于这个MATLAB命令的链接:
在MATLAB命令窗口中输入该命令来运行该命令。Web浏览器不支持MATLAB命令。万博1manbetx
您也可以从以下列表中选择一个网站:
如何获得最佳的网站性能
选择中国站点(中文或英文)以获得最佳站点性能。其他MathWorks国家站点没有针对您所在位置的访问进行优化。