主要内容

incrementalclassificanivebayes.

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

描述

incrementalclassificanivebayes.创建一个incrementalclassificanivebayes.模型对象,代表了一个天真的贝母用于增量学习的多款分类模型。incrementalclassificanivebayes.万博1manbetx支持正态分布的预测变量。

与其他统计和机器学习工具箱™模型对象不同,incrementalclassificanivebayes.可以直接调用。此外,在将模型与数据拟合之前,您可以指定学习选项,如性能指标配置和先验类概率。在创建incrementalclassificanivebayes.对象,它为之准备增量学习

incrementalclassificanivebayes.最适合于增量学习。对于一个传统的方法来训练朴素贝叶斯模型多类分类(例如,通过其拟合到数据,执行交叉验证,调谐超参数,等等创建模型),见fitcnb

创造

你可以创建一个incrementalclassificanivebayes.通过多种方式模型对象:

  • 直接调用函数- 通过调用来配置增量学习选项或指定特定于学习者的选项incrementalclassificanivebayes.直接。这种方法是最好的,当你没有数据还没有,或者你想立即启动增量学习。您必须指定的类或有望在增量学习过程中的响应数据的所有类名的最大数量。

  • 转换传统训练模式—使用训练过的朴素贝叶斯模型对象的模型参数初始化朴素贝叶斯分类模型进行增量学习,可以将传统训练过的模型转换为incrementalclassificanivebayes.模型对象,将其传递给incrementalLearner函数。

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

描述

例子

Mdl= incrementalclassificaiveBayes('maxnumclasses',MaxNumClasses为增量学习返回默认朴素贝叶斯分类模型对象,Mdl,在哪里MaxNumClasses为增量学习过程中响应数据中期望的最大班级数。默认模型的属性包含未知模型参数的占位符。您必须训练一个默认模型,然后才能跟踪它的性能或从它生成预测。

例子

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

例子

Mdl= incrementalClassificationNaiveBayes (___名称,值使用前面语法中的任何输入参数组合来设置属性以及使用名称-值对参数的其他选项。把每个名字用引号括起来。例如,increntmentalclassificaivebayes('maxnumclasses',5,'metricswarmupperiod',100)将响应数据中期望的最大类数设置为5,并将度量预热时间设置为One hundred.

输入参数

全部展开

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

如果没有指定MaxNumClasses,则必须指定一会论点。在这种情况下,MaxNumClasses类名的数量在吗一会

示例:'maxnumclasses',5

数据类型:|双人间

增量学习过程中响应数据中所期望的所有唯一类标签,指定为类别数组或字符数组;逻辑、数字或字符串向量,或字符向量的单元格数组。一会响应数据必须具有相同的数据类型。一会设置一会财产。

一会指定与类顺序相对应的任何输入或输出参数维度的顺序。例如,设置“类名”指定的维度的顺序成本或分类分值的列顺序返回由预测

如果没有指定一会,则必须指定MaxNumClasses论点。在这种情况下,软件会推断MaxNumClasses一会从增量学习的数据。

示例:“类名”,“virginica”“setosa”“癣”}

数据类型:|双人间|逻辑||字符|细胞|明确的

名称-值对的观点

指定可选的逗号分隔的对名称,值论点。的名字参数名和价值为对应值。的名字必须出现在引号内。可以以任意顺序指定多个名称和值对参数name1,value1,...,namen,valuen

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

将一个观察错误分类的代价,在本表中指定为值,其中为MaxNumClasses是课程的数量一会属性:

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

成本(i, j)将观察结果分类的成本是多少j当它真正的阶级是.换句话说,行对应于真正的类,列对应于预测的类。例如,成本= [0 2; 1 0]对分类错误处以双倍罚款Classnames(1)比分类Classnames(2)

结构数组

有两个字段的结构数组:

  • 一会包含类名的,值与一会

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

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

默认为MaxNumClasses——- - - - - -MaxNumClasses矩阵,成本(j)= 1为所有人j,成本(j)= 0.为所有人j

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

数据类型:|双人间|结构体

模型性能指标在增量学习期间跟踪,除了最小预期的错误分类成本之外,指定为内置丢失函数名称,名称字符串矢量,功能句柄(@metricName)、函数句柄的结构数组,或名称、函数句柄或结构数组的单元向量。

什么时候Mdl温暖(参见IsWarm),updateMetricsupdateMetricsAndFit跟踪性能指标指标的属性Mdl

下表列出了内置的loss函数名称。可以使用字符串向量指定多个。

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

最小的预期误分类代价(后验概率分类分数)。incrementalclassificanivebayes.始终跟踪这个指标。

“二次” 二次

有关内置损耗功能的更多详细信息,请参阅损失

示例:'METRICS',[“ClassifError”“Logit”]

若要指定返回性能指标的自定义函数,请使用函数句柄表示法。函数必须是这样的形式:

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

  • 输出参数公制是一个n×1数值向量,其中每个元素是在由增量学习功能所处理的数据对应的观察的学习周期期间的损失。

  • 你选择的函数名(customMetric).

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

  • 年代是一个n——- - - - - -K预测分类分数的数值矩阵。年代类似于的输出预测,其中行对应于数据中的观察值,列顺序对应于一会财产。S (p是观察的分类评分p被分类

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

若要指定多个自定义指标并为每个指标分配自定义名称,请使用结构数组。要指定内置指标和自定义指标的组合,请使用单元格向量。

示例:'指标',struct('metric1',@ custommetric1,'metric2',@ custommetric2)

示例:'Metrics',{@customMetric1 @ custommetric2 'logit' struct('Metric3',@customMetric3)}

updateMetricsupdateMetricsAndFit的表中存储指定的指标指标财产。数据类型指标确定表的行名。

“指标”值数据类型 描述指标属性行名称 例子
字符串或字符向量 相应的内置度量的名称 行名称“classiferror”“ClassificationError”
结构数组 字段名称 行名称结构(Metric1, @customMetric1)“Metric1”
功能手柄功能存储在程序文件 功能名称 行名称@customMetric“customMetric”
匿名函数 CustomMetric_j,在哪里j是度量j指标 行名称@(c,s,成本)定制(c,s,成本)......CustomMetric_1.

有关性能指标选项的详细信息,请参见性能指标

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

属性

全部展开

您可以仅在调用时使用名称-值对参数语法设置大多数属性incrementalclassificanivebayes.直接。您可以在调用时设置一些属性incrementalLearner转变传统的训练模式。您无法设置属性DistributionParametersIsWarm,NumTrainingObservations

分类模型参数

此属性是只读的。

将观察结果错误分类的成本,指定为MaxNumClasses——- - - - - -MaxNumClasses数字矩阵。

如果指定“成本”名称-值参数,它的值设置成本.如果你指定一个结构数组,成本价值是多少ClassificationCosts领域。

如果你转换传统训练的模型来创建Mdl成本成本传统训练模型的性质。

数据类型:|双人间

此属性是只读的。

增量学习期间响应数据中所期望的所有唯一类标签,指定为类别或字符数组、逻辑或数字向量,或字符向量的单元数组。

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

  • 如果指定一会的说法,incrementalclassificanivebayes.将您的规范存储在一会.如果你指定一个字符串向量,incrementalclassificanivebayes.将其存储为字符向量的单元格数组。

  • 如果你转换传统训练的模型来创建Mdl一会一会传统训练模型的性质。

数据类型:|双人间|逻辑|字符|细胞|明确的

此属性是只读的。

预测器变量的数量,指定为非负数值标量。

如果你转换传统训练的模型来创建MdlNumPredictors由传统训练模型的同余性来确定。否则,增量拟合函数推断NumPredictors从训练期间的预测数据。

数据类型:双人间

此属性是只读的。

观测值的数量符合增量模型Mdl,指定为非负数值标量。NumTrainingObservations通过时增加Mdl和培训数据适合updateMetricsAndFit

请注意

如果你转换传统训练的模型来创建Mdlincrementalclassificanivebayes.不添加适合传统培训的模型的观察数NumTrainingObservations

数据类型:双人间

此属性是只读的。

先验类概率,在该表中指定为一个值。您可以使用名称-值对参数语法设置此属性,但是incrementalclassificanivebayes.始终存储数字矢量。

价值 描述
'经验性' 增量学习功能在增量训练期间从观察到的类相对频率推断出从观察到的类相对频率的先前概率。
'制服' 对于每个类,先前概率是1 /K,在哪里K为类数。
数值向量 自定义,标准化先验概率。的元素的顺序之前对应于的元素一会财产。

  • 如果你转换传统训练的模型来创建Mdlincrementalclassificanivebayes.使用之前传统训练模型的性质。

  • 否则,之前'经验性'

数据类型:|双人间

此属性是只读的。

分数转换函数,描述增量学习函数如何转换原始响应值(指定为字符向量、字符串标量或函数句柄)。incrementalclassificanivebayes.将指定的值存储为字符向量或函数句柄。

该表描述用于分数转换的可用内置函数。

价值 描述
“doublelogit” 1 /(1 +e-2x
'invlogit' 日志(x/ (1 -x))
“ismax” 将分数最大的班级的分数设置为1,并将所有其他班级的分数设置为0
分对数的 1 /(1 +e- - - - - -x
“没有”“身份” x(转换)
'签名' -1 for.x< 0
0x= 0
1x> 0
'对称' 2x- 1
'ymmetricismax' 设置得分与得分最高的类1,并设置分数为所有其他类-1
'symmetriclogit' 2 / (1 +e- - - - - -x) - 1

对于一个MATLAB®函数或定义的函数输入其功能句柄;例如,'scoretransform',@函数,地点:

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

  • n是观察的次数,和行数j矩阵中包含观察的类分数j

  • K是类数,和列数吗k是类类名(k

如果你转换传统训练的模型来创建MdlScoreTransform由传统训练模型的同余性来确定。

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

数据类型:字符|function_handle

训练参数

此属性是只读的。

预测器分布,指定为“正常”或者一个1-by-NumPredictors包含所有单元格的单元格数组“正常”.条件分布P(xj|ck)为正态(高斯态),为j= 1,...,NumPredictors和每个k一会

数据类型:字符||细胞

此属性是只读的。

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

如果类k没有对预测器的观察吗j,然后DistributionParameters {kj是空的([]).

因为所有的预测器分布,由DistributionNames财产,是“正常”,每个细胞DistributionParameters是一个2 × 1的数字向量,其中第一个元素是样本均值,第二个元素是样本标准差。

数据类型:细胞

性能指标参数

标志,指示增量模型是否跟踪性能指标,指定为真正的

增量模型Mdl温暖IsWarm就变成了真正的)时,增量拟合函数同时执行以下两种操作:

  • 适合增量模型MetricsWarmupPeriod观察。

  • 过程MaxNumClasses班,或在指定的所有类名一会名称-值参数。

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

数据类型:逻辑

此属性是只读的。

在增量学习期间更新的模型性能度量updateMetricsupdateMetricsAndFit,指定为具有两列和的表行,度量标准的数量是否由“指标”名称-值对的论点。

的列指标被标记为累积

  • 累积:元素j模型的性能是否通过度量标准来衡量j,从模型变暖时开始(IsWarm1).

  • :元素j模型的性能是否通过度量标准来衡量j,对指定窗口内的所有观察值进行评估MetricsWindowSize财产。软件更新后处理MetricsWindowSize观察。

行由指定的指标标记。有关详细信息,请参见“指标”

数据类型:表格

此属性是只读的。

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

有关更多详细信息,请参阅性能指标

数据类型:|双人间

此属性是只读的。

观测数用来计算窗的性能度量,指定为一个正整数。

有关性能指标选项的详细信息,请参见性能指标

数据类型:|双人间

对象的功能

适合 培训天真贝叶斯增量学习的分类模型
updateMetricsAndFit 在给定新数据和训练模型的情况下,更新朴素贝叶斯分类模型的增量学习性能指标
updateMetrics 更新朴素贝叶斯分类模型的性能指标,用于给定新数据的增量学习
logp 幼稚贝叶斯分类模型的日志无条件概率密度递增学习
损失 批数据增量学习中朴素贝叶斯分类模型的损失
预测 预测基于增量学习的朴素贝叶斯分类模型对新观测值的响应

例子

全部折叠

要创建用于增量学习的朴素贝叶斯分类模型,您必须指定的最少信息量就是您希望模型能够经历的最大类数('maxnumclasses'名称-值参数)。当您使用增量拟合函数将模型与传入的数据批进行拟合时,模型将在其中收集新经历的类一会财产。如果指定的预期最大类数不准确,则会出现以下选项之一:

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

  • 如果类的数量超过最大预期,则增量拟合函数会发出错误。

这个例子展示了当您只知道数据中期望的最大类数时,如何创建用于增量学习的朴素贝叶斯分类模型。此外,该示例还说明了在示例中,增量拟合函数在早期和晚期经历所有预期类时的结果。

在这个例子中,考虑培训设备,以预测受试者无论是坐着,站立,行走,跑步,或者是基于对受试者测定生物特征数据跳舞。因此,该装置具有最大5类,从中选择。

样本早期的期望最大类数

创建一个用于多类学习的增量朴素贝叶斯学习器。指定数据的最大5类。

MdlEarly = incrementalClassificationNaiveBayes('maxnumclasses'5)
MdlEarly = incrementalClassificationNaiveBayes IsWarm: 0 Metrics: [1×2 table] ClassNames: [1×0 double] ScoreTransform: 'none' DistributionNames: 'normal' DistributionParameters:{}属性,方法

MdlEarly是一个incrementalclassificanivebayes.模型对象。它的所有属性都是只读的。

MdlEarly必须符合数据,然后才能使用它来执行任何其他操作。

加载人类活动数据集。随机播放数据。

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

关于数据集的详细信息,请输入描述在命令行。

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

  • 过程50观察。

  • 用拟合传入观察的新一个覆盖以前的增量模型。

  • 商店 μ 11 (第一堂课中第一个预测变量的平均值)、累积指标和窗口指标,以查看它们在增量学习过程中是如何发展的。

%预先配置numObsPerChunk = 50;nchunk =地板(n / numObsPerChunk);MC = Array2table(零(nchunk,2),'variablenames', (“累积”“窗口”]);mu1 = zeros(nchunk,1);%渐进学习n = 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。指标{“MinimalCost”,:};MU1(J + 1)= {MdlEarly.DistributionParameters 1,1}(1);结束

MdlEarly是一个incrementalclassificanivebayes.模型对象对流中的所有数据进行训练。在增量学习过程中以及模型热身后,updateMetricsAndFit检查模型在传入观测中的表现,然后将模型与观测相吻合。

看看绩效指标和 μ 11 在训练中进化,把它们放在不同的次要情节上。

图;次要情节(2,1,1)情节(mu1) ylabel (“\ mu_{11}”) xlim ([0 nchunk]);副区(2,1,2)H =情节(mc.Variables);xlim ([0 nchunk]);ylabel (“最小成本”)参照线(MdlEarly。指标WarmupPeriod/numObsPerChunk,'R-'。);传奇(h, mc.Properties.VariableNames)包含(“迭代”

这个情节表明updateMetricsAndFit以下:

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

  • 只有指标预热期后,计算性能指标。

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

  • 处理500周的观察之后计算所述窗口的指标。

在样本中,预期的最大类数

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

MdlLate = incrementalClassificationNaiveBayes('maxnumclasses'5)
MdlLate = incrementalClassificationNaiveBayes IsWarm: 0 Metrics: [1×2 table] ClassNames: [1×0 double] ScoreTransform: 'none' DistributionNames: 'normal' DistributionParameters:{}属性,方法

将所有标记为第5类的观察结果移到样本的末尾。

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

如前所述,拟合增量模型并绘制结果。

(nchunk mcnew = array2table (0, 2),'variablenames', (“累积”“窗口”]);mu1new = zeros(nchunk,1);n = 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。指标{“MinimalCost”,:};mu1new(j + 1) = MdlLate.DistributionParameters{1,1}(1);结束图;子图(2,1,1)绘图(mu1new)ylabel(“\ mu_{11}”) xlim ([0 nchunk]);subplot(2,1,2) h = plot(mcnew.Variables);xlim ([0 nchunk]);ylabel (“最小成本”)参照线(MdlLate。指标WarmupPeriod/numObsPerChunk,'R-'。);XLINE(SUM(〜IDX5)/ numobsperchunk,'G-'。);传奇(h, mcnew.Properties.VariableNames“位置”“最佳”)包含(“迭代”

updateMetricsAndFit函数在增量学习过程中进行训练,但是函数在模型符合所有期望的类数量之后(底部子图中的绿色垂线)开始跟踪性能指标。

这个示例展示了如何在知道数据中所有类名的情况下创建增量朴素贝叶斯学习器。

考虑培训设备以预测基于在主题上测量的生物识别数据坐,站立,行走,运行或跳舞,并且您知道类名称将1到5映射到活动。

创建一个用于多类学习的增量朴素贝叶斯学习器。指定类名。

一会= 1:5;Mdl = incrementalClassificationNaiveBayes (“类名”类名)
Mdl = incrementalClassificationNaiveBayes IsWarm: 0 Metrics: [1x2 table] ClassNames: [1 2 3 4 5] ScoreTransform: 'none' DistributionNames: 'normal' DistributionParameters: {5x0 cell}属性,方法

Mdl是一个incrementalclassificanivebayes.模型对象。它的所有属性都是只读的。

Mdl必须符合数据,然后才能使用它来执行任何其他操作。

加载人类活动数据集。随机播放数据。

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

关于数据集的详细信息,请输入描述在命令行。

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

  • 过程50观察。

  • 用拟合传入观察的新一个覆盖以前的增量模型。

%预先配置numObsPerChunk = 50;nchunk =地板(n / numObsPerChunk);%渐进学习n = 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);idx = randsample (n, n);X =壮举(idx:);Y = actid (idx);

关于数据集的详细信息,请输入描述在命令行。

为二元分类创建一个增量线性模型。模型配置如下:

  • 指定5000个观察值的指标预热周期。

  • 指定度量窗口大小为500个观察。

  • 跟踪误差分类和最小的成本来衡量模型的性能。

Mdl = incrementalClassificationNaiveBayes ('maxnumclasses'5,'MetricsWarmupPeriod',5000,......“MetricsWindowSize”, 500,“指标”, (“classiferror”“麦克塞特”])
Mdl = incrementalClassificationNaiveBayes IsWarm: 0 Metrics: [2x2 table] ClassNames: [1x0 double] ScoreTransform: 'none' DistributionNames: 'normal' DistributionParameters:{}属性,方法

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

将增量模型与其余数据进行拟合updateMetricsAndfit函数。在每一次迭代:

  • 通过处理50个观察数据块来模拟数据流。

  • 用拟合传入观察的新一个覆盖以前的增量模型。

  • 商店 σ 11 (第一堂课中第一个预测变量的标准偏差)、累积指标和窗口指标,以查看它们在增量学习中如何发展。

%预先配置numObsPerChunk = 50;nchunk =地板(n / numObsPerChunk);ce = array2table (0 (nchunk, 2),'variablenames', (“累积”“窗口”]);MC = Array2table(零(nchunk,2),'variablenames', (“累积”“窗口”]);sigma11 = 0 (nchunk, 1);%增量式拟合n = 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。指标{“ClassificationError”,:};mc {j:} = Mdl。指标{“MinimalCost”,:};sigma11(j + 1) = Mdl.DistributionParameters{1,1}(2);结束

IncrementalMdl是一个incrementalclassificanivebayes.模型对象对流中的所有数据进行训练。在增量学习过程中以及模型热身后,updateMetricsAndFit检查模型在传入观测中的表现,然后将模型与观测相吻合。

看看绩效指标和 σ 11 在训练中进化,把它们放在不同的次要情节上。

图;子图(2,2,1)绘图(Sigma11)Ylabel(“\ sigma_{11}”) xlim ([0 nchunk]);xline(mdl.metricswarmupperiod / numobsperchunk,'R-'。);包含(“迭代”) subplot(2,2,2) h = plot(ce.Variables);xlim ([0 nchunk]);ylabel (分类错误的)xline(mdl.metricswarmupperiod / numobsperchunk,'R-'。);传奇(h, ce.Properties.VariableNames)包含(“迭代”) subplot(2,2,3) h = plot(mc.Variables);xlim ([0 nchunk]);ylabel (“最小成本”)xline(mdl.metricswarmupperiod / numobsperchunk,'R-'。);传奇(h, mc.Properties.VariableNames)包含(“迭代”

图中包含3个轴。坐标轴1包含两个类型为line、constantline的对象。坐标轴2包含3个类型为line、constantline的对象。这些对象表示累积、窗口。坐标轴3包含3个类型为line、constantline的对象。这些对象表示累积、窗口。

这个情节表明updateMetricsAndFit以下:

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

  • 只有指标预热期后,计算性能指标。

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

  • 处理500周的观察(10次迭代)后计算该窗口的指标。

通过使用培训一个天真的贝母模型进行多牌分类fitcnb,将其转换为一个增量学习,跟踪它的性能,它适合流数据。延续传统的培训方式,以增量学习。

加载和预处理数据

加载人类活动数据集。随机播放数据。

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

关于数据集的详细信息,请输入描述在命令行。

假设受试者空闲时收集的数据(Y>2)的质量是物体移动时的两倍。创建一个权重变量,2表示从空闲对象收集的观察数据,1表示移动对象。

W = ones(n,1) + (Y < 3);

训练朴素贝叶斯模型

将多类分类的朴素贝叶斯模型拟合到一半数据的随机样本中。

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)
IncrementalMdl = incrementalClassificationNaiveBayes IsWarm: 1 Metrics: [1x2 table] ClassNames: [1 2 3 4 5] ScoreTransform: 'none' DistributionNames: {1x60 cell} DistributionParameters: {5x60 cell}属性,方法

单独跟踪性能指标和拟合模型

通过对数据的其余部分进行增量学习updateMetrics适合功能。一次处理50个观测数据,模拟一个数据流。在每一次迭代:

  1. 调用updateMetrics更新给予意见的传入块模型的累积和窗口分类错误。覆盖以前的增量模型,以更新的损失指标财产。注意,该函数并不使模型适合数据块——数据块是模型的“新”数据。设置观测权值。

  2. 调用适合使模型与观测数据相吻合。覆盖之前的增量模型以更新模型参数。设置观测权值。

  3. 存储第一类的第一个预测变量的最小代价和均值 μ 11

%预先配置idxil =〜idxtt;零=总和(idxil);numObsPerChunk = 50;nchunk =地板(NIL / numObsPerChunk);MC = Array2table(零(nchunk,2),'variablenames', (“累积”“窗口”]);mu11 = [IncrementalMdl.DistributionParameters {1} (1);0 (nchunk 1)];自= X (idxil:);Yil = Y (idxil);会= W (idxil);%增量式拟合J = 1:nchunk ibegin =分钟(零,numObsPerChunk *(J-1)+ 1);IEND =分钟(零,numObsPerChunk * j)的;idx = ibegin: iend;IncrementalMdl = updateMetrics(IncrementalMdl,可可西里(IDX,:),YIL(IDX),......“重量”会(idx));mc {j:} = IncrementalMdl。指标{“MinimalCost”,:};IncrementalMdl =拟合(IncrementalMdl,可可西里(IDX,:),YIL(IDX),“重量”会(idx));mu11(j + 1)= increntmentalmdl.distributionParameters {1,1}(1);结束

IncrementalMdl是一个incrementalclassificanivebayes.模型对象对流中的所有数据进行训练。

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

绘制性能指标和估计系数的跟踪图 μ 11

图;子图(2,1,1)H = Plot(MC.Variables);xlim ([0 nchunk]);ylabel (“最小成本”) legend(h,mc.Properties.VariableNames) subplot(2,1,2) plot(mu11) ylabel(“\ mu_11”) xlim ([0 nchunk]);包含(“迭代”

图中包含2个轴。axis 1包含2个类型为line的对象。这些对象表示累积、窗口。Axes 2包含一个类型为line的对象。

累积损失稳定并逐渐降低,而窗户损耗跳跃。

μ 11 开始突然变化,然后逐渐平稳适合流程更块。

更多关于

全部展开

算法

全部展开

介绍了R2021a