主要内容

logp

增量学习朴素贝叶斯分类模型的对数无条件概率密度

描述

例子

lp= logp (MdlX返回日志无条件概率密度lp预测数据中的观察结果X使用朴素贝叶斯分类模型进行增量学习Mdl.你可以使用lp识别训练数据中的异常值。

例子

全部折叠

训练朴素贝叶斯分类模型fitcnb,将其转换为增量学习器,然后使用增量模型检测流数据中的异常值。

加载和预处理数据

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

负载humanactivityrng (1);%用于再现性N = numel(actid);Idx = randsample(n,n);X = feat(idx,:);Y = actid(idx);

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

训练朴素贝叶斯分类模型

将朴素贝叶斯分类模型拟合到约25%数据的随机样本中。

Idxtt = randsample([true false false false],n,true);TTMdl = fitcnb(X(idxtt,:),Y(idxtt))
TTMdl = ClassificationNaiveBayes ResponseName: 'Y' CategoricalPredictors: [] ClassNames: [1 2 3 4 5] ScoreTransform: 'none' NumObservations: 6167 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对象。IncrementalMdl表示一种用于增量学习的朴素贝叶斯分类模型;参数值与TTMdl

检测异常值

利用传统训练模型和训练数据确定异常值的无条件密度阈值。异常值是流数据中产生密度低于阈值的观测值。

ttlp = logp(TTMdl,X(idxtt,:));[~,lower] = isoutlier(ttlp)
Lower = -336.0424

在其余数据中检测这些异常值。通过一次处理一个观测来模拟一个数据流。在每次迭代中,调用logp计算观测值的对数无条件概率密度并存储每个值。

%预先配置Idxil = ~idxtt;Nil = sum(idxil);numObsPerChunk = 1;nchunk = floor(nil/numObsPerChunk);Lp = 0 (nchunk,1);Iso = false(nchunk,1);Xil = X(idxil,:);Yil = Y(idxil);增量处理j = 1:nchunk ibegin = min(nil,numObsPerChunk*(j-1) + 1);iend = min(nil,numObsPerChunk*j);Idx = ibegin:iend;lp(j) = logp(IncrementalMdl,Xil(idx,:));Iso (j) = lp(j) < lower;结束

绘制流数据的对数无条件概率密度。确定异常值。

图;H1 =图(lp);持有X = 1:nchunk;H2 = plot(x(iso),lp(iso),的r *);H3 = yline(下,“g——”);xlim ([0 nchunk]);ylabel (“无条件的密度”)包含(“迭代”)传说([h1 h2 h3],[“对数无条件概率”“局外人”“阈值”)举行

图中包含一个轴对象。axis对象包含3个类型为line、constantline的对象。这些对象表示Log无条件概率,异常值,阈值。

输入参数

全部折叠

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

您必须配置Mdl计算一批观测数据的对数条件概率密度。

  • 如果Mdl是一个转换的,传统的训练模型,你可以计算日志条件概率没有任何修改。

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

用于计算日志条件概率密度的一批预测器数据,指定为n——- - - - - -Mdl。NumPredictors浮点矩阵。

为每一个j= 1到n,如果X (j:)至少包含一个lp (j

数据类型:|

输出参数

全部折叠

日志无条件概率密度,作为n-by-1浮点向量。lp (j预测因子的对数无条件概率密度是否在X (j:)

数据类型:|

更多关于

全部折叠

无条件概率密度

无条件概率密度其中一个预测因子是密度在各个类上的边缘分布。

也就是说,无条件概率密度是

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

在哪里πYk)为类先验概率。给定类(PX1, . .XP|yk)),类先验概率分布是训练选项(也就是说,你在训练分类器时指定它们)。

先验概率

先验概率一个类别是假设的相对频率,从该类别的观察出现在一个总体。

版本历史

R2021a中引入