主要内容

incrementalClassificationNaiveBayes

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

描述

incrementalClassificationNaiveBayes函数创建一个incrementalClassificationNaiveBayes模型对象,它代表了一种朴素贝叶斯多类分类模型的增量学习。

不像其他的统计和机器学习工具箱™模型对象,incrementalClassificationNaiveBayes可以直接调用。此外,您可以指定学习选项,例如性能指标配置和类概率之前,数据拟合模型。当你创建一个incrementalClassificationNaiveBayes对象,它是准备增量学习

incrementalClassificationNaiveBayes最适合增量学习。传统训练方法的朴素贝叶斯模型多类分类(如创建模型通过拟合数据,进行交叉验证,优化hyperparameters,等等),看到的fitcnb

创建

您可以创建一个incrementalClassificationNaiveBayes模型对象在几个方面:

  • 直接调用这个函数——配置增量学习的选项,或指定learner-specific选项,通过调用incrementalClassificationNaiveBayes直接。这种方法是最好的,当你没有数据或你想立即开始增量学习。您必须指定的最大数量的类或类名预计在响应数据增量学习。

  • 将传统的训练模式——初始化一个增量学习使用朴素贝叶斯分类模型的模型参数训练模型对象(ClassificationNaiveBayes),您可以将传统的训练模式incrementalClassificationNaiveBayes模型对象通过它incrementalLearner函数。

  • 增量学习函数的调用- - - - - -适合,updateMetrics,updateMetricsAndFit接受一个配置incrementalClassificationNaiveBayes模型对象和数据作为输入,并返回一个incrementalClassificationNaiveBayes模型对象更新的信息从输入模型和数据。

描述

例子

Mdl= incrementalClassificationNaiveBayes (“MaxNumClasses”,MaxNumClasses)返回一个默认增量学习模型对象朴素贝叶斯分类,Mdl,在那里MaxNumClasses类的最大数量预计在响应数据增量学习。属性的默认模型包含未知模型参数占位符。你必须训练一个默认的模型之前,您可以跟踪它的性能或生成预测。

例子

Mdl= incrementalClassificationNaiveBayes(“类名”,一会)指定所有类名一会在增量学习预期的响应数据,设置一会财产。

例子

Mdl= incrementalClassificationNaiveBayes (___,名称,值)以前使用的语法属性并使用名称-值参数附加选项。附上每个名称加上引号。例如,incrementalClassificationNaiveBayes (“DistributionNames”、“锰”、“MaxNumClasses”, 5, MetricsWarmupPeriod, 100)指定的共同条件分布预测变量多项式,集类预期响应数据的最大数量5,并设置指标预热期One hundred.

输入参数

全部展开

最大数量的类将在响应数据增量学习期间,指定为一个正整数。

MaxNumClasses设置的类名一会财产。

如果你不指定MaxNumClasses,你必须指定一会论点。

例子:“MaxNumClasses”, 5

数据类型:|

所有独特的类标签在增量学习预期响应数据,分类,指定字符,或字符串数组;逻辑或数值向量;或细胞的特征向量。一会和响应的数据必须具有相同的数据类型。这个参数设置一会财产。

一会指定的顺序的输入或输出参数维度对应于类订单。例如,设置“类名”指定的尺寸成本或返回的列的顺序分类的分数预测

如果你不指定一会,你必须指定MaxNumClasses论点。在这种情况下,软件推断一会在增量学习属性的数据。

例子:“类名”,“virginica”“setosa”“癣”)

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

名称-值参数

指定可选的双参数作为Name1 = Value1,…,以=家,在那里的名字参数名称和吗价值相应的价值。名称-值参数必须出现在其他参数,但对的顺序无关紧要。

R2021a之前,用逗号来分隔每一个名称和值,并附上的名字在报价。

例子:“NumPredictors”4“之前”,(0.3 0.3 0.4)指定4变量在预测数据和之前类的概率分布(0.3 0.3 0.4)

成本分类的观察,在这个表指定为一个值,c类的数量吗一会属性:

价值 描述
c——- - - - - -c数字矩阵

成本(,j)分类的成本是一个观察到班呢j当它真正的类类的,类名()类名(j)。换句话说,行对应于真正的阶级和列对应于预测类。例如,成本= [0 2;1 0]适用于双分类的点球类名(1)比分类类名(2)

结构数组

一个结构数组中有两个领域:

  • 一会包含类名称,相同的值一会

  • ClassificationCosts包含成本矩阵,如前所述。

如果您指定成本,您还必须指定一会论点。成本设置成本财产。

默认的是以下选择:

  • 一个空数组[]当你指定MaxNumClasses

  • 一个c——- - - - - -c当你指定矩阵一会,在那里成本(,j)= 1对所有j,成本(,j)= 0对所有=j

例子:“成本”,结构(“类名”,{' b ', ' g '},“ClassificationCosts”, [0 2;1 0])

数据类型:||结构体

在增量学习模型性能指标跟踪,除了最小的误分类代价,指定为一个内置的损失函数的名字,名字,函数的字符串向量处理(例如,@metricName)、结构的功能处理或细胞向量的名字,函数处理,或结构数组。

Mdl温暖的(见IsWarm),updateMetricsupdateMetricsAndFit跟踪的性能指标指标的属性Mdl

下表列出了内置的损失函数的名字。您可以指定多个通过使用一个字符串向量。

的名字 描述
“binodeviance” 二项异常
“classiferror” 误分类错误率
“指数” 指数
“枢纽” 铰链
“分对数” 物流
“mincost”

最小的预期的误分类代价(后验概率的分类评分)。incrementalClassificationNaiveBayes一直跟踪这个指标。

“二次” 二次

内置的损失函数的更多细节,请参阅损失

例子:“指标”,(“classiferror”“分对数”)

指定一个自定义函数,返回一个性能指标,使用函数处理符号。函数必须有这种形式。

度量= customMetric (C、S、成本)

  • 输出参数度规是一个n1数字向量,其中每个元素是损失相应的观测数据处理的增量学习函数在一个学习周期。

  • 你指定的函数名称(在这里,customMetric)。

  • C是一个n——- - - - - -K逻辑矩阵行指示类对应的观测所属,K类的数量。列顺序对应于类秩序一会财产。创建C通过设置C (p,)=1,如果观察p是在课堂上指定的数据,对于每一个观察。设置行中的其他元素p0

  • 年代是一个n——- - - - - -K数字矩阵的预测分类的分数。年代类似于的输出预测,行对应于观测数据和列顺序对应于类秩序一会财产。S (p,)分类的观察吗p在课堂上被分类

  • 成本是一个K——- - - - - -K数字矩阵的误分类代价。看到“成本”名称-值参数。

指定多个自定义指标和分配自定义名称,使用结构数组。指定一个内置的和自定义指标的组合,使用细胞向量。

例子:“指标”,结构(‘Metric2’,‘Metric1’, @customMetric1 @customMetric2)

例子:“指标”,{@customMetric1 @customMetric2分对数的结构(Metric3, @customMetric3)}

updateMetricsupdateMetricsAndFit中的一个表中存储指定的指标指标财产。的数据类型指标决定了行表的名称。

“指标”值数据类型 的描述指标属性行名称 例子
字符串或字符向量 相应的内置的度量 行名称“classiferror”“ClassificationError”
结构数组 字段名 行名称结构(Metric1, @customMetric1)“Metric1”
函数句柄函数存储在程序文件中 函数的名字 行名称@customMetric“customMetric”
匿名函数 CustomMetric_j,在那里j是度量j指标 行名称@ (C、S、成本)customMetric (C、S、成本)…CustomMetric_1

性能指标选择的更多细节,请参阅性能指标

数据类型:字符|字符串|结构体|细胞|function_handle

属性

全部展开

你可以通过使用名称-值对设置大多数属性参数语法只有当你调用incrementalClassificationNaiveBayes直接。你可以设置一些属性,当你调用incrementalLearner将传统的训练模式。你不能设置属性DistributionParameters,IsWarm,NumTrainingObservations

分类模型参数

这个属性是只读的。

分类预测表,在这个表指定为一个值。

价值 描述
向量的正整数

向量索引值中的每个条目对应的列包含一个分类变量的预测数据。索引值介于1和NumPredictors

逻辑向量 一个真正的条目意味着预测数据的对应的列是一个分类变量。向量的长度NumPredictors
“所有” 所有预测都直言。

确定分类预测,incrementalClassificationNaiveBayes使用多元多项式分布。更多细节,请参阅DistributionNames

默认情况下,如果你指定DistributionNames选项,所有预测变量对应“mvmn”是绝对的。否则,所有的分类预测变量。

例子:“CategoricalPredictors”, [1 2 4]“CategoricalPredictors”,真的真的假的真指定第一个、第二个和第四个四个预测变量的分类。

数据类型:||逻辑

水平的多元多项式预测变量指定为一个细胞向量。的长度CategoricalLevels等于NumPredictors

增量式拟合函数适合updateMetricsAndFit填充细胞与学习数字每个分类预测变量的绝对水平,而细胞对应于其他预测变量包含一个空数组[]。具体来说,如果预测j是多元多项式,CategoricalLevels {j}是一个列表的所有不同值的预测j在增量式拟合经验丰富。更多细节,请参阅DistributionNames财产。

请注意

不像fitcnb,拟合函数增量订单预测作为函数的水平经验在训练。例如,假设预测j与多元多项式分布分类。水平的顺序CategoricalLevels {j}因此,订单在每个细胞水平的概率DistributionParameters {: j}返回的增量式拟合函数可以从返回的顺序不同fitcnb同样的训练数据集。

这个属性是只读的。

成本分类的观察,指定为一个数组。

如果你指定“成本”名称-值参数,其值集成本。如果你指定一个结构数组,成本的价值吗ClassificationCosts字段。

如果你把一个传统训练模型创建Mdl,成本成本财产的传统训练模式。

数据类型:|

这个属性是只读的。

所有独特的类标签将在响应数据增量学习期间,指定为一个类别或字符数组,一个逻辑或数值向量,或单元阵列的特征向量。

你可以设置一会在三种方式之一:

  • 如果你指定MaxNumClasses参数,软件推断一会房地产在增量学习。

  • 如果你指定一会参数,incrementalClassificationNaiveBayes存储你的规范一会财产。(软件对字符串数组作为细胞阵列特征向量)。

  • 如果你把一个传统训练模型创建Mdl,一会属性指定相应的属性的传统训练模式。

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

这个属性是只读的。

指定数量的预测变量,作为一个非负数字标量。

默认的NumPredictors价值取决于你如何创建模型:

  • 如果你把一个传统训练模型创建Mdl,NumPredictors指定相应的属性的传统训练模式。

  • 如果您创建Mdl通过调用incrementalClassificationNaiveBayes直接,您可以指定NumPredictors通过使用名称-值参数的语法。如果你不指定值,那么默认值是0推断,增量式拟合函数NumPredictors培训期间的预测数据。

数据类型:

这个属性是只读的。

观察适合增量模型的数量Mdl指定为一个非负数字标量。NumTrainingObservations当你通过增加Mdl和训练数据适合updateMetricsAndFit

请注意

如果你把一个传统训练模型创建Mdl,incrementalClassificationNaiveBayes不会增加观测的数量符合传统的训练模式NumTrainingObservations

数据类型:

这个属性是只读的。

类概率之前,指定为“经验”,“统一”,或者一个数值向量。incrementalClassificationNaiveBayes存储之前值作为一个数值向量。

价值 描述
“经验” 增量学习函数之前推断从观察类类概率增量训练期间相对频率响应数据。
“统一” 对于每个类,先验概率是1 /K,在那里K类的数量。
数值向量 习惯,规范化的先验概率。元素的顺序之前对应的元素一会财产。

默认的之前价值取决于你如何创建模型:

  • 如果你把一个传统训练模型创建Mdl,之前指定相应的属性的传统训练模式。

  • 否则,默认值的之前“经验”

数据类型:||字符|字符串

这个属性是只读的。

分数转换函数描述如何增量学习函数变换原始响应值,指定为一个特征向量,字符串标量,或函数处理。incrementalClassificationNaiveBayes存储指定值作为特征向量或函数处理。

这个表得分变换描述可用的内置函数。

价值 描述
“doublelogit” 1 / (1 +e2x)
“invlogit” 日志(x/ (1 -x))
“ismax” 集类的分数最大的分数为1,并设置所有其他类的分数为0
“分对数” 1 / (1 +e- - - - - -x)
“没有”“身份” x(转换)
“标志” 1x< 0
为0x= 0
1x> 0
“对称” 2x- 1
“symmetricismax” 集合类的分数最大的分数为1,和所有其他类的分数设置为1
“symmetriclogit” 2 / (1 +e- - - - - -x)- 1

对于一个MATLAB®函数或你定义一个函数,输入它的功能处理;例如,@函数,地点:

  • 函数接受一个n——- - - - - -K矩阵(原来的分数),并返回一个相同大小的矩阵(转换后的分数)。

  • n是观测的数量,和行吗j矩阵包含类的分数的观察j

  • K是类的数量,和列k是类类名(k)

默认的ScoreTransform价值取决于你如何创建模型:

  • 如果你把一个传统训练模型创建Mdl,ScoreTransform指定相应的属性的传统训练模式。

  • 默认的“没有”指定返回后类概率。

数据类型:字符|function_handle|字符串

训练参数

预测分布P (x|ck),ck是类类名(k)指定为一个特征向量或字符串标量,或1 -NumPredictors字符串向量或细胞与从表中值特征向量的向量。

价值 描述
“锰” 多项分布。如果您指定“锰”多项分布的,那么所有功能组件(例如,一个bag-of-tokens模型)。因此,您不能包含“锰”作为一个字符串数组的一个元素或者一个单元阵列的特征向量。有关详细信息,请参见估计概率多项式分布
“mvmn” 多元多项式分布。有关详细信息,请参见多元多项式估计概率分布
“正常” 正态分布。有关详细信息,请参见正态分布估计

如果您指定一个特征向量或字符串标量,那么软件模型使用分配的所有特性。如果你指定一个1 -NumPredictors字符串向量或细胞特征向量的向量,软件模型特性j使用元素的分布j的向量。

默认情况下,软件集所有预测指定为分类预测(见CategoricalPredictors财产)“mvmn”。否则,默认的分布“正常”

incrementalClassificationNaiveBayes存储值作为特征向量或细胞特征向量的向量。

例子:“DistributionNames”、“锰”指定所有预测变量的共同条件分布多项式。

例子:“DistributionNames”,(“正常”“mvmn”“正常”]指定第一个和第三个预测变量是正态分布,第二个变量分类与多元多项式分布。

数据类型:字符|字符串|细胞

这个属性是只读的。

分布参数的估计,指定为一个单元阵列。DistributionParameters是一个K——- - - - - -NumPredictors单元阵列,K类的数量和细胞(k,j)包含分布参数估计预测的实例j在课堂上k。订单的行对应订单的类属性一会,列的顺序对应订单预测的预测数据。

如果类k没有预测的观察j,然后DistributionParameters {k,j}是空的([])。

的元素DistributionParameters依赖于分布的预测。此表描述中的值DistributionParameters {k,j}

分布的预测j 单元阵列的预测价值j和类k
“锰” 一个标量表示令牌的概率j出现在课堂上k。有关详细信息,请参见估计概率多项式分布
“mvmn” 一个数值向量包含每个可能的概率预测的水平j在课堂上k。软件订单的概率顺序的所有独特的预测水平j(存储在属性中CategoricalLevels)。更多细节,请参阅多元多项式估计概率分布
“正常” 一个2×1数值向量。第一个元素是加权样本均值和第二个元素是加权样本标准差。更多细节,请参阅正态分布估计

请注意

不像fitcnb,拟合函数增量订单预测作为函数的水平经验在训练。例如,假设预测j与多元多项式分布分类。水平的顺序CategoricalLevels {j}因此,订单在每个细胞水平的概率DistributionParameters {: j}返回的增量式拟合函数可以从返回的顺序不同fitcnb同样的训练数据集。

数据类型:细胞

性能指标参数

标志指示是否跟踪性能指标增量模型,指定为逻辑0()或1(真正的)。

增量模型Mdl温暖的(IsWarm就变成了真正的当增量拟合函数执行这两种操作:

  • 增量模型MetricsWarmupPeriod观察。

  • 过程MaxNumClasses类或指定的类名一会名称-值参数。

价值 描述
真正的1 增量模型Mdl是温暖的。因此,updateMetricsupdateMetricsAndFit跟踪的性能指标指标的属性Mdl
0 updateMetricsupdateMetricsAndFit不跟踪性能指标。

数据类型:逻辑

这个属性是只读的。

在增量学习模型更新的性能指标updateMetricsupdateMetricsAndFit,指定为一个表有两列和行,是指定的指标的数量吗指标名称-值参数。

的列指标标记累积窗口

  • 累积:元素j模型的性能,以度量j从模型成为温暖的时间(IsWarm1)。

  • 窗口:元素j模型的性能,以度量j评估在所有指定的窗口内观察MetricsWindowSize财产。软件更新窗口后流程MetricsWindowSize观察。

行标记指定的指标。详情,请参阅指标名称-值参数incrementalLearnerincrementalClassificationNaiveBayes

数据类型:

这个属性是只读的。

数量的观察增量式模型之前必须适合其跟踪性能指标指标属性,指定为一个非负整数。

默认的MetricsWarmupPeriod价值取决于你如何创建模型:

  • 如果你把一个传统训练模型创建Mdl,MetricsWarmupPeriod名称-值参数的incrementalLearner函数设置这个属性。参数的默认值0

  • 否则,默认值是1000年

更多细节,请参阅性能指标

数据类型:|

这个属性是只读的。

数量的观察使用性能指标计算窗口,指定为一个正整数。

默认的MetricsWindowSize价值取决于你如何创建模型:

  • 如果你把一个传统训练模型创建Mdl,MetricsWindowSize名称-值参数的incrementalLearner函数设置这个属性。参数的默认值200年

  • 否则,默认值是200年

性能指标选择的更多细节,请参阅性能指标

数据类型:|

对象的功能

适合 火车朴素贝叶斯分类模型的增量学习
updateMetricsAndFit 在朴素贝叶斯更新性能指标增量学习分类模型给出新的数据和训练模式
updateMetrics 在朴素贝叶斯更新性能指标增量学习分类模型得到新的数据
logp 日志无条件概率密度的朴素贝叶斯分类模型的增量学习
损失 朴素贝叶斯损失增量学习对批数据分类模型
预测 从朴素贝叶斯预测反应的新观察增量学习分类模型
perObservationLoss 每观察分类错误的增量学习模型
重置 重置增量分类模型

例子

全部折叠

创建一个朴素贝叶斯分类模型的增量学习,您必须指定的最大数量的类你期望模型来处理(“MaxNumClasses”名称-值参数)。当你适应模型输入批次的数据通过使用增量拟合函数,模型收集的新类一会财产。如果指定的最大数量的类是不准确的,发生下列之一:

  • 增量函数拟合过程之前预期的最大数量的类,该模型是冷的。因此,updateMetricsupdateMetricsAndFit功能不测量性能指标。

  • 如果类的数量超过最大预期,一个错误的增量函数拟合问题。

这个例子展示了如何创建一个朴素贝叶斯分类模型的增量学习当你指定的唯一信息是预期的最大数量的类的数据。同时,示例说明了后果当增量拟合函数处理所有预期类样本的早期和晚期。

对于这个示例,考虑培训设备来预测一个主题是否坐着,站着,散步,跑步,跳舞或基于生物特征数据的测量。因此,该设备有一个最大的5类可供选择。

在样本早期过程预计最大数量的类

创建一个增量为多级学习朴素贝叶斯模型。指定一个最大的5类数据。

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

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

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

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

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

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

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

  • 50的观察过程。

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

  • 存储意味着在第一节课的第一个预测 μ 11 、累积度量和窗口指标增量学习期间看到他们如何演变。

%预先配置numObsPerChunk = 50;nchunk =地板(n / numObsPerChunk);(nchunk mc = array2table (0, 2),“VariableNames”,(“累积”“窗口”]);mu1 = 0 (nchunk, 1);%增量学习j = 1: nchunk ibegin = min (n, numObsPerChunk * (j - 1) + 1);iend = min (n, numObsPerChunk * j);idx = ibegin: iend;MdlEarly = updateMetricsAndFit (MdlEarly X (idx:), Y (idx));mc {j:} = MdlEarly.Metrics {“MinimalCost”,:};mu1 (j + 1) = MdlEarly.DistributionParameters {1 1} (1);结束

MdlEarly是一个incrementalClassificationNaiveBayes模型对象培训中的所有数据流。在增量学习模型是热身之后,updateMetricsAndFit检查模型的性能的观察,然后符合观测模型。

性能指标和 μ 11 进化在训练,放到单独的瓷砖。

t = tiledlayout (2, 1);nexttile情节(mu1) ylabel (“\ mu_ {11}”)xlim ([0 nchunk]) nexttile h =情节(mc.Variables);xlim ([0 nchunk]) ylabel (“最小成本”)参照线(MdlEarly.MetricsWarmupPeriod / numObsPerChunk,r -。传奇(h, mc.Properties.VariableNames)包含(t)“迭代”)

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

故事情节表明updateMetricsAndFit执行以下操作:

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

  • 计算后的性能指标度量预热期(红色垂直线)。

  • 在每一次迭代计算累积度量。

  • 计算窗口指标200年处理后观察(4迭代)。

在样品后期过程预计最大数量的类

创建一个不同的朴素贝叶斯模型的增量学习的目标。

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

将所有观测贴上类5月底的示例。

idx5 = Y = = 5;Xnew = [X (~ idx5,:);X (idx5:)];Ynew = [Y (~ idx5); Y (idx5)];

增量模型和阴谋的结果。

(nchunk mcnew = array2table (0, 2),“VariableNames”,(“累积”“窗口”]);mu1new = 0 (nchunk, 1);j = 1: nchunk ibegin = min (n, numObsPerChunk * (j - 1) + 1);iend = min (n, numObsPerChunk * j);idx = ibegin: iend;MdlLate = updateMetricsAndFit (MdlLate Xnew (idx:), Ynew (idx));mcnew {j:} = MdlLate.Metrics {“MinimalCost”,:};mu1new (j + 1) = MdlLate.DistributionParameters {1 1} (1);结束t = tiledlayout (2, 1);nexttile情节(mu1new) ylabel (“\ mu_ {11}”)xlim ([0 nchunk]) nexttile h =情节(mcnew.Variables);xlim ([0 nchunk]);ylabel (“最小成本”)参照线(MdlLate.MetricsWarmupPeriod / numObsPerChunk,r -。)参照线(和(~ idx5) / numObsPerChunk,“g -”。)传说(h, mcnew.Properties.VariableNames“位置”,“最佳”)包含(t)“迭代”)

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

updateMetricsAndFit功能训练在增量学习模型,但之后才开始跟踪性能指标函数模型是适合所有预期数量的类(在底部瓷砖绿色垂直线)。

创建一个增量朴素贝叶斯模型当你知道所有的类名的数据。

考虑培训设备来预测一个主题是否坐着,站着,散步,跑步,或者跳舞基于生物特征数据的测量。类名映射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必须适合数据之前,您可以使用它来执行任何其他操作。

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

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

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

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

  • 50的观察过程。

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

%预先配置numObsPerChunk = 50;nchunk =地板(n / numObsPerChunk);%增量学习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));结束

除了指定类名的最大数量,准备增量朴素贝叶斯学习者通过指定指标预热期,在此期间updateMetricsAndFit功能只适合模型。指定一个指标500观察的窗口大小。

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

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

类名映射1到5 activity-sitting,站立,行走,跑步,跳舞,分别以生物特征数据测量。细节的数据集,输入描述在命令行中。

创建一个增量为多级学习朴素贝叶斯模型。配置模型如下:

  • 指定一个度量预热期5000年的观察。

  • 指定一个指标500观察的窗口大小。

  • 双重处罚分类器时,错误地分类类2。

  • 跟踪分类误差和最小的成本来衡量模型的性能。你不需要指定“mincost”指标因为incrementalClassificationNaiveBayes一直跟踪这个指标。

C =的眼睛(5)- (5);C (2, 1 3 4 5) = 2;Mdl = incrementalClassificationNaiveBayes (“类名”1:5,“MetricsWarmupPeriod”,5000,“MetricsWindowSize”,500,“成本”C“指标”,“classiferror”)
Mdl = incrementalClassificationNaiveBayes IsWarm: 0指标:[2 x2表]一会:(1 2 3 4 5)ScoreTransform:“没有一个”DistributionNames:“正常”DistributionParameters: {5} x0细胞属性,方法

Mdl是一个incrementalClassificationNaiveBayes模型对象配置为增量学习。

适应增量式模型通过使用其余的数据updateMetricsAndFit函数。在每一次迭代:

  • 模拟数据流处理一块50的观察。

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

  • 商店中的第一个预测变量的标准差头等舱 σ 11 、累积度量和窗口指标增量学习期间看到他们如何演变。

%预先配置numObsPerChunk = 50;nchunk =地板(n / numObsPerChunk);ce = array2table (0 (nchunk, 2),“VariableNames”,(“累积”“窗口”]);(nchunk mc = array2table (0, 2),“VariableNames”,(“累积”“窗口”]);sigma11 = 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));ce {j:} = Mdl.Metrics {“ClassificationError”,:};mc {j:} = Mdl.Metrics {“MinimalCost”,:};sigma11 (j + 1) = Mdl.DistributionParameters {1}, (2);结束

Mdl是一个incrementalClassificationNaiveBayes模型对象培训中的所有数据流。在增量学习模型是热身之后,updateMetricsAndFit检查模型的性能的观察,然后符合观测模型。

性能指标和 σ 11 进化在训练,放到单独的瓷砖。

tiledlayout (2, 2) nexttile情节(sigma11) ylabel (“\ sigma_ {11}”)xlim ([0 nchunk]);参照线(Mdl.MetricsWarmupPeriod / numObsPerChunk,r -。)包含(“迭代”)nexttile h =情节(ce.Variables);xlim ([0 nchunk]) ylabel (分类错误的)参照线(Mdl.MetricsWarmupPeriod / numObsPerChunk,r -。传奇(h, ce.Properties.VariableNames)包含(“迭代”)nexttile h =情节(mc.Variables);xlim ([0 nchunk]);ylabel (“最小成本”)参照线(Mdl.MetricsWarmupPeriod / numObsPerChunk,r -。传奇(h, mc.Properties.VariableNames)包含(“迭代”)

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

故事情节表明updateMetricsAndFit执行以下操作:

  • 适合 σ 11 在增量学习迭代。

  • 计算后的性能指标度量预热期(红色垂直线)。

  • 在每一次迭代计算累积度量。

  • 计算窗口指标500年处理后观察(10迭代)。

火车的朴素贝叶斯模型采用多级分类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细胞属性,方法

分别跟踪性能指标和模型

对其余的数据执行增量学习使用updateMetrics适合功能。模拟数据流处理50观测一次。在每一次迭代:

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

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

  3. 存储的最小成本,意味着第一个预测变量的第一个类 μ 11

%预先配置idxil = ~ idxtt;nil =总和(idxil);numObsPerChunk = 50;nchunk =地板(nil / numObsPerChunk);(nchunk mc = array2table (0, 2),“VariableNames”,(“累积”“窗口”]);mu11 = [IncrementalMdl.DistributionParameters {1} (1);0 (nchunk 1)];自= 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));mu11 (j + 1) = IncrementalMdl.DistributionParameters {1 1} (1);结束

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

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

跟踪性能指标的情节和情节 μ 11

t = tiledlayout (2, 1);nexttile h =情节(mc.Variables);xlim ([0 nchunk]) ylabel (“最小成本”传奇(h, mc.Properties.VariableNames) nexttile情节(mu11) ylabel (“\ mu_ {11}”)xlim ([0 nchunk])包含(t)“迭代”)

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

累计损失水平迅速和稳定,而窗户损失跳跃在整个培训。

μ 11 突然发生了变化,然后逐渐平缓适合流程更块。

更多关于

全部展开

算法

全部展开

引用

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

版本历史

介绍了R2021a

全部展开

行为改变R2021b