主要内容

增量地执行文本分类

这个例子展示了如何增量地训练一个模型来根据文档中的单词频率对文档进行分类;一个bag-of-words模型。

加载包含词频稀疏矩阵的NLP数据集X根据MathWorks®文档计算。标签Y是页面所属的工具箱文档。

负载nlpdata

有关数据集(如字典和语料库)的更多详细信息,请输入描述

观察结果按标签排列。因为增量学习软件直到至少处理一次所有标签才开始计算性能指标,所以要对数据集进行洗牌。

[n,p] = size(X)
N = 31572
P = 34023
rng (1);Shflidx = randperm(n);X = X(shflidx,:);Y = Y(shflidx);

确定数据中的类数量。

猫=类别(Y);maxNumClasses =数目(猫);

创建一个朴素贝叶斯增量学习器。指定类的数量,指标预热期为0,指标窗口大小为1000。因为预测 j 是单词的词频吗 j 在字典中,指定给定类的预测符是有条件的联合多项式。

Mdl = incrementalClassificationNaiveBayes(MaxNumClasses= MaxNumClasses,...MetricsWarmupPeriod = 0, MetricsWindowSize = 1000, DistributionNames =“锰”);

Mdl是一个incrementalClassificationNaiveBayes对象。Mdl是一个模型因为没有处理观察;它代表了一个训练模板。

测量模型的性能,并将增量模型拟合到训练数据updateMetricsAndFit函数。通过一次处理1000个观测数据块来模拟数据流。在每次迭代中:

  1. 处理1000个观察结果。

  2. 将先前的增量模型覆盖为一个适合于新观测值的新模型。

  3. 存储当前的最小成本。

这一阶段的运行可能需要几分钟。

numObsPerChunk = 1000;nchunks = floor(n/numObsPerChunk);MC = array2table(0 (nchunks,2),“VariableNames”, (“累积”“窗口”]);j = 1:nchunks ibegin = min(n,numObsPerChunk*(j-1) + 1);iend = min(n,numObsPerChunk*j);Idx = ibegin:iend;XChunk = full(X(idx,:));Mdl = updateMetricsAndFit(Mdl,XChunk,Y(idx));mc{j,:} = Mdl。指标{“MinimalCost”,:};结束

Mdl是一个incrementalClassificationNaiveBayes在流中的所有数据上训练的模型对象。在增量学习期间和模型预热后,updateMetricsAndFit检查模型在传入观测数据块上的性能,然后将模型与这些观测数据拟合。

画出最小代价,看看它在训练过程中是如何演变的。

图(mc.Variables)“最小成本”xlabel(mc.Properties.VariableNames)“迭代”

累积最小代价平稳下降并稳定在0.16附近,而块计算的最小代价在0.14和0.18之间跳跃。

另请参阅

对象

功能

相关的话题