主要内容

分类朴素贝叶斯

用于多类分类的朴素贝叶斯分类

描述

分类朴素贝叶斯是一个朴素贝叶斯多类学习的分类器。训练有素的分类朴素贝叶斯分类器存储训练数据、参数值、数据分布和先验概率。使用这些分类器来执行一些任务,例如估计再替换预测(参见resubPredict)和预测新数据的标签或后验概率(见预测).

创造

创建一个分类朴素贝叶斯通过使用对象fitcnb

属性

全部展开

预测特性

此属性是只读的。

预测器名称,指定为字符向量的单元格数组。元素的顺序PredictorNames对应于预测器名称在训练数据中出现的顺序X

此属性是只读的。

扩展预测器名,指定为字符向量的单元阵列。

如果该机型采用虚拟变量编码分类变量,然后ExpandedPredictorNames包括描述扩展变量的名称。否则,ExpandedPredictorNames是一样的PredictorNames

此属性是只读的。

分类预测指数,指定为正整数向量。CategoricalPredictors包含指示相应预测值是分类的索引值。索引值介于1和之间p,在那里p为用于训练模型的预测器数量。如果没有任何预测器是绝对的,则此属性为空([]).

数据类型:单一的|

此属性是只读的。

多元多项级,指定为单元阵列。的长度CategoricalLevels等于预测数(尺寸(X,2)).

细胞CategoricalLevels对应于指定为的预测值“mvmn”在训练中,他们有一个多元多项式分布。不符合多元多项分布的单元格为空([]).

如果预测j是多元多项式吗分类级别{j是所有不同的预测值的列表吗j在样品中。S从唯一(X(:,j))

此属性是只读的。

用于训练朴素贝叶斯分类器的非标准化预测器,指定为一个数字矩阵。每一行的X对应一个观察值,每一列对应一个变量。该软件排除包含至少一个缺失值的观察值,并从Y中删除相应的元素。

预测分布属性

此属性是只读的。

预测器分布,指定为字符向量或字符向量的单元数组。fitcnb使用预测器分布来模拟预测器。该表列出了可用的发行版。

价值观 描述
'核心' 核平滑密度估计
“锰” 多项分布。如果您指定,则所有特征都是多项式分布的组成部分。因此,不能包含“锰”作为字符串数组或字符向量的单元格数组的元素。有关详细信息,请参见多项式分布的估计概率
“mvmn” 多变量多项分布。有关详细信息,请参见多元多项式分布的估计概率
“正常” 正态(高斯)分布

如果分配名称是1 -P字符向量的单元格数组fitcnb为该功能建模j使用元素中的分布j单元格数组的。

例子:“锰”

例子:{“内核”、“正常”、“内核”}

数据类型:char|字符串|细胞

此属性是只读的。

分布参数估计,指定为单元阵列。分布参数是一个K-经过-D单元格数组,其中单元格(kd)包含预测器实例的分布参数估计d在课堂上k.行的顺序与属性中类的顺序相对应一会,并且预测器的顺序对应于X

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

要素分布参数取决于预测值的分布。此表描述了DistributionParameters {kj

分布的预测j 预测器单元数组的值j和类k
内核 一个KernelDistribution模型。使用单元格索引和点符号显示属性。例如,要显示第三类预测器2的核密度的估计带宽,使用Mdl.分配参数{3,2}.带宽
表示该标记的概率的标量j出现在课堂上k.有关详细信息,请参见多项式分布的估计概率
mvmn 一个数值向量,包含每个可能的预测水平的概率j在课堂上k.软件按照所有唯一预测级别的排序顺序对概率进行排序j(存储在财产中)CategoricalLevels).有关详细信息,请参阅多元多项式分布的估计概率
正常的 一个2乘1的数字向量。第一个元素是样本平均值,第二个元素是样本标准偏差。有关更多详细信息,请参阅正态分布估计

此属性是只读的。

内核平滑器类型,指定为内核的名称或内核名称的单元格数组内核等于预测数(尺寸(X,2)).内核{j对应的预测j并包含一个描述平滑内核类型的字符向量。如果单元格为空([]),然后fitcnb未将内核分布适配到相应的预测器。

此表描述了支持的内核平滑器类型。金宝app{u}表示指示器功能。

价值观 内核 公式
“盒子” 框(统一)

f x 0.5 { | x | 1

'epanechnikov' Epanechnikov

f x 0.75 1 x 2 { | x | 1

“正常” 高斯

f x 1 2 π 经验 0.5 x 2

“三角形” 三角

f x 1 | x | { | x | 1

例子:“盒子”

例子:{'epanechnikov','normal'}

数据类型:char|字符串|细胞

此属性是只读的。

内核平滑密度支持,指定为单元数组金宝app金宝app等于预测数(尺寸(X,2)).这些单元格代表了这些区域fitcnb应用核密度。如果单元格为空([]),然后fitcnb未将内核分布适配到相应的预测器。

该表描述了支持的选项。金宝app

价值观 描述
1乘2的数字行向量 密度支持适用于指定范围中金宝app,例如[鲁],在那里lU分别为有限的上界和下界。
“肯定的” 密度支持适用于所有正实值金宝app。
“无限” 密度支持适用于所有真实值金宝app。

此属性是只读的。

内核平滑窗口宽度,指定为数值矩阵。宽度是一个K-经过-P矩阵,其中K数据中类的数量,和P是预测值的数量(尺寸(X,2)).

宽度(kj核平滑窗宽是否代表预测器的核平滑密度j内部类k在列j表明,fitcnb不适合预测j使用内核密度。

响应特性

此属性是只读的。

训练模型中使用的惟一类名,指定为类别数组或字符数组、逻辑向量或数字向量或字符向量的单元数组。

一会具有与相同的数据类型Y,并已K字符数组的元素(或行)。(该软件将字符串数组视为字符向量的单元格数组。)

数据类型:明确的|char|字符串|逻辑||细胞

此属性是只读的。

响应变量名称,指定为字符向量。

数据类型:char|字符串

此属性是只读的。

类标签用于训练朴素贝叶斯分类器,指定为类别数组或字符数组、逻辑或数字向量或字符向量的单元数组。每一行的Y表示的对应行的观察分类X

Y中的数据类型与Y用于训练模型。(该软件将字符串数组视为字符向量的单元格数组。)

数据类型:单一的||逻辑|char|字符串|细胞|明确的

训练属性

此属性是只读的。

参数值用于训练分类朴素贝叶斯模型,指定为对象。ModelParameters包含参数值,例如用于训练朴素贝叶斯分类器的名称-值对参数值。

访问ModelParameters通过使用点符号。例如,使用金宝appMdl.ModelParameters.金宝appSupport

此属性是只读的。

在训练数据中存储的训练观察数XY,指定为数字标量。

先验概率,指定为数字向量。元素的顺序先前的对应的元素Mdl.ClassNames

fitcnb规范化使用'事先的'名称-值对参数,以便金额(以前)1

的价值先前的不影响最佳拟合模型。因此,可以进行复位先前的训练结束后Mdl使用点符号。

例子:Mdl.优先=[0.2 0.8]

数据类型:|单一的

此属性是只读的。

观察权值,指定为具有相同行数的非负值向量Y.中的每个条目W指定中相应观测值的相对重要性Yfitcnb的值进行正常化“重量”名称-值对参数,以便特定类中的权重总和为该类的先验概率。

分类器性能

错误分类成本,指定为数值平方矩阵,其中成本(i, j)是将一个点分类为类的成本j如果它真正的阶级是.行对应真正的类,列对应预测的类。的行和列的顺序成本中类的顺序一会

误分类代价矩阵对角上必须为零。

的价值成本不影响培训。你可以重置成本训练结束后Mdl使用点符号。

例子:Mdl。成本=[0 0.5 ; 1 0]

数据类型:|单一的

此属性是只读的。

超参数的交叉验证优化,指定为贝叶斯优化对象或包含超参数和关联值的表。该属性是非空的“OptimizeHyperparameters”在创建模型时,名称-值对参数是非空的。的价值HyperparameterOptimizationResults要看的设置优化器野外超参数优化选项结构,当您创建模型时。

的价值优化器 的价值HyperparameterOptimizationResults
“bayesopt”(默认) 对象的类贝叶斯优化
“gridsearch”“randomsearch” 使用超参数的表,观察到的目标函数值(交叉验证损失),以及观测的秩从最低(最好)至最高(最差)

分类分数转换,指定为字符向量或函数句柄。该表总结了可用的字符向量。

价值观 描述
“doublelogit” 1 /(1 +e–2x
“invlogit” 日志(x/ (1 –x))
“ismax” 将得分最高的类的分数设置为1,并将所有其他类的分数设置为0
“分对数” 1 /(1 +e- - - - - -x
“没有”“身份” x(转换)
“标志” –1人x< 0
0代表x= 0
1为x> 0
“对称” 2x- 1
“symmetricismax” 将分数最大的班级的分数设置为1,并将所有其他班级的分数设置为-1
“symmetriclogit” 2 / (1 +e- - - - - -x) - 1

对于一个MATLAB®函数或您定义的函数,使用其函数句柄进行分数转换。函数句柄必须接受一个矩阵(原始分数)并返回相同大小的矩阵(转换后的分数)。

例子:Mdl.ScoreTransform='logit'

数据类型:char|字符串|函数处理

对象的功能

袖珍的 减少机器学习模型的规模
compareHoldout 使用新数据比较两个分类模型的精度
crossval 交叉验证机器学习模型
边缘 朴素贝叶斯分类器的分类边缘
incrementalLearner 将朴素贝叶斯分类模型转化为增量学习器
酸橙 局部可解释的模型不可知解释(LIME)
logp 朴素贝叶斯分类器的对数无条件概率密度
损失 朴素贝叶斯分类器的分类损失
边缘 朴素贝叶斯分类器的分类边缘
partialDependence 计算部分相关性
plotPartialDependence 创建部分依赖图(PDP)和个人条件期望图(ICE)
预测 使用朴素贝叶斯分类器对观察结果进行分类
resubEdge Resubstitution分类边缘
resubLoss Resubstitution分类损失
resubMargin Resubstitution分类保证金
resubPredict 使用训练的分类器对训练数据进行分类
沙普利 夏普利值
testckfold 通过重复交叉验证比较两种分类模型的准确率

例子

全部折叠

为Fisher的虹膜数据集创建朴素贝叶斯分类器。然后,在训练分类器后指定先验概率。

加载f伊舍里里斯数据集。创建X作为一个数字矩阵,包含四个花瓣测量150鸢尾。创建Y作为字符向量的细胞阵列,包含相应的虹膜种类。

负载fisheririsX =量;Y =物种;

使用预测训练朴素贝叶斯分类器X和类别标签Yfitcnb假设每个预测器是独立的,默认情况下使用正态分布拟合每个预测器。

Mdl = fitcnb (X, Y)
MDL = ClassificationNaiveBayes ResponseName: 'Y' CategoricalPredictors:[]类名:{ 'setosa' '云芝' '锦葵'} ScoreTransform: '无' NumObservations:150个DistributionNames:{ '正常' '正常' '正常' '正常'} DistributionParameters{3×4电池}属性,方法

Mdl他是一个训练有素的人分类朴素贝叶斯分类。一些Mdl属性显示在命令窗口中。

显示的属性Mdl使用点符号。例如,显示类名和先验概率。

Mdl.ClassNames
ans =3 x1细胞{'setosa'} {'versicolor'} {'virginica'}
Mdl.优先
ans =1×30.3333 0.3333 0.3333

类先验概率的顺序Mdl.优先中类的顺序Mdl.ClassNames.默认情况下,先验概率是数据中类的相对频率。或者,您可以在调用时设置先验概率fitcnb通过使用'之前的名称-值对的论点。

使用点符号训练分类器后设置先验概率。例如,将先验概率分别设置为0.5、0.2和0.3。

Mdl.Prior = [0.5 0.2 0.3]。

现在可以使用这个经过训练的分类器执行其他任务。例如,您可以使用预测或者使用crossval

训练和交叉验证一个朴素的贝叶斯分类器。fitcnb默认情况下执行10次交叉验证。然后,估计交叉验证的分类错误。

加载电离层数据集。删除前两个预测稳定性的指标。

负载电离层X=X(:,3:end);rng('默认'%的再现性

使用预测器训练和交叉验证朴素贝叶斯分类器X和类别标签Y.推荐的做法是指定类名。fitcnb假设每个预测器都是有条件的正态分布。

CVMdl = fitcnb (X, Y,“类名”,{“b”‘g’},“CrossVal”“上”
CVMdl = ClassificationPartitionedModel CrossValidatedModel: 'NaiveBayes' PredictorNames: {1x32 cell} ResponseName: 'Y' NumObservations: 351 KFold: 10 Partition: [1x1 cvpartition] ClassNames: {'b' ' 'g'} ScoreTransform: 'none'属性,方法

CVMdl是一个ClassificationPartitionedModel交叉验证的朴素贝叶斯分类器。或者,您可以交叉验证经过训练的分类朴素贝叶斯通过它传递给模型crossval

显示的第一个训练折叠CVMdl使用点符号。

CVMdl.Trained{1}
ANS = CompactClassificationNaiveBayes ResponseName: 'Y' CategoricalPredictors:[]类名:{ 'B' 的 'g'} ScoreTransform: '无' DistributionNames:{1×32细胞} DistributionParameters:{2×32细胞}属性,方法

每个折叠是紧分类朴素贝叶斯模型训练了90%的数据。

完全和紧凑朴素贝叶斯模型不能用于新的数据来预测。相反,使用它们通过传递来估计泛化误差CVMdlkfoldLoss

genError=kfoldLoss(CVMdl)
genError = 0.1852

平均而言,泛化误差约为19%。

您可以为预测指定不同的条件分布,或调整条件分布参数来减少泛化误差。

更多关于

全部展开

算法

全部展开

参考

哈斯蒂,特雷弗,罗伯特·蒂布希拉尼和杰罗姆·弗里德曼。统计学习的要素:数据挖掘、推理和预测.第二次。斯普林格系列统计。纽约:施普林格,2009年https://doi.org/10.1007/978-0-387-84858-7。

[2] Manning, Christopher D., Prabhakar Raghavan, Hinrich Schütze。信息检索概论,纽约:剑桥大学出版社,2008。

扩展能力

R2014b中引入