主要内容

适合

火车朴素贝叶斯分类模型的增量学习

描述

适合功能符合配置的朴素贝叶斯分类模型的增量学习(incrementalClassificationNaiveBayes流数据对象)。此外跟踪性能指标使用数据到达时,使用updateMetricsAndFit代替。

适合或旨在朴素贝叶斯分类模型整批数据,看看fitcnb

例子

Mdl=健康(Mdl,X,Y)返回一个朴素贝叶斯分类模型的增量学习Mdl代表输入朴素贝叶斯分类模型的增量学习Mdl训练使用预测和响应数据,XY分别。具体地说,适合更新的条件后验分布预测变量的数据。

例子

Mdl=健康(Mdl,X,Y“重量”,权重)还设置观察权重权重

例子

全部折叠

适合增量朴素贝叶斯学习当你知道只有预期的最大数量的类的数据。

创建一个增量朴素贝叶斯模型。指定的最大数量预计为5类。

Mdl = incrementalClassificationNaiveBayes (“MaxNumClasses”5)
Mdl = incrementalClassificationNaiveBayes IsWarm: 0指标:[1 x2表]一会:[1 x0双]ScoreTransform:“没有一个”DistributionNames:“正常”DistributionParameters:{}属性,方法

Mdl是一个incrementalClassificationNaiveBayes模型。所有的属性是只读的。Mdl最多可以处理5独特的类。默认情况下,类分布Mdl.Prior经验,这意味着软件更新先验分布为它遇到标签。

Mdl必须适合数据之前,您可以使用它来执行任何其他操作。

载入人类活动数据集。随机洗牌数据。

负载humanactivityn =元素个数(actid);rng (1)%的再现性idx = randsample (n, n);X =壮举(idx:);Y = actid (idx);

细节的数据集,输入描述在命令行中。

适合的增量式模型训练数据,50块一次观测,通过使用适合函数。在每一次迭代:

  • 模拟数据流处理50个观察。

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

  • 存储意味着在第一节课的第一个预测 μ 11 和主题是移动的先验概率(Y> 2)看看这些参数增量学习中发展。

%预先配置numObsPerChunk = 50;nchunk =地板(n / numObsPerChunk);mu11 = 0 (nchunk, 1);priormoved = 0 (nchunk, 1);%增量式拟合j = 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));结束

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

在增量学习看到参数如何演变,把它们在不同的瓷砖。

t = tiledlayout (2, 1);nexttile情节(mu11) ylabel (“\ mu_ {11}”)包含(“迭代”)轴nexttile情节(priormoved) ylabel (‘\π(主题是移动))包含(t)“迭代”)轴

图包含2轴对象。坐标轴对象1包含一个类型的对象。坐标轴对象2包含一个类型的对象。

适合更新后的预测分布过程每个块。因为之前类分布是经验, π (主题是移动)的变化适合流程每个块。

适合增量朴素贝叶斯学习当你知道所有的类名的数据。

考虑培训设备来预测一个主题是否坐着,站着,散步,跑步,或者跳舞基于生物特征数据的测量。类名映射1到5的活动。同时,假设研究人员计划让每个类一致的设备。

创建一个增量为多级学习朴素贝叶斯模型。指定类名和前制服类分布。

一会= 1:5;Mdl = incrementalClassificationNaiveBayes (“类名”一会,“之前”,“统一”)
Mdl = incrementalClassificationNaiveBayes IsWarm: 0指标:[1 x2表]一会:(1 2 3 4 5)ScoreTransform:“没有一个”DistributionNames:“正常”DistributionParameters: {5} x0细胞属性,方法

Mdl是一个incrementalClassificationNaiveBayes模型对象。所有的属性是只读的。在培训期间,必须在观察标签Mdl.ClassNames

Mdl必须适合数据之前,您可以使用它来执行任何其他操作。

载入人类活动数据集。随机洗牌数据。

负载humanactivityn =元素个数(actid);rng (1);%的再现性idx = randsample (n, n);X =壮举(idx:);Y = actid (idx);

细节的数据集,输入描述在命令行中。

适应增量式模型通过使用训练数据适合函数。模拟数据流处理的50块一次观察。在每一次迭代:

  • 50的观察过程。

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

  • 存储意味着在第一节课的第一个预测 μ 11 和主题是移动的先验概率(Y> 2)看看这些参数增量学习中发展。

%预先配置numObsPerChunk = 50;nchunk =地板(n / numObsPerChunk);mu11 = 0 (nchunk, 1);priormoved = 0 (nchunk, 1);%增量式拟合j = 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));结束

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

在增量学习看到参数如何演变,把它们在不同的瓷砖。

t = tiledlayout (2, 1);nexttile情节(mu11) ylabel (“\ mu_ {11}”)包含(“迭代”)轴nexttile情节(priormoved) ylabel (‘\π(主题是移动))包含(t)“迭代”)轴

图包含2轴对象。坐标轴对象1包含一个类型的对象。坐标轴对象2包含一个类型的对象。

适合更新后的预测分布过程每个块。因为之前的类分布被指定为制服, π (主题是移动)= 0.6,不改变适合流程每个块。

火车通过使用朴素贝叶斯分类模型fitcnb,将它转换成一个增量学习,跟踪其性能在流数据,然后适应模型数据。指定观察权重。

加载和数据预处理

载入人类活动数据集。随机洗牌数据。

负载humanactivityrng (1);%的再现性n =元素个数(actid);idx = randsample (n, n);X =壮举(idx:);Y = actid (idx);

细节的数据集,输入描述在命令行中。

假设一个固定的数据主题(Y< = 2)双数据从一个移动的质量问题。创建一个重量变量分配一个重量2从固定观察主体和1到一个移动的主题。

W = 1 (n, 1) + (Y < = 2);

朴素贝叶斯分类模型进行训练

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

idxtt = randsample((真假),n, true);TTMdl = fitcnb (X (idxtt:), Y (idxtt),“重量”W (idxtt))
TTMdl = ClassificationNaiveBayes ResponseName:‘Y’CategoricalPredictors::[]类名(1 2 3 4 5)ScoreTransform:“没有一个”NumObservations: 12053 DistributionNames: {1} x60细胞DistributionParameters: {5} x60细胞属性,方法

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

转换训练模型

传统训练模型转换为一个朴素贝叶斯分类模型的增量学习。

IncrementalMdl = incrementalLearner (TTMdl)
IncrementalMdl = incrementalClassificationNaiveBayes IsWarm: 1指标:[1 x2表]一会:(1 2 3 4 5)ScoreTransform:“没有一个”DistributionNames: {1} x60细胞DistributionParameters: {5} x60细胞属性,方法

IncrementalMdl是一个incrementalClassificationNaiveBayes模型。因为类名称中指定IncrementalMdl.ClassNames必须的,标签在增量学习中遇到IncrementalMdl.ClassNames

分别跟踪性能指标和模型

对其余的数据执行增量学习使用updateMetrics适合功能。在每一次迭代:

  1. 模拟数据流处理50观测一次。

  2. 调用updateMetrics更新的累积和窗口最小成本模型的输入块的观察。覆盖前面的增量式模型更新的损失指标财产。注意,函数不符合模型的一部分数据,大部分是“新”的数据模型。指定观察权重。

  3. 存储的最小成本。

  4. 调用适合适合的模型输入块的观察。覆盖前面的增量式模型更新模型参数。指定观察权重。

%预先配置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.Metrics {“MinimalCost”,:};IncrementalMdl =适合(IncrementalMdl自(idx:), Yil (idx),“重量”会(idx));结束

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

或者,您可以使用updateMetricsAndFit更新模型的性能指标给定一个新的数据块,然后适应模型数据。

画一个跟踪性能指标的情节。

h =情节(mc.Variables);xlim ([0 nchunk]) ylabel (“最小成本”传奇(h, mc.Properties.VariableNames)包含(“迭代”)

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

累计损失逐渐稳定,而窗口失去跳跃在整个培训。

逐步培养朴素贝叶斯分类模型只有当性能就会降低。

载入人类活动数据集。随机洗牌数据。

负载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。

  • 当跟踪性能和装配,覆盖前面的增量式模型。

  • 存储错误分类错误率的意思是第二等的预测 μ 21 看他们如何训练中发展。

  • 跟踪时适合火车模型。

%预先配置numObsPerChunk = 100;地板nchunk = ((n - initobs) / numObsPerChunk);mu21 = 0 (nchunk, 1);ce = array2table (nan (nchunk, 2),“VariableNames”,(“累积”“窗口”]);训练= false (nchunk, 1);%增量式拟合j = 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.Metrics {“ClassificationError”,:};如果ce {j 2} > 0.05 Mdl =适合(Mdl X (idx:), Y (idx));训练(j) = true;结束mu21 (j) = Mdl.DistributionParameters {1}, (1);结束

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

模型的性能和 μ 21 进化在训练,放到单独的瓷砖。

t = tiledlayout (2, 1);nexttile情节(mu21)情节(找到(训练),mu21(训练),“r”。)xlim ([0 nchunk]) ylabel (“\ mu_ {21}”)传说(“\ mu_ {21}”,培训发生的,“位置”,“最佳”)举行nexttile情节(ce.Variables) xlim ([0 nchunk]) ylabel (“误分类错误率”)传说(ce.Properties.VariableNames“位置”,“最佳”)包含(t)“迭代”)

图包含2轴对象。坐标轴对象1包含2线类型的对象。这些对象代表\ mu_{21}、培训。坐标轴对象包含2线类型的对象。这些对象代表累积,窗口。

跟踪的情节 μ 21 显示时间的常量值,在此期间,先前的观察窗内的损失最多是0.05。

输入参数

全部折叠

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

块的预测数据模型是合适的,指定为一个n——- - - - - -Mdl.NumPredictors浮点矩阵。

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

请注意

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

数据类型:|

块的标签模型是合适的,指定分类,字符,或字符串数组,逻辑或浮点向量,或单元阵列的特征向量。

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

适合问题时一个错误或满足这两个条件:

  • Y包含一个新的标签和类的最大数量已经达到(参见MaxNumClasses一会参数的incrementalClassificationNaiveBayes)。

  • 一会输入模型的属性Mdl非空的,数据类型的YMdl.ClassNames是不同的。

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

块的观察重量、指定为一个浮点向量的积极的价值观。适合重的观察X与相应的值权重。的大小权重必须等于n,观测的数量X

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

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

数据类型:|

请注意

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

输出参数

全部折叠

更新的朴素贝叶斯分类模型的增量学习,作为一个增量学习模型对象返回相同的数据类型作为输入模型Mdl,一个incrementalClassificationNaiveBayes对象。

除了更新分布模型参数,适合当执行以下操作Y包含预期,但未经加工的,类:

  • 如果你不指定所有预期通过使用类一会名称-值参数当您创建输入模型Mdl使用incrementalClassificationNaiveBayes,适合:

    1. 附加任何新的标签Y的尾巴Mdl.ClassNames

    2. 扩展Mdl.Cost到一个c——- - - - - -c矩阵,c类的数量在吗Mdl.ClassNames。由此产生的误分类代价矩阵是平衡的。

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

  • 如果您指定所有预期类当您创建输入模型Mdl或将使用传统训练朴素贝叶斯模型incrementalLearner,但你不指定一个误分类代价矩阵(Mdl.Cost),适合集误分类代价的类来处理1和未处理的类。例如,如果适合流程的第一个两个类可能的三个类,Mdl.Cost[0 1南;1 0南;1 1 0)

更多关于

全部折叠

Bag-of-Tokens模型

在bag-of-tokens模型中,预测的价值j出现次数非负的令牌j在观察。类别的数量(箱)多项式模型是不同的令牌的数量(预测)。

提示

  • 与传统的培训、增量学习可能没有一个单独的测试(抵抗)。因此,将每个传入的数据作为测试集,通过增量式模型和每个传入的块updateMetrics在训练模型相同的数据。

算法

全部折叠

正态分布估计

如果预测变量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 {k,j}。与添加剂平滑[1],估计概率

P ( 令牌 j | k ) = 1 + c j | k P + c k ,

地点:

  • c j | k = n k { : y = k } x j w { : y = k } w , 出现次数加权的令牌是什么j在课堂上k

  • nk在课堂观察的数量吗k

  • w 是观察的重量吗。软件可实现重量在一个类,这样他们和这个类的先验概率。

  • c k = j = 1 P c j | k , 的总加权数在课堂上出现的所有令牌k

多元多项式估计概率分布

如果预测变量j有一个有条件的多元多项式分布(见DistributionNames属性),软件遵循这个过程:

  1. 软件收集一系列独特的水平,存储排序列表CategoricalLevels,认为每个级别一个本。每个预测和类是一个独立,独立随机变量多项式。

  2. 为每一个类k,软件计算的实例使用列表存储在每个分类级别CategoricalLevels {j}

  3. 软件商店的概率预测j在课堂上k有水平l在房地产DistributionParameters {k,j}所有水平CategoricalLevels {j}。与添加剂平滑[1],估计概率

    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 如果xij=l,否则和0。

    • w 是观察的重量吗。软件可实现重量在一个类,这样他们和这个类的先验概率。

    • j不同水平预测的数量吗j

    • k加权类的观测数量吗k

观察权重

为每个条件预测分布,适合计算加权平均和标准偏差。

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

如果类概率分布是经验之前,软件可实现指定观察权重之和为1每次调用适合

引用

[1]曼宁,克里斯托弗·D。,Prabhakar Raghavan, and Hinrich Schütze.信息检索概论》,纽约:剑桥大学出版社,2008年。

版本历史

介绍了R2021a

全部展开