CompactClassificationNaiveBayes
用于多类分类的简洁朴素贝叶斯分类器
描述
CompactClassificationNaiveBayes
是朴素贝叶斯分类器的紧凑版本。紧凑分类器不包括用于训练朴素贝叶斯分类器的数据。因此,您不能使用紧凑分类器执行某些任务,例如交叉验证。使用简洁朴素的贝叶斯分类器来完成诸如预测数据标签之类的任务。
创建
创建一个CompactClassificationNaiveBayes
模特出身丰满,训练有素ClassificationNaiveBayes
分类器紧凑的
.
属性
预测性能
PredictorNames
- - - - - -预测的名字
字符向量的单元格数组
此属性是只读的。
预测器名称,指定为字符向量的单元格数组。元素的顺序PredictorNames
对应于预测器名称在训练数据中出现的顺序X
.
ExpandedPredictorNames
- - - - - -扩展的预测器名称
字符向量的单元格数组
此属性是只读的。
扩展的预测器名称,指定为字符向量的单元格数组。
如果模型对分类变量使用哑变量编码,则ExpandedPredictorNames
包括描述展开变量的名称。否则,ExpandedPredictorNames
和PredictorNames
.
CategoricalPredictors
- - - - - -分类预测指标
正整数向量|[]
此属性是只读的。
分类预测指标,指定为正整数向量。CategoricalPredictors
包含指示相应预测符是分类的索引值。索引值在1和之间p
,在那里p
用于训练模型的预测器的数量。如果没有一个预测符是分类的,则此属性为空([]
).
数据类型:单
|双
CategoricalLevels
- - - - - -多元多项式水平
单元阵列
此属性是只读的。
多元多项式水平,指定为单元格数组。的长度CategoricalLevels
等于预测器的数目(大小(X, 2)
).
细胞CategoricalLevels
对应于您指定为的预测器“mvmn”
在训练过程中,它们具有多元多项分布。不对应于多元多项分布的单元格为空([]
).
如果预测j多元多项式吗CategoricalLevels {
j}
是一个列表的所有不同的值预测j在样本中。南
S被移除独特的(X (:, j))
.
预测器分布性质
DistributionNames
- - - - - -预测分布
“正常”
(默认)|“内核”
|“锰”
|“mvmn”
|字符向量的单元格数组
此属性是只读的。
预测器分布,指定为字符向量或字符向量的单元格数组。fitcnb
使用预测器分布对预测器进行建模。该表列出了可用的发行版。
价值 | 描述 |
---|---|
“内核” |
核平滑密度估计 |
“锰” |
多项分布。如果你指定锰 ,则所有特征都是多项分布的分量。因此,不能包含“锰” 作为字符串数组或字符向量单元格数组的元素。详细信息请参见多项式分布的估计概率. |
“mvmn” |
多元多项分布。详细信息请参见多元多项分布的估计概率. |
“正常” |
正态(高斯)分布 |
如果DistributionNames
是1 × -吗P那么,就是字符向量的单元格数组fitcnb
对特性建模j使用元素中的分布j单元格数组的。
例子:“锰”
例子:{“内核”、“正常”、“内核”}
数据类型:字符
|字符串
|细胞
DistributionParameters
- - - - - -分布参数估计
单元阵列
此属性是只读的。
分布参数估计,指定为单元格数组。DistributionParameters
是一个K——- - - - - -D单元格数组,其中单元格(k,d)包含预测器实例的分布参数估计值d在课堂上k.行顺序对应于属性中类的顺序一会
,预测器的顺序对应于的列的顺序X
.
如果类k
没有观察到的预测j
,则{分布
为空(k
,j
}[]
).
的要素DistributionParameters
依赖于预测器的分布。中的值DistributionParameters {
.k
,j
}
预测器分布j | 预测器单元格阵列的值j 和类k |
---|---|
内核 |
一个KernelDistribution 模型。使用单元格索引和点表示法显示属性。例如,要显示第三类中预测器2的核密度的估计带宽,使用Mdl.DistributionParameters {3 2} .Bandwidth . |
锰 |
表示该标记的概率的标量j出现在课堂上k.详细信息请参见多项式分布的估计概率. |
mvmn |
一个数字向量,包含每种可能级别预测器的概率j在课堂上k.该软件排序概率的所有唯一级别的预测器的顺序j(存储在属性中CategoricalLevels ).详情请参见多元多项分布的估计概率. |
正常的 |
一个2乘1的数字向量。第一个元素是样本均值,第二个元素是样本标准差。详情请参见正态分布估计 |
内核
- - - - - -核平滑型
“正常”
(默认)|“盒子”
|单元阵列|……
此属性是只读的。
内核平滑器类型,指定为内核名称或内核名称的单元格数组。的长度内核
等于预测器的数目(大小(X, 2)
).内核{
j}
对应于预测器j并包含描述内核平滑器类型的字符向量。如果单元格为空([]
),然后fitcnb
没有将核分布拟合到相应的预测器。
该表描述了支持的内核平滑类型。我{u}表示指示器函数。
价值 | 内核 | 公式 |
---|---|---|
“盒子” |
框(统一) |
|
“epanechnikov” |
Epanechnikov |
|
“正常” |
高斯 |
|
“三角形” |
三角 |
|
例子:“盒子”
例子:{“epanechnikov”、“正常”}
数据类型:字符
|字符串
|细胞
支持
- - - - - -内核平滑密度支持
单元阵列
此属性是只读的。
内核平滑密度支持,指定为单元格数组。的长度支持
等于预测器的数目(大小(X, 2)
).单元格表示区域fitcnb
应用核密度。如果单元格为空([]
),然后fitcnb
没有将核分布拟合到相应的预测器。
该表描述了支持的选项。
价值 | 描述 |
---|---|
1乘2的数字行向量 | 例如,密度支持应用于指定的边界(L U) ,在那里l 而且U 分别是有限下界和有限上界。 |
“积极” |
密度支持适用于所有正实值。 |
“无限” |
密度支持适用于所有实值。 |
宽度
- - - - - -内核平滑窗口宽度
数字矩阵
此属性是只读的。
内核平滑窗口宽度,指定为数值矩阵。宽度
是一个K——- - - - - -P矩阵,K是类的数量在数据,和P是预测因子的数目(大小(X, 2)
).
宽度(
核平滑窗宽是否为核平滑密度的预测器k
,j
)j
内部类k
.南
列中Sj
表明,fitcnb
不符合预测器j
使用核密度。
响应特性
一会
- - - - - -唯一的类名
分类数组|字符数组|逻辑向量|数值向量|字符向量的单元格数组
此属性是只读的。
训练模型中使用的唯一类名,指定为类别或字符数组、逻辑或数字向量或字符向量的单元格数组。
一会
数据类型与Y
,并已K字符数组的元素(或行)。(该软件将字符串数组视为字符向量的单元格数组。)
数据类型:分类
|字符
|字符串
|逻辑
|双
|细胞
ResponseName
- - - - - -响应变量名
特征向量
此属性是只读的。
响应变量名,指定为字符向量。
数据类型:字符
|字符串
训练属性
之前
- - - - - -先验概率
数值向量
先验概率,用数字向量表示。元素的顺序之前
对应于的元素Mdl。一会
.
fitcnb
使先验概率归一化“之前”
名称-值对参数,这样总和(前)
=1
.
的价值之前
不影响最佳拟合模型。因此,您可以进行重置之前
训练后Mdl
使用点表示法。
例子:Mdl。Prior = [0.2 0.8]
数据类型:双
|单
分类器性能
成本
- - - - - -误分类代价
方阵
错误分类代价,指定为数字方阵,其中成本(i, j)
将一个点分类的成本是多少j
如果它真正的阶级是我
.行对应真实的类,列对应预测的类。的行和列的顺序成本
中类的顺序对应一会
.
错误分类代价矩阵对角线上必须为零。
的价值成本
不影响训练。你可以重置成本
训练后Mdl
使用点表示法。
例子:Mdl。成本=[0 0.5 ; 1 0]
数据类型:双
|单
ScoreTransform
- - - - - -分类分数转换
“没有”
(默认)|“doublelogit”
|“invlogit”
|“ismax”
|分对数的
|函数处理|……
分类分数转换,指定为字符向量或函数句柄。该表总结了可用的字符向量。
价值 | 描述 |
---|---|
“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 |
对于MATLAB®函数或您定义的函数,使用其函数句柄进行分数转换。函数句柄必须接受一个矩阵(原始分数)并返回一个相同大小的矩阵(转换后的分数)。
例子:Mdl。ScoreTransform = 'logit'
数据类型:字符
|字符串
|函数处理
对象的功能
compareHoldout |
比较使用新数据的两种分类模型的准确性 |
边缘 |
朴素贝叶斯分类器的分类边 |
石灰 |
局部可解释模型不可知解释(LIME) |
logp |
朴素贝叶斯分类器的对数无条件概率密度 |
损失 |
朴素贝叶斯分类器的分类损失 |
保证金 |
朴素贝叶斯分类器的分类边缘 |
partialDependence |
计算部分依赖关系 |
plotPartialDependence |
创建部分依赖图(PDP)和个别条件期望图(ICE) |
预测 |
使用朴素贝叶斯分类器对观测数据进行分类 |
沙普利 |
沙普利值 |
例子
减小朴素贝叶斯分类器的尺寸
通过移除训练数据来减小全朴素贝叶斯分类器的大小。全朴素贝叶斯分类器保存训练数据。您可以使用紧凑朴素贝叶斯分类器来提高内存效率。
加载电离层
数据集。去掉前两个稳定性预测因子。
负载电离层X = X(:,3:end);
使用预测器训练朴素贝叶斯分类器X
和类别标签Y
.推荐的做法是指定类名。fitcnb
假设每个预测因子都是有条件的正态分布。
Mdl = fitcnb(X,Y,“类名”, {“b”,‘g’})
Mdl = ClassificationNaiveBayes ResponseName: 'Y' CategoricalPredictors: [] ClassNames: {'b' 'g'} ScoreTransform: 'none' NumObservations: 351 DistributionNames: {1x32 cell} DistributionParameters: {2x32 cell}属性,方法
Mdl
是受过训练的ClassificationNaiveBayes
分类器。
减小朴素贝叶斯分类器的大小。
CMdl =紧凑(Mdl)
CMdl = CompactClassificationNaiveBayes ResponseName: 'Y' CategoricalPredictors: [] ClassNames: {'b' 'g'} ScoreTransform: 'none' DistributionNames: {1x32 cell} DistributionParameters: {2x32 cell}属性,方法
CMdl
是受过训练的CompactClassificationNaiveBayes
分类器。
显示每个分类器使用的内存量。
谁(“Mdl”,“CMdl”)
名称大小字节类属性CMdl 1x1 15060 classreg.learning.classif.CompactClassificationNaiveBayes Mdl 1x1 111190 ClassificationNaiveBayes
完整朴素贝叶斯分类器(Mdl
)比紧凑朴素贝叶斯分类器(CMdl
).
为了有效地标记新的观察结果,您可以删除Mdl
从MATLAB®工作区,然后传递CMdl
和新的预测值预测
.
训练和交叉验证朴素贝叶斯分类器
训练并交叉验证朴素贝叶斯分类器。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
交叉验证,朴素贝叶斯分类器。或者,你可以交叉验证一个训练过的ClassificationNaiveBayes
通过传递它来建模crossval
.
显示第一次训练折叠CVMdl
使用点表示法。
CVMdl。训练有素的{1}
ans = CompactClassificationNaiveBayes ResponseName: 'Y' CategoricalPredictors: [] ClassNames: {'b' 'g'} ScoreTransform: 'none' DistributionNames: {1x32 cell} DistributionParameters: {2x32 cell}属性,方法
每条折线都是CompactClassificationNaiveBayes
模型在90%的数据上进行训练。
完整和紧凑朴素贝叶斯模型不用于新数据的预测。相反,使用它们通过传递来估计泛化误差CVMdl
来kfoldLoss
.
genError = kfoldLoss(cvdl)
genError = 0.1852
平均而言,泛化误差约为19%。
您可以为预测器指定不同的条件分布,或者调优条件分布参数以减少泛化误差。
更多关于
Bag-of-Tokens模型
在代币袋模型中,预测器的值j令牌出现的非负数吗j在观察中。多项模型中类别(箱子)的数量是不同标记的数量(预测器的数量)。
朴素贝叶斯
朴素贝叶斯是一种对数据应用密度估计的分类算法。
该算法利用贝叶斯定理,并(天真地)假设预测器是条件独立的,给定类。尽管在实践中通常违反假设,朴素贝叶斯分类器倾向于产生对有偏类密度估计具有鲁棒性的后验分布,特别是当后验为0.5(决策边界)时。[1].
朴素贝叶斯分类器将观测值分配给最可能的类(换句话说,就是最可能的类)后验最大值决策规则)。显式地,该算法采取以下步骤:
估计每个类内预测因子的密度。
根据贝叶斯规则建立后验概率模型。也就是说,对所有人来说k= 1,…,K,
地点:
Y是与观测值的类指数对应的随机变量。
X1、……XP是观察到的随机预测因子。
一个类指数的先验概率是多少k.
通过估计每个类的后验概率来对观测结果进行分类,然后将观测结果分配给产生最大后验概率的类。
如果预测因子组成多项分布,则后验概率 在哪里 是多项式分布的概率质量函数。
算法
正态分布估计
如果预测变量j
有一个条件正态分布(见DistributionNames
属性),软件通过计算特定类别的加权平均值和加权标准差的无偏估计来拟合数据的分布。每门课k:
预测器的加权平均值j是
在哪里w我重量是用来观察的吗我.该软件将一个类中的权重规范化,使它们之和为该类的先验概率。
预测器加权标准差的无偏估计量j是
在哪里z1 |k是类内权重的和吗k而且z2 |k是类内权重的平方和吗k.
多项式分布的估计概率
如果所有预测变量组成条件多项分布(参见DistributionNames
属性),该软件适合使用Bag-of-Tokens模型.软件存储该令牌的概率j
出现在课堂上k
在财产中DistributionParameters {
.添加平滑[2],则估计概率为k
,j
}
地点:
哪个是令牌出现的加权次数j在课堂上k.
nk课堂上的观察次数是多少k.
重量是用来观察的吗我.该软件将一个类中的权重规范化,使它们之和为该类的先验概率。
类中所有令牌出现的加权总数是多少k.
多元多项分布的估计概率
如果预测变量j
具有条件多元多项分布(参见DistributionNames
属性),软件遵循以下过程:
该软件收集的唯一级别的列表,存储排序的列表
CategoricalLevels
,并将每一层视为一个箱子。预测器和类的每个组合都是一个独立的多项式随机变量。每门课k,该软件使用存储在
CategoricalLevels {
.j
}该软件存储概率预测器
j
在课堂上k
有水平l在财产中DistributionParameters {
,适用于各级k
,j
}CategoricalLevels {
.添加平滑[2],则估计概率为j
}地点:
哪个是哪个预测器的加权观测数j=l在课堂上k.
nk课堂上的观察次数是多少k.
如果xij=l,否则为0。
重量是用来观察的吗我.该软件将一个类中的权重规范化,使它们之和为该类的先验概率。
米j不同水平的数量是预测因素吗j.
米k在课堂上观察的加权数是多少k.
参考文献
哈斯蒂、特雷弗、罗伯特·蒂布谢拉尼和杰罗姆·弗里德曼。统计学习的要素:数据挖掘、推断和预测.第二版。施普林格统计学系列。纽约:施普林格,2009。https://doi.org/10.1007/978 - 0 - 387 - 84858 - 7。
[2]曼宁,克里斯托弗·D,普拉巴卡尔·拉格哈万,辛里奇Schütze。信息检索概论纽约:剑桥大学出版社,2008年。
扩展功能
C/ c++代码生成
使用MATLAB®Coder™生成C和c++代码。
使用注意事项和限制:
的
预测
函数支持代码生成。当你训练一个朴素贝叶斯模型时
fitcnb
,则适用以下限制。的值
“DistributionNames”
名称-值对参数不能包含“锰”
.的值
“ScoreTransform”
名称-值对参数不能是匿名函数。
有关更多信息,请参见代码生成简介.
版本历史
在R2014b中引入
MATLAB命令
你点击了一个对应于这个MATLAB命令的链接:
在MATLAB命令窗口中输入该命令来运行该命令。Web浏览器不支持MATLAB命令。
您也可以从以下列表中选择一个网站:
如何获得最佳的网站性能
选择中国站点(中文或英文)以获得最佳站点性能。其他MathWorks国家站点没有针对您所在位置的访问进行优化。