主要内容

预测

预测朴素贝叶斯增量学习分类模型对新观测结果的响应

描述

例子

标签=预测(MdlX返回预测的响应(或标签)标签预测数据中的观察结果X从朴素贝叶斯分类模型增量学习Mdl

例子

标签=预测(MdlX名称,值使用一个或多个名称-值参数指定其他选项。例如,您可以指定一个自定义错误分类代价矩阵(换句话说,重写该值)Mdl。成本),以计算预测成本论点。

例子

标签成本预测,预测___还返回后验概率)和预计的(预期的)误分类代价成本中的观测值(行)对应X使用前面语法中的任何输入参数组合。对于每一个观察X,预测类别标签对应所有类别中期望分类成本最小。

例子

全部折叠

加载人类活动数据集。

负载humanactivity

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

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

TTMdl = fitcnb(feat,actid)
TTMdl = ClassificationNaiveBayes ResponseName: 'Y' CategoricalPredictors: [] ClassNames: [1 2 3 4 5] ScoreTransform: 'none' NumObservations: 24075 DistributionNames: {1x60 cell} DistributionParameters: {5x60 cell}属性,方法

TTMdl是一个ClassificationNaiveBayes表示传统训练模型的模型对象。

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

IncrementalMdl =增量学习者(TTMdl)
IncrementalMdl = incrementalClassificationNaiveBayes IsWarm: 1 Metrics: [1x2 table] ClassNames: [1 2 3 4 5] ScoreTransform: 'none' DistributionNames: {1x60 cell} DistributionParameters: {5x60 cell}属性,方法

IncrementalMdl是一个incrementalClassificationNaiveBayes为增量学习准备的模型对象。

incrementalLearner函数通过向增量学习器传递学习到的条件预测器分布参数以及其他信息来初始化增量学习器TTMdl从训练数据中学习。IncrementalMdl是温暖的(IsWarm1),这意味着增量学习功能可以开始跟踪性能指标。

通过转换传统训练模型创建的增量学习器可以生成预测,而无需进一步处理。

使用这两种模型预测所有观测值的类别标签。

ttlabels = predict(TTMdl,feat);illables = predict(IncrementalMdl,壮举);sameLabels = sum(ttlabels ~= illables) == 0
sameLabels =逻辑1

这两个模型对每个观测结果都预测了相同的标签。

这个例子展示了如何将错误分类代价应用于传入数据块的标签预测,同时为训练保持平衡的错误分类代价。

加载人类活动数据集。随机打乱数据。

负载humanactivityN = numel(actid);rng (10);%用于再现性Idx = randsample(n,n);X = feat(idx,:);Y = actid(idx);

创建一个用于增量学习的朴素贝叶斯分类模型。指定类名。准备模型预测通过将模型与前10个观测值拟合。

Mdl = incrementalClassificationNaiveBayes(ClassNames=唯一的(Y));Initobs = 10;Mdl = fit(Mdl,X(1:initobs,:),Y(1:initobs));canPredict = size(mll . distributionparameters,1) == numel(mll . classnames)
canPredict =逻辑1

考虑对错误分类“跑步”(第4类)的模型进行严厉的惩罚。创建一个成本矩阵,与错误分类任何其他类别相比,对错误分类跑步适用100倍的惩罚。行对应真实的类,列对应预测的类。

k = number (mll . classnames);成本= ones(k) - eye(k);成本(4,:)=成本(4,:)*100;%错误分类“跑”的罚则成本
成本=5×50 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 100 100 100 0 100 1 1 1 1 100

模拟一个数据流,并对每个传入的100个观测数据块执行以下操作。

  1. 调用预测预测输入数据块中每个观测值的标签。

  2. 调用预测类型指定错误分类代价成本论点。

  3. 调用适合使模型适合传入的数据块。将先前的增量模型覆盖为一个适合于新观测值的新模型。

numObsPerChunk = 100;nchunk = ceil((n - initobs)/numObsPerChunk);标签= 0 (n,1);Cslabels = 0 (n,1);CST = 0 (n,5);CSCST = 0 (n,5);%增量学习j = 1: ibegin = min(n,numObsPerChunk*(j-1) + 1 + initobs);iend = min(n,numObsPerChunk*j + initobs);Idx = ibegin:iend;[标签(idx), ~,春秋国旅(idx:)] =预测(Mdl X (idx:));[cslabels idx), ~, cscst (idx:)] =预测(Mdl X (idx:),成本=成本);Mdl = fit(Mdl,X(idx,:),Y(idx));结束Labels = Labels ((initobs + 1):end);Cslabels = Cslabels ((initobs + 1):end);

通过绘制直方图比较预测方法之间的预测类别分布。

图;直方图(标签);持有直方图(cslabels);传奇([“违约成本预测”厂商“预测”])

图中包含一个轴对象。axis对象包含2个直方图类型的对象。这些对象表示默认成本预测、成本敏感预测。

因为成本敏感的预测方法会严重地惩罚错误分类的第4类,所以与使用默认平衡成本的预测方法相比,会有更多的预测进入第4类。

加载人类活动数据集。随机打乱数据。

负载humanactivityN = numel(actid);rng (10)%用于再现性Idx = randsample(n,n);X = feat(idx,:);Y = actid(idx);

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

创建一个用于增量学习的朴素贝叶斯分类模型。指定类名。准备模型预测通过将模型与前10个观测值拟合。

Mdl = incrementalClassificationNaiveBayes(“类名”,独特的(Y));Initobs = 10;Mdl = fit(Mdl,X(1:initobs,:),Y(1:initobs));canPredict = size(mll . distributionparameters,1) == numel(mll . classnames)
canPredict =逻辑1

Mdl是一个incrementalClassificationNaiveBayes模型。它的所有属性都是只读的。该模型被配置为生成预测。

模拟一个数据流,并对每个传入的100个观测数据块执行以下操作。

  1. 调用预测计算传入数据块中每个观测的类后验概率。

  2. 调用rocmetrics使用类后验概率计算ROC曲线下的面积(AUC),并存储所有类的平均AUC值。AUC是模型预测活动平均程度的增量度量。

  3. 调用适合使模型适合传入的数据块。将先前的增量模型覆盖为一个适合于新观测值的新模型。

numObsPerChunk = 100;nchunk = floor((n - initobs)/numObsPerChunk);Auc = 0 (nchunk,1);Classauc = 5;%增量学习j = 1: ibegin = min(n,numObsPerChunk*(j-1) + 1 + initobs);iend = min(n,numObsPerChunk*j + initobs);Idx = ibegin:iend;[~,posterior] = predict(Mdl,X(idx,:));mdlROC = rocmetrics(Y(idx),后验,Mdl.ClassNames);[~,~,~,auc(j)] = average(mdlROC,“微”);Mdl = fit(Mdl,X(idx,:),Y(idx));结束

现在,Mdl是一个incrementalClassificationNaiveBayes在流中的所有数据上训练的模型对象。

绘制每个传入数据块的AUC值。

Plot (auc) xlim([0 nchunk]) ylabel(“AUC”)包含(“迭代”

图中包含一个轴对象。axis对象包含一个line类型的对象。

图中显示,在增量学习过程中,分类器可以很好地预测活动。

输入参数

全部折叠

用于增量学习的朴素贝叶斯分类模型,指定为incrementalClassificationNaiveBayes模型对象。你可以创建Mdl直接或通过转换支持的,传统训练的机器学习模型使用金宝appincrementalLearner函数。更多详细信息,请参见相应的参考页面。

您必须配置Mdl为一批观察结果预测标签。

  • 如果Mdl是一个转换的,传统训练的模型,你可以预测标签没有任何修改。

  • 否则,Mdl。DistributionParameters一定是单元格矩阵用的吗Mdl。NumPredictors> 0列和至少一行,其中每行对应于中的每个类名Mdl。ClassNames

要为其预测标签的一批预测器数据,指定为n——- - - - - -Mdl。NumPredictors浮点矩阵。

数据类型:|

名称-值参数

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

例子:成本=[0 2;10 0]属性将错误分类观察值与真实类的惩罚增加一倍Mdl.ClassNames (1)而不是将观察结果与真实等级错误地分类Mdl.ClassNames (2)

错误分类观测值的代价,指定为表中的值,其中c上课的数量是多少Mdl。ClassNames.的值将覆盖Mdl。成本

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

成本(j将观测数据分类的成本是多少j当它真正的阶级是,用于上课Mdl。ClassNames(而且Mdl。ClassNames(j.换句话说,行对应于真实的类,列对应于预测的类。例如,成本= [0 2;10 0]对分类错误适用双倍罚款Mdl.ClassNames (1)而不是错误分类Mdl.ClassNames (2)

结构数组

有两个字段的结构数组:

  • 一会包含类名,值与Mdl。ClassNames

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

例子:=结构(“类名”,Mdl成本。一会,'ClassificationCosts',[0 2; 1 0])

数据类型:||结构体

先验类概率,指定为数值向量中的值。之前长度与类的数量相同Mdl。ClassNames,元素的顺序对应于中的类顺序Mdl。ClassNames预测将向量归一化,使结果的和为1。

的值将覆盖Mdl。Prior

数据类型:|

分数转换函数,描述增量学习函数如何转换指定为字符向量、字符串标量或函数句柄的原始响应值。的值将覆盖Mdl。ScoreTransform

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

价值 描述
“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

数据类型:字符|字符串

输出参数

全部折叠

预测的响应(标签),作为类别或字符数组返回;浮点、逻辑或字符串向量;或者单元格数组的字符向量n行。n观察的数量在吗X,标签(j预测的反应是观察吗j

标签存储的类名具有相同的数据类型Mdl。ClassNames(该软件将字符串数组视为字符向量的单元格数组。)

后验概率,作为n——- - - - - -元素个数(Mdl.ClassNames)浮点矩阵。后(jk后验概率是观察到的吗j在课堂上kMdl。ClassNames指定类的顺序。

预期误分类代价,作为n——- - - - - -元素个数(Mdl.ClassNames)浮点矩阵。

成本(jk观察的预期成本是连续的吗jX被分类kMdl。ClassNames(k).

更多关于

全部折叠

误分类代价

一个误分类代价是分类器将观察结果标记到错误类的相对严重程度。

存在两种类型的错误分类成本:真实的和预期的。让K是类的数量。

  • 真实误分类成本——一个K——- - - - - -K矩阵,其中元素(j)表示将观测值分类的代价j如果它真正的阶级是.软件将错误分类代价存储在属性中Mdl。成本,并将其用于计算。默认情况下,Mdl.Cost (i, j)= 1j,Mdl.Cost (i, j)= 0j.换句话说,成本是0正确的分类和1任何不正确的分类。

  • 预期误分类成本——一个K-维向量,其中元素k将观测数据分类的加权平均成本是多少k,由类后验概率加权。

    c k j 1 K P Y j | x 1 ... x P C o 年代 t j k

    换句话说,该软件将观测数据分类为期望错误分类成本最低的类别。

后验概率

后验概率在给定数据的情况下,观测值属于特定类别的概率。

对于朴素贝叶斯,一个分类的后验概率是k对于给定的观察结果(x1、……xP)是

P Y k | x 1 .. x P P X 1 ... X P | y k π Y k P X 1 ... X P

地点:

  • P X 1 ... X P | y k 预测器的条件关节密度是给定的吗kMdl。DistributionNames存储预测器的分布名称。

  • πYk)为类先验概率分布。Mdl。Prior存储先前的分布。

  • P X 1 .. X P 是预测因子的联合密度。类是离散的,所以 P X 1 ... X P k 1 K P X 1 ... X P | y k π Y k

版本历史

R2021a中引入