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 =元素个数(actid);rng (1)%的再现性idx = randsample (n, n);X =壮举(idx:);Y = actid (idx);
有关数据集的详细信息,请输入描述
在命令行。
通过在每次迭代中执行以下操作来实现增量学习:
通过处理50个观察数据块来模拟数据流。
用一个新模型覆盖先前的增量模型,以适应传入的观察结果。
在第一类中存储第一个预测器的条件均值 、累积度量和窗口度量,以查看它们在增量学习中如何发展。
%预先配置numObsPerChunk = 50;nchunk =地板(n / numObsPerChunk);(nchunk mc = array2table (0, 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情节(mu11) ylabel (“\ mu_{11}”) xlim([0 nchunk]) nexttile h = plot(mc.Variables);xlim ([0 nchunk]) ylabel (“最小成本”)参照线(Mdl。指标WarmupPeriod/numObsPerChunk,r -。传奇(h, mc.Properties.VariableNames)包含(t)“迭代”)
这幅图表明updateMetricsAndFit
执行以下操作:
适合 在所有增量学习迭代过程中。
只在指标预热期之后计算性能指标。
计算每次迭代期间的累积度量。
在处理200个观察结果(4次迭代)后计算窗口度量。
指定观察权重
训练朴素贝叶斯分类模型fitcnb
,将其转换为增量学习器,跟踪其在流数据上的表现,并在一次调用中使其适合于数据。指定观察权重。
加载和预处理数据
加载人类活动数据集。随机打乱数据。
负载humanactivityrng (1)%的再现性n =元素个数(actid);idx = randsample (n, n);X =壮举(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
模型对象代表传统训练的朴素贝叶斯分类模型。
转换训练模型
将传统训练模型转换为朴素贝叶斯分类模型,进行增量学习。指定跟踪增量学习时的误分类错误率。
IncrementalMdl = incrementalLearner (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 =总和(idxil);numObsPerChunk = 50;nchunk =地板(nil / numObsPerChunk);(nchunk mc = array2table (0, 2),“VariableNames”,[“累积”“窗口”]);自= X (idxil:);Yil = Y (idxil);会= 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),...“重量”会(idx));mc {j:} = IncrementalMdl。指标{“ClassificationError”,:};结束
现在,IncrementalMdl
是一个incrementalClassificationNaiveBayes
对流中的所有数据进行训练的模型对象。
创建一个错误分类错误率的轨迹图。
h =情节(mc.Variables);xlim ([0 nchunk]) ylabel (分类错误的传奇(h, mc.Properties.VariableNames)包含(“迭代”)
累积损失一开始会跳跃,但稳定在0.05左右,而窗口损失在整个训练过程中都在跳跃。
输入参数
Mdl
- - - - - -增量学习的朴素贝叶斯分类模型
incrementalClassificationNaiveBayes
模型对象
朴素贝叶斯分类模型对增量学习的性能进行度量,然后对数据进行拟合,指定为incrementalClassificationNaiveBayes
模型对象。您可以创建Mdl
直接或通过转换一个受支持的,传统训练的机器学习模型使用金宝appincrementalLearner
函数。有关更多详细信息,请参见相应的参考页面。
如果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南;1 0南;1 1 0)
.
更多关于
Bag-of-Tokens模型
在令牌袋模型中,预测器的值j令牌出现的非负次数j在观察。多项模型中类别(箱)的数量是不同标记的数量(预测器的数量)。
算法
正态分布估计
如果预测变量j
具有条件正态分布(见DistributionNames
属性),软件通过计算类特定的加权平均值和加权标准差的有偏(最大似然)估计来拟合数据的分布。为每一个类k:
预测器的加权平均值j是
在哪里w我重量是用来观察的吗我.该软件将类中的权重规范化,使其之和为该类的先验概率。
预测器加权标准差的无偏估计量j是
多项式分布的估计概率
如果所有的预测变量组成一个条件多项分布(参见DistributionNames
属性),该软件适用于使用Bag-of-Tokens模型.软件存储该token的概率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。
版本历史
介绍了R2021aR2021b:朴素贝叶斯增量拟合函数计算有条件正常预测变量的有偏差(最大似然)标准差
从R2021b开始,朴素贝叶斯增量拟合函数适合
而且updateMetricsAndFit
计算训练过程中条件正常预测变量的加权标准差的偏倚(最大似然)估计。换句话说,对于每个类k,增量拟合函数归一化条件正态预测器加权偏差平方和xj通过类中权重的和k.在R2021b之前,朴素贝叶斯增量拟合函数计算无偏标准差,如fitcnb
.目前返回的加权标准差估计值与R2021b之前计算的估计值相差一个因子
随着样本量的增加,因子趋于1。
MATLAB命令
你点击了一个对应于这个MATLAB命令的链接:
在MATLAB命令窗口中输入命令来运行该命令。Web浏览器不支持MATLAB命令。金宝app
您也可以从以下列表中选择网站:
如何获得最佳的网站性能
选择中国网站(中文或英文)以获得最佳的网站表现。其他MathWorks国家网站没有针对从您的位置访问进行优化。