主要内容

incrementalLearner

将朴素贝叶斯分类模型转化为增量学习器

描述

例子

递增ALMDL= incrementalLearner (Mdl)的朴素贝叶斯分类模型增量学习递增ALMDL,使用传统训练的朴素贝叶斯分类模型的超参数,Mdl.因为其属性值反映了从Mdl递增ALMDL能够预测给定新观测值的标签,并且温暖的,这意味着它的预测性能会被跟踪。

例子

递增ALMDL= incrementalLearner (Mdl名称,值)使用由一个或多个名称-值对参数指定的附加选项。有些选择需要训练递增ALMDL在它的预测性能被跟踪之前。例如,“MetricsWarmupPeriod”,50,“MetricsWindowSize”,100指定在跟踪性能指标之前的50个观察值的初步增量培训期,并指定在更新性能指标之前处理100个观察值。

例子

全部折叠

利用遗传算法训练朴素贝叶斯模型fitcnb,然后将其转化为增量式学习者。

加载和预处理数据

加载人工活动数据集。

负载humanactivity

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

训练朴素贝叶斯模型

拟合一个朴素贝叶斯分类模型到整个数据集。

TTMdl=fitcnb(专长,活动);

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}属性,方法

递增ALMDL是一个incrementalClassificationNaiveBayes模型对象准备的增量学习使用朴素贝叶斯分类。

  • incrementalLearner初始化增量学习器,将学习到的条件预测器分布参数连同其他信息传递给增量学习器TTMdl从训练数据中提取。

  • 递增ALMDL是温暖的IsWarm1),这意味着增量学习函数可以跟踪性能指标并做出预测。

预测的反应

通过转换传统训练模型而产生的增量式学习者可以在不进行进一步处理的情况下生成预测。

使用这两个模型预测所有观测值的分类分数(类别后验概率)。

[~, ttscores] =预测(TTMdl壮举);[~,简称ilcor] =预测(IncrementalMdl壮举);compareScores = norm(ttscores - ilcores)
比较核心=0

模型生成的分数之间的差值为0。

使用训练有素的朴素贝叶斯模型初始化增量学习器。通过指定一个指标预热期来为增量学习者做准备,在此期间updateMetricsAndFit函数只适合模型。指定一个指标窗口大小为500个观察值。

加载人工活动数据集。

负载humanactivity

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

将数据随机分成两半:一半用于传统的模型训练,另一半用于增量学习。

n=数值(活动);rng(1)%为了再现性本量利= cvpartition (n,“坚持”, 0.5);idxtt =培训(cvp);idxil =测试(cvp);%数据的前半部分Xtt =壮举(idxtt:);Ytt = actid (idxtt);%数据的后半部分自=壮举(idxil:);Yil = actid (idxil);

将朴素贝叶斯模型拟合到数据的前半部分。

TTMdl = fitcnb (Xtt Ytt);

将传统训练的朴素贝叶斯模型转换为朴素贝叶斯分类模型进行增量学习。指定以下:

  • 2000个观察数据的性能指标热身期

  • 500个观察值的指标窗口大小

  • 利用分类误差和最小代价来衡量模型的性能

IncrementalMdl = incrementalLearner (TTMdl,“MetricsWarmupPeriod”,2000,“MetricsWindowSize”, 500,...“指标”,[“classiferror”“枢纽”]);

将增量模型拟合到数据的后半部分updateMetricsAndfit函数。在每一次迭代:

  • 通过一次处理20个观察数据来模拟数据流。

  • 用一个适合传入观测的新模型覆盖先前的增量模型。

  • 将第二个预测器的平均值存储在第一个类中 μ 12 、累积指标和窗口指标,以查看它们在增量学习过程中如何发展。

%预先配置nil =元素个数(Yil);numObsPerChunk = 20;nchunk =装天花板(nil / numObsPerChunk);ce = array2table (0 (nchunk, 2),“VariableNames”,[“累计”“窗口”]);(nchunk mc = array2table (0, 2),“VariableNames”,[“累计”“窗口”]);mu12 = 0 (nchunk, 1);%增量拟合j=1:nchunk-ibegin=min(无,numObsPerChunk*(j-1)+1);iend=最小值(零,numObsPerChunk*j);idx=ibegin:iend;IncrementalMdl=updateMetricsAndFit(IncrementalMdl,Xil(idx,:),Yil(idx));ce{j,:}=IncrementalMdl.Metrics{“ClassificationError”,:};mc {j:} = IncrementalMdl。指标{“最低成本”,:};mu12(j + 1) = incrementalmdd . distributionparameters {1,2}(1);结束

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

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

图;次要情节(1,1)情节(mu12) ylabel (“\ mu_{12}”)xlim([0 nchunk]);xline(增量almdl.MetricsWarmupPeriod/numObsPerChunk,‘r-。’);subplot(3,1,2) h = plot(ce.Variables);xlim ([0 nchunk]);ylabel (分类错误的)参照线(IncrementalMdl。MetricsWarmupPeriod/numObsPerChunk,‘r-。’);传奇(h, ce.Properties.VariableNames“位置”“西北”) subplot(3,1,3) h = plot(mc.Variables);xlim ([0 nchunk]);ylabel (“最小成本”)参照线(IncrementalMdl。MetricsWarmupPeriod/numObsPerChunk,‘r-。’);图例(h、mc.Properties.VariableNames、,“位置”“西北”)包含(“迭代”)

这个情节表明updateMetricsAndFit以下:

  • 适合 μ 12 在所有的增量学习迭代过程中。

  • 仅在指标预热期后计算性能指标。

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

  • 在处理500个观察(25次迭代)后计算窗口度量。

因为数据是按活动排序的,所以平均值和性能指标会周期性地突然变化。

输入参数

全部折叠

传统的多类分类训练朴素贝叶斯模型,指定为ClassificationNaiveBayes返回的模型对象fitcnb.每个预测变量的条件分布,如存储在Mdl.DistributionNames,不能是内核发行版。

名称-值参数

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

例子:“指标”,“classiferror”“mincost”,“MetricsWindowSize”,100年指定跟踪误分类率和最小成本,并指定在更新性能指标之前处理100次观察。

为增量学习期间跟踪的性能度量建模updateMetricsupdateMetricsAndFit函数,指定为内置的损失函数名称,名称的字符串向量,函数句柄(@metricName)、函数句柄的结构数组,或名称、函数句柄或结构数组的单元向量。

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

的名字 描述
“binodeviance” 二项异常
“classiferror” 分类错误
“指数型” 指数
“枢纽” 铰链
“分对数” 物流
“mincost” 最小的预期误分类成本(用于后验概率的分类分数)
“二次” 二次

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

例子:“指标”,(“classiferror”“mincost”)

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

公制=自定义公制(C、S、成本)

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

  • 选择函数名(customMetric).

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

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

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

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

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

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

updateMetricsupdateMetricsAndFit在属性的表中存储指定的指标IncrementalMdl。指标.的数据类型指标确定表的行名。

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

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

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

此属性是只读的。

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

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

数据类型:|

此属性是只读的。

用于计算窗口性能指标的观察数,指定为正整数。

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

数据类型:|

输出参数

全部折叠

用于增量学习的朴素贝叶斯分类模型,返回为incrementalClassificationNaiveBayes模型对象。递增ALMDL也配置为生成给定新数据的预测(见预测).

初始化递增ALMDL增量学习,incrementalLearner的属性的值Mdl在这个表中的同余性质递增ALMDL

财产 描述
CategoricalLevels

多元多项式预测水平,细胞阵列长度等于NumPredictors

分类预测因子 分类预测指标,一个正整数向量
一会 用于二进制分类的类标签,名称列表
费用 误分类代价,一个数值矩阵
DistributionNames 预测器变量的条件分布的名称,或者是每个单元格包含的单元格数组“正常“mvmn”,或价值“锰”
DistributionParameters 预测器变量的条件分布的参数值,长度为2个数值向量的单元格数组(有关详细信息,请参阅DistributionParameters)
NumPredictors 预测数,一个正整数。
之前 先验类标签分布,一个数值向量
分数变换 分数转换函数,一个名称或函数句柄。
Y 提供给fitcnb为递增学习计算每个类别的权重,存储为标签数组(参见Y)

更多关于

全部折叠

增量学习

增量学习,或在线学习,是机器学习的一个分支,涉及处理来自数据流的传入数据,可能对预测变量的分布、预测或目标函数的方面(包括调优参数值)或观察值是否被标记的知识很少或没有。增量学习与传统机器学习不同,传统机器学习有足够的标记数据来适应模型,执行交叉验证来调整超参数,并推断预测器分布。

给定传入的观察,增量学习模型以下列任何一种方式处理数据,但通常按以下顺序:

  • 预测标签。

  • 测量预测性能。

  • 检查模型中的结构断裂或漂移。

  • 使模型与传入的观测值相符。

算法

全部折叠

性能指标

  • updateMetricsupdateMetricsAndFit功能跟踪模型性能指标(“指标”)从新数据中删除增量模型时温暖的IsWarm属性)。增量模型是暖时适合updateMetricsAndFit执行以下两个操作:

    • 使增量模型适合于MetricsWarmupPeriod观察,这是度量预热期

    • 过程MaxNumClasses类或由一会名称值参数。

  • 指标增量模型的属性将每个性能指标的两种形式存储为表的变量(列),累积窗口,每行都有单独的指标。当增量模型为暖时,updateMetricsupdateMetricsAndFit以下列频率更新度量标准:

    • 累积-这些函数计算自模型性能跟踪开始以来的累积度量。每次调用函数时,函数都会更新指标,并基于所提供的整个数据集进行计算。

    • 窗口-函数根据窗口内的所有观察值计算度量值MetricsWindowSize名称-值对的论点。MetricsWindowSize也决定了软件更新的频率窗口指标。例如,如果MetricsWindowSize为20时,函数根据所提供数据中的最近20个观察值计算度量值(X((end - 20 + 1):end,:)Y((end - 20 + 1):结束)).

      跟踪窗口内性能指标的增量函数使用以下过程:

      1. 对于每个指定的度量,存储一个长度的缓冲区MetricsWindowSize以及观察权值的缓冲。

      2. 使用基于批量传入观察数据的模型性能填充指标缓冲区的元素,并将相应的观察权重存储在权重缓冲区中。

      3. 当缓冲区被填满时,覆盖Mdl.Metrics.Window在指标窗口中使用加权平均性能。如果在函数处理一批观察值时缓冲区被填满,则最新传入的MetricsWindowSize观测数据进入缓冲区,最早的观测数据从缓冲区中删除。例如,假设MetricsWindowSize为20时,度量缓冲区具有来自先前处理批的10个值,15个值为传入值。若要组成长度20窗口,函数将使用来自15个传入观察值的测量值和来自上一批的最近5个测量值。

介绍了R2021a