训练朴素贝叶斯分类模型进行增量学习
的适合
函数拟合一个配置的朴素贝叶斯分类模型用于增量学习(incrementalClassificationNaiveBayes
对象)转换为流数据。另外,要在数据到达时使用它来跟踪性能指标,请使用updateMetricsAndFit
代替。
要想一次对整批数据拟合或交叉验证一个朴素的贝叶斯分类模型,请参见fitcnb
.
这个例子展示了当您只知道数据中期望的最大类数时,如何拟合增量朴素贝叶斯学习器。
创建一个增量朴素贝叶斯模型。指定期望的最大类数为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
最多可以遇到5种不同的职业。默认情况下,优先类分布Mdl。Prior
是经验的,这意味着软件在遇到标签时更新先验分布。
Mdl
必须适合数据,才能使用它执行任何其他操作。
加载人工活动数据集。随机洗牌数据。
负载humanactivityn =元素个数(actid);rng (1)%的再现性idx = randsample (n, n);X =壮举(idx:);Y = actid (idx);
关于数据集的详细信息,请输入描述
在命令行。
将增量模型拟合到训练数据中,每次50个观察数据块适合
函数。在每一次迭代:
通过处理50个观测数据来模拟数据流。
用一个适合传入观测的新模型覆盖先前的增量模型。
存储第一类中第一个预测器的平均值
以及物体正在移动的先验概率(Y
> 2)观察他们如何在增量训练中发展。
%预先配置numObsPerChunk = 50;nchunk =地板(n / numObsPerChunk);mu11 = 0 (nchunk, 1);priormoved = 0 (nchunk, 1);%增量式拟合为n = 1:nchunk ibegin = min(n,numObsPerChunk*(j-1) + 1);iend = min (n, numObsPerChunk * j);idx = ibegin: iend;Mdl =适合(Mdl X (idx:), Y (idx));mu11 (j) = Mdl.DistributionParameters {1} (1);priormoved (j) = (Mdl.Prior (Mdl求和。类名> 2));结束
IncrementalMdl
是一个incrementalClassificationNaiveBayes
模型对象对流中的所有数据进行训练。
要了解参数在增量学习过程中是如何演变的,请将它们绘制在单独的子图上。
图;次要情节(2,1,1)情节(mu11) ylabel (“\ mu_{11}”)包含(“迭代”)轴紧次要情节(2,1,2)情节(priormoved);ylabel (“之前P(主题了))包含(“迭代”)轴紧
适合
当它处理每个块时,更新预测器分布的后验均值。因为先验类分布是经验的,
(物体在移动)变化为适合
流程每个块。
这个例子展示了当您知道数据中的所有类名时,如何适应增量朴素贝叶斯学习器。
考虑训练一种设备,根据测量对象的生物特征数据来预测对象是坐、站、走、跑还是跳舞,你知道从1到5的班级名称映射到一项活动。此外,假设研究人员计划将该设备统一地展示给每个阶层。
创建一个用于多类学习的增量朴素贝叶斯学习器。指定类名和统一的优先类分布。
一会= 1:5;Mdl = incrementalClassificationNaiveBayes (“类名”一会,“之前”,“统一”)
Mdl = incrementalClassificationNaiveBayes IsWarm: 0 Metrics: [1×2 table] ClassNames: [1 2 3 4 5] ScoreTransform: 'none' DistributionNames: 'normal' DistributionParameters: {5×0 cell}属性,方法
Mdl
是一个incrementalClassificationNaiveBayes
模型对象。它的所有属性都是只读的。在培训期间,必须有观察到的标签Mdl。一会
.
Mdl
必须适合数据,才能使用它执行任何其他操作。
加载人工活动数据集。随机洗牌数据。
负载humanactivityn =元素个数(actid);rng (1);%的再现性idx = randsample (n, n);X =壮举(idx:);Y = actid (idx);
关于数据集的详细信息,请输入描述
在命令行。
将增量模型拟合到训练数据适合
函数。通过一次处理50个观察数据块来模拟数据流。在每一次迭代:
50的观察过程。
用一个适合传入观测的新模型覆盖先前的增量模型。
存储第一类中第一个预测器的平均值
以及物体正在移动的先验概率(Y
> 2)观察他们如何在增量训练中发展。
%预先配置numObsPerChunk = 50;nchunk =地板(n / numObsPerChunk);mu11 = 0 (nchunk, 1);priormoved = 0 (nchunk, 1);%增量式拟合为n = 1:nchunk ibegin = min(n,numObsPerChunk*(j-1) + 1);iend = min (n, numObsPerChunk * j);idx = ibegin: iend;Mdl =适合(Mdl X (idx:), Y (idx));mu11 (j) = Mdl.DistributionParameters {1} (1);priormoved (j) = (Mdl.Prior (Mdl求和。类名> 2));结束
IncrementalMdl
是一个incrementalClassificationNaiveBayes
模型对象对流中的所有数据进行训练。
要了解参数在增量学习过程中是如何演变的,请将它们绘制在单独的子图上。
图;次要情节(2,1,1)情节(mu11) ylabel (“\ mu_{11}”)包含(“迭代”)轴紧次要情节(2,1,2)情节(priormoved);ylabel (“之前P(主题了))包含(“迭代”)轴紧
适合
当它处理每个块时,更新预测器分布的后验均值。因为先验类分布被指定为均匀的,
(物体在移动)= 0.6,不改变为适合
流程每个块。
使用。训练朴素贝叶斯分类模型fitcnb
,将其转换为增量学习器,跟踪其在流数据上的表现,然后将其与数据进行匹配。指定观察权重。
加载和预处理数据
加载人工活动数据集。随机洗牌数据。
负载humanactivityrng (1);%的再现性n =元素个数(actid);idx = randsample (n, n);X =壮举(idx:);Y = actid (idx);
关于数据集的详细信息,请输入描述
在命令行。
假设受试者不移动时收集的数据(Y
<= 2)的质量是物体移动时的两倍。创建一个权重变量,2表示从静止物体收集到的观测值,1表示从移动物体收集到的观测值。
n = 1, n = 1;
训练朴素贝叶斯分类模型
拟合朴素贝叶斯分类模型到一半数据的随机样本。
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
模型对象表示传统训练的朴素贝叶斯分类模型。
转换训练模型
将传统训练模型转换为朴素贝叶斯分类进行增量学习。
IncrementalMdl = incrementalLearner (TTMdl)
IncrementalMdl = incrementalClassificationNaiveBayes IsWarm: 1 Metrics: [1×2 table] ClassNames: [1 2 3 4 5] ScoreTransform: 'none' DistributionNames: {1×60 cell} DistributionParameters: {5×60 cell}属性,方法
IncrementalMdl
是一个incrementalClassificationNaiveBayes
模型。因为类名是在Mdl。一会
,增量学习过程中遇到的标签必须在Mdl。一会
.
分别跟踪性能指标和适合模型
对剩余的数据进行增量学习updateMetrics
和适合
功能。在每一次迭代:
一次处理50个观测数据,模拟一个数据流。
调用updateMetrics
更新模型的累积误差和窗口分类误差。覆盖先前的增量模型以更新指标
财产。注意,该函数并不使模型适合数据块——数据块是模型的“新”数据。设置观测权值。
调用适合
使模型与观测数据相吻合。覆盖之前的增量模型以更新模型参数。设置观测权值。
以最小的成本储存。
%预先配置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 = updateMetrics (IncrementalMdl自(idx:), Yil (idx),...“重量”会(idx));mc {j:} = IncrementalMdl。指标{“MinimalCost”,:};IncrementalMdl =适合(IncrementalMdl自(idx:), Yil (idx),“重量”会(idx));结束
IncrementalMdl
是一个incrementalClassificationNaiveBayes
模型对象对流中的所有数据进行训练。
或者,您可以使用updateMetricsAndFit
更新给定新数据块的模型的性能指标,然后使模型适合于数据。
绘制性能指标的跟踪图。
h =情节(mc.Variables);xlim ([0 nchunk]);ylabel (“最小成本”传奇(h, mc.Properties.VariableNames)包含(“迭代”)
累积损失逐渐稳定,而窗口损失跳跃。
增量训练朴素贝叶斯分类模型,仅当其性能下降时。
加载人工活动数据集。随机洗牌数据。
负载humanactivityn =元素个数(actid);rng (1)%的再现性idx = randsample (n, n);X =壮举(idx:);Y = actid (idx);
关于数据集的详细信息,请输入描述
在命令行。
为增量学习配置朴素贝叶斯分类模型,使期望的最大类数为5,跟踪的性能度量包括误分类错误率,度量窗口大小为1000。使配置的模型适合前1000个观察。
Mdl = incrementalClassificationNaiveBayes (“MaxNumClasses”5,“MetricsWindowSize”, 1000,...“指标”,“classiferror”);initobs = 1000;Mdl =适合(Mdl X (1: initobs,:), Y (1: initobs));
Mdl
是一个incrementalClassificationNaiveBayes
模型对象。
使用条件拟合进行增量学习,每次迭代遵循以下程序:
通过一次处理100个观察数据块来模拟数据流。
更新传入数据块上的模型性能。
只有当误分类错误率大于0.05时,才能将模型拟合到数据块上。
在跟踪性能和拟合时,覆盖之前的增量模型。
在第二类中存储第一类预测器的误分类错误率和平均值 看看他们在训练中是如何发展的。
跟踪时适合
火车模型。
%预先配置numObsPerChunk = 100;nchunk = floor((n - initobs)/numObsPerChunk);mu21 = 0 (nchunk, 1);ce = array2table (nan (nchunk, 2),“VariableNames”, (“累积”“窗口”]);训练= false (nchunk, 1);%增量式拟合为n = 1:nchunk ibegin = min(n,numObsPerChunk*(j-1) + 1 + initobs);iend = min(n,numObsPerChunk*j + initobs);idx = ibegin: iend;Mdl = updateMetrics (Mdl X (idx:), Y (idx));ce {j:} = Mdl。指标{“ClassificationError”,:};如果{j,2} > 0.05 Mdl =拟合(Mdl,X(idx,:),Y(idx));训练(j) = true;结束mu21 (j) = Mdl.DistributionParameters {1}, (1);结束
Mdl
是一个incrementalClassificationNaiveBayes
模型对象对流中的所有数据进行训练。
看看模型的表现和 在训练中进化,把它们放在不同的次要情节上。
次要情节(2,1,1)情节(mu21)在情节(找到(训练),mu21(训练),“r”。) ylabel (“\ mu_{21}”)传说(“\ mu_{21}”,培训发生的,“位置”,“最佳”)举行从次要情节(2,1,2)情节(ce.Variables) ylabel (“误分类错误率”)包含(“迭代”)传说(ce.Properties.VariableNames“位置”,“最佳”)
的轨迹图 显示为常数周期,在此期间前1000个观察窗口内损失不超过0.05。
Mdl
- - - - - -朴素贝叶斯分类模型的增量学习,以适应流数据incrementalClassificationNaiveBayes
模型对象用于适应流式数据的增量学习的朴素贝叶斯分类模型,指定为incrementalClassificationNaiveBayes
模型对象。您可以创建Mdl
直接或转换支持的,传统训练的机器学习模型使用金宝appincrementalLearner
函数。详细信息请参见对应的参考页面。
X
- - - - - -预测数据块模型拟合的预测数据块,指定为n——- - - - - -Mdl。NumPredictors
浮点矩阵。
观察标签的长度Y
观察的次数X
必须是相等的;Y (
是观察的标签吗j(行或列)在j
)X
.
请注意
如果Mdl。NumPredictors
= 0,适合
推断预测器的数量X
,并设置输出模型的一致性属性。否则,如果流数据中的预测变量数量发生变化Mdl。NumPredictors
,适合
一个错误的问题。
数据类型:单
|双
Y
- - - - - -块的标签模型适合的标签块,指定为类别、字符或字符串数组、逻辑或浮点向量,或字符向量的单元格数组。
观察标签的长度Y
观察的次数X
必须是相等的;Y (
是观察的标签吗j(行或列)在j
)X
.适合
当满足至少一个条件时发出错误:
Y
包含一个新遇到的标签和类的最大数量已经达到以前(参见MaxNumClasses
和一会
参数的incrementalClassificationNaiveBayes
).
的数据类型Y
和Mdl。一会
是不同的。
数据类型:字符
|字符串
|细胞
|分类
|逻辑
|单
|双
请注意
如果一个观察(预测器或标签)或重量中至少有一个缺失(南
)的值,适合
忽略了观察。因此,适合
使用不到n观察,以计算模型性能。
Mdl
更新了用于增量学习的朴素贝叶斯分类模型incrementalClassificationNaiveBayes
模型对象更新了用于增量学习的朴素贝叶斯分类模型,作为与输入模型相同数据类型的增量学习模型对象返回Mdl
,一个incrementalClassificationNaiveBayes
对象。
除了更新分布模型参数外,适合
时执行以下操作Y
包含预期但未处理的类:
属性指定所有期望的类一会
当您创建输入模型时,名称-值参数Mdl
使用incrementalClassificationNaiveBayes
,适合
:
添加任何新遇到的标签Y
在…的末尾Mdl。一会
.
扩展Mdl。成本
到一个c——- - - - - -c矩阵,c是班级数吗Mdl。一会
.由此产生的误分类代价矩阵被平衡。
扩展Mdl。Prior
一个长度c一个更新的经验类分布的向量。
如果您在创建输入模型时指定了所有期望的类Mdl
或者转换一个传统训练的朴素贝叶斯模型incrementalLearner
,但不指定误分类代价矩阵(Mdl。成本
),适合
设置处理类的误分类成本为1
和未处理的类南
.例如,如果适合
处理可能的三个类中的前两个类,Mdl。成本
是[0 1南;1 0南;1 1 0)
.
在令牌袋模型中,预测器的值j令牌出现的次数是否为非负数j在观察。多项式模型中的类别(箱子)的数量就是不同标记的数量(预测器的数量)。
与传统训练不同,增量学习可能没有单独的测试集。因此,要将每个传入的数据块视为一个测试集,将增量模型和每个传入的数据块传递给updateMetrics
在用相同的数据训练模型之前。
如果预测变量j
有条件正态分布(见DistributionNames
属性),该软件通过计算特定类别的加权平均值和加权标准差的偏置(最大似然)估计来拟合数据的分布。为每一个类k:
预测器的加权平均数j是
在哪里w我重量是用于观察的吗我.该软件将一个类中的权重标准化,这样它们的总和就等于该类的先验概率。
预测器加权标准差的无偏估计量j是
如果所有预测变量组成一个条件多项分布(见DistributionNames
属性),该软件适合使用Bag-of-Tokens模型.软件存储该令牌的概率j
出现在课堂上k
在房地产DistributionParameters {
.与添加剂平滑[1],估计的概率是k
,j
}
地点:
令牌的加权出现次数是多少j在课堂上k.
nk课堂上观察的次数是多少k.
重量是用于观察的吗我.该软件将一个类别中的权重标准化,以便它们的总和等于该类别的先验概率。
哪个是类中所有令牌出现的加权总数k.
如果预测变量j
有一个条件多元多项式分布(见DistributionNames
属性),软件遵循以下程序:
该软件收集了一个独特的关卡列表,并将排序后的列表存储在其中CategoricalLevels
,并将每一层视为一个容器。每个预测器和类的组合都是一个独立的、独立的多项随机变量。
为每一个类k,该软件使用存储的列表计算每个类别级别的实例CategoricalLevels {
.j
}
软件储存预测的概率j
在课堂上k
有水平l在房地产DistributionParameters {
,为所有层次k
,j
}CategoricalLevels {
.与添加剂平滑[1],估计的概率是j
}
地点:
哪个预测器的加权观测数是多少j=l在课堂上k.
nk课堂上观察的次数是多少k.
如果xij=l,否则为0。
重量是用于观察的吗我.该软件将一个类别中的权重标准化,以便它们的总和等于该类别的先验概率。
米j预测器中不同水平的数量j.
米k是课堂上的加权观察数吗k.
对于每个条件预测器分布,适合
计算加权平均值和标准差。
如果先验类别概率分布已知(换句话说,先验分布不是经验的),适合
将观察权值归一化到各自类中的先验类概率。这个操作意味着默认的观察权值是各自的先验类概率。
如果先验类概率分布是经验的,软件将指定的观察权值归一化,使其在每次调用时之和为1适合
.
行为在R2021b中改变
从R2021b开始,朴素贝叶斯增量拟合函数适合
和updateMetricsAndFit
计算训练期间条件正态预测变量加权标准差的偏置(最大似然)估计。换句话说,对于每个类k,增量拟合函数对条件正态预测器的加权方差平方和进行归一化xj按类中权重的总和计算k.在R2021b之前,朴素贝叶斯增量拟合函数计算无偏标准差,如fitcnb
.当前返回的加权标准差估计值与R2021b之前计算的估计值相差一个因子
随着样本量的增加,因子趋近于1。
[1] Manning, Christopher D., Prabhakar Raghavan, Hinrich Schütze。信息检索概论,纽约:剑桥大学出版社,2008。
你点击一个链接对应于这个MATLAB命令:
通过在MATLAB命令窗口中输入命令来运行命令。Web浏览器不支持MATLAB命令。金宝app
你也可以从以下列表中选择一个网站:
选择中国网站(中文或英文)以获得最佳网站性能。其他MathWorks国家站点没有针对您所在位置的访问进行优化。