主要内容

fitSVMPosterior

拟合后验概率

描述

例子

ScoreSVMModel= fitSVMPosterior (SVMModel返回ScoreSVMModel,它是一个经过训练的支持向量机(SVM)分类万博1manbetx器,包含用于两类学习的最优分数到后验概率转换函数。

该软件使用支持向量机分类器拟合适当的分数-后验概率转换函数SVMModel,并使用存储的预测数据进行交叉验证(SVMModel。X)和类标签(SVMModel。Y).变换函数计算观察结果归为正类的后验概率(SVMModel.Classnames (2)).

  • 如果类是不可分割的,那么变换函数就是乙状结肠函数

  • 如果这些类是完全可分离的,变换函数就是阶跃函数

  • 在两类学习中,如果其中一个类的相对频率为0,则变换函数为常数函数fitSVMPosterior不适合单课学习。

  • 如果SVMModel是一个ClassificationSVM分类器,然后软件通过10倍交叉验证估计最优转换函数[1].否则,SVMModel一定是ClassificationPartitionedModel分类器。SVMModel指定交叉验证方法。

  • 软件将最优变换函数存储在ScoreSVMModel。ScoreTransform

ScoreSVMModel= fitSVMPosterior (SVMModel资源描述ResponseVarName返回一个经过训练的支持向量分类器,它万博1manbetx包含来自经过训练的、紧凑的支持向量分类器的转换函数SVMModel.该软件利用表中的预测数据估计得分转换函数资源描述和类标签资源描述。ResponseVarName

ScoreSVMModel= fitSVMPosterior (SVMModel资源描述Y返回一个经过训练的支持向量分类器,它万博1manbetx包含来自经过训练的、紧凑的支持向量分类器的转换函数SVMModel.该软件利用表中的预测数据估计得分转换函数资源描述和类标签Y

例子

ScoreSVMModel= fitSVMPosterior (SVMModelXY返回一个经过训练的支持向量分类器,它万博1manbetx包含来自经过训练的、紧凑的支持向量分类器的转换函数SVMModel.该软件利用预测数据估计得分转换函数X和类标签Y

例子

ScoreSVMModel= fitSVMPosterior (<年代pan class="argument_placeholder">___名称,值使用一个或多个指定的其他选项名称,值提供的Pair参数SVMModel是一个ClassificationSVM分类器。例如,您可以指定要使用的折叠数k-fold交叉验证。

例子

ScoreSVMModelScoreTransform= fitSVMPosterior(<年代pan class="argument_placeholder">___此外,返回转换函数参数(ScoreTransform)使用前面语法中的任何输入参数。

例子

全部折叠

载入费雪的虹膜数据集。使用花瓣的长度和宽度训练分类器,并从数据中去除virginica物种。

负载<年代pan style="color:#A020F0">fisheririsclassKeep = ~strcmp(物种,<年代pan style="color:#A020F0">“virginica”);X = meas(classKeep,3:4);y =物种(classKeep);gscatter (X (: 1) X (:, 2), y);标题(<年代pan style="color:#A020F0">“虹膜测量散点图”)包含(<年代pan style="color:#A020F0">“花瓣长度”) ylabel (<年代pan style="color:#A020F0">“花瓣宽度”)传说(<年代pan style="color:#A020F0">“Setosa”,<年代pan style="color:#A020F0">“多色的”)

图中包含一个axes对象。标题为“虹膜测量散点图”的axis对象包含两个类型为line的对象。这些物品代表塞托萨,Versicolor。

这些类是完全可分离的。因此,分数变换函数是一个阶跃函数。

使用这些数据训练SVM分类器。使用10倍交叉验证(默认)交叉验证分类器。

rng (1);CVSVMModel = fitcsvm(X,y,<年代pan style="color:#A020F0">“CrossVal”,<年代pan style="color:#A020F0">“上”);

CVSVMModel是经过训练的ClassificationPartitionedModel支持向量机分类器。

估计将分数转换为后验概率的阶跃函数。

[ScoreCVSVMModel,ScoreParameters] = fitsvm后部(CVSVMModel);
警告:类是完全分离的。最佳得分-后验变换是一个阶梯函数。

fitSVMPosterior做以下工作:

  • 使用软件存储的数据CVSVMModel来拟合变换函数

  • 每当类是可分离的时发出警告

  • 存储阶跃函数ScoreCSVMModel。ScoreTransform

显示评分函数类型及其参数值。

ScoreParameters
ScoreParameters =<年代pan class="emphasis">带有字段的结构:类型:'step' LowerBound: -0.8431 UpperBound: 0.6897 PositiveClassProbability: 0.5000

ScoreParameters是一个包含四个字段的结构数组:

  • 分数转换函数类型(类型

  • 班级负边界对应的分数(下界

  • 班级正边界对应的分数(UpperBound

  • 正类概率(PositiveClassProbability

由于类是可分离的,阶梯函数将分数转换为两者之一01,即观察到的是彩色虹膜的后验概率。

加载电离层数据集。

负载<年代pan style="color:#A020F0">电离层

这个数据集的类是不可分离的。

训练SVM分类器。使用10倍交叉验证(默认)进行交叉验证。标准化预测器并指定类顺序是一种很好的做法。

rng (1)<年代pan style="color:#228B22">%用于重现性CVSVMModel = fitcsvm(X,Y,<年代pan style="color:#A020F0">“类名”, {<年代pan style="color:#A020F0">“b”,<年代pan style="color:#A020F0">‘g’},<年代pan style="color:#A020F0">“标准化”,真的,<年代pan style="color:#0000FF">...“CrossVal”,<年代pan style="color:#A020F0">“上”);ScoreTransform = CVSVMModel。ScoreTransform
ScoreTransform = 'none'

CVSVMModel是经过训练的ClassificationPartitionedModel支持向量机分类器。正类是‘g’.的ScoreTransform属性是没有一个

估计将观察评分映射到被分类为的观察的后验概率的最佳评分函数‘g’

[ScoreCVSVMModel,ScoreParameters] = fitsvm后部(CVSVMModel);ScoreTransform = ScoreCVSVMModel。ScoreTransform
ScoreTransform = '@(S)sigmoid(S,-9.481373e-01,-1.218931e-01)'
ScoreParameters
ScoreParameters =<年代pan class="emphasis">带有字段的结构:斜率:-0.9481截距:-0.1219

ScoreTransform为最优分数变换函数。ScoreParameters包含得分变换函数、斜率估计和截距估计。

你可以估计测试样本的后验概率ScoreCVSVMModelkfoldPredict

估计支持向量机算法测试集的正类后验概率。

加载电离层数据集。

负载<年代pan style="color:#A020F0">电离层

训练SVM分类器。指定20%的抵制样本。标准化预测器并指定类顺序是一种很好的做法。

rng (1)<年代pan style="color:#228B22">%用于重现性CVSVMModel = fitcsvm(X,Y,<年代pan style="color:#A020F0">“坚持”, 0.2,<年代pan style="color:#A020F0">“标准化”,真的,<年代pan style="color:#0000FF">...“类名”, {<年代pan style="color:#A020F0">“b”,<年代pan style="color:#A020F0">‘g’});

CVSVMModel是经过训练的ClassificationPartitionedModel旨在分类器。

估计将观察评分映射到被分类为的观察的后验概率的最佳评分函数‘g’

ScoreCVSVMModel = fitsvm后部(CVSVMModel);

ScoreSVMModel是经过训练的ClassificationPartitionedModel交叉验证的分类器包含从训练数据估计的最优分数转换函数。

估计样本外正类后验概率。显示前10个样本外观察结果。

[~,OOSPostProbs] = kfoldPredict(ScoreCVSVMModel);indx = ~isnan(OOSPostProbs(:,2));hoObs = find(indx);<年代pan style="color:#228B22">坚持观察数字OOSPostProbs = [hoObs, OOSPostProbs(indx,2)];表(OOSPostProbs (1:10, 1), OOSPostProbs (1:10), 2),<年代pan style="color:#0000FF">...“VariableNames”, {<年代pan style="color:#A020F0">“ObservationIndex”,<年代pan style="color:#A020F0">“PosteriorProbability”})
ans =<年代pan class="emphasis">10×2表ObservationIndex PosteriorProbability ________________ ____________________ 6 0.17379 7 0.89638 8 0.0076606 9 0.91603 16 0.026714 22 4.6086e-06 23 0.9024 24 2.4131e-06 38 0.00042687 41 0.86427

输入参数

全部折叠

训练过的SVM分类器,指定为ClassificationSVMCompactClassificationSVM,或ClassificationPartitionedModel分类器。

如果SVMModel是一个ClassificationSVM分类器,然后可以设置可选的名称-值对参数。

如果SVMModel是一个CompactClassificationSVM分类器,那么您必须输入预测器数据X和类标签Y

用于训练模型的样例数据,指定为表。每一行资源描述对应一个观察结果,每一列对应一个预测变量。可选地,资源描述可以包含用于响应变量和观察权重的附加列。资源描述必须包含用于训练的所有预测器SVMModel.不允许多列变量和字符向量的单元格数组以外的单元格数组。

如果资源描述包含用于训练的响应变量SVMModel,则不需要指定ResponseVarNameY

如果你接受过培训SVMModel使用表中包含的样例数据,则输入数据为fitSVMPosterior也必须在表中。

如果你设置“标准化”,真的fitcsvm当训练SVMModel,软件对预测数据的列进行标准化处理SVMModel。μ的标准差SVMModel。σ

数据类型:表格

用于估计得分到后验概率转换函数的预测数据,指定为矩阵。

每一行X对应于一个观察结果(也称为实例或示例),每一列对应于一个变量(也称为特征)。

的长度Y的行数X必须是平等的。

如果你设置“标准化”,真的fitcsvm当训练SVMModel,然后利用标准化数据拟合变换函数参数估计。

数据类型:|

中指定为变量名的响应变量名资源描述.如果资源描述包含用于训练的响应变量SVMModel,则不需要指定ResponseVarName

如果你指定ResponseVarName,则必须以字符向量或字符串标量的形式执行。例如,如果响应变量存储为资源描述。响应,然后指定ResponseVarName作为“响应”.的所有列资源描述,包括资源描述。响应,作为预测指标。

响应变量必须是类别、字符或字符串数组、逻辑或数字向量或字符向量的单元格数组。如果响应变量是字符数组,则每个元素必须对应数组中的一行。

数据类型:字符|字符串

用于估计得分-后置概率转换函数的类标签,指定为类别、字符或字符串数组、逻辑或数字向量或字符向量的单元格数组。

如果Y是字符数组,则每个元素必须对应一个类标签。

的长度Y的行数X必须是平等的。

数据类型:分类|字符|字符串|逻辑|||细胞

名称-值参数

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

在R2021a之前,名称和值之间用逗号隔开,并括起来的名字在报价。

例子:“KFold”,8当。执行8倍交叉验证SVMModel是一个ClassificationSVM分类器。

用于计算转换函数的交叉验证分区,指定为逗号分隔的对,由“CVPartition”和一个cvpartition创建的分区对象cvpartition.在创建交叉验证模型时,你一次只能使用这四个选项中的一个:“KFold”“坚持”“Leaveout”,或“CVPartition”

crossval的名值对参数fitcsvm将数据分成使用cvpartition

例子:假设您创建一个随机分区,对500个观察结果进行5次交叉验证cvp = cvpartition(500,'KFold',5).然后,您可以使用指定交叉验证的模型“CVPartition”,本量利

用于计算转换函数的拒绝验证数据的一部分,指定为逗号分隔的对,由“坚持”和(0,1)范围内的标量值。坚持验证测试数据的指定部分,并使用剩余的数据进行训练。

在创建交叉验证模型时,你一次只能使用这四个选项中的一个:“KFold”“坚持”“Leaveout”,或“CVPartition”

例子:“坚持”,0.1

数据类型:|

计算转换函数时使用的折叠数,指定为逗号分隔的对,由“KFold”和一个大于1的正整数。

在创建交叉验证模型时,你一次只能使用这四个选项中的一个:“KFold”“坚持”“Leaveout”,或“CVPartition”

例子:“KFold”,8

数据类型:|

省略交叉验证标志,指示是否使用省略交叉验证来计算转换函数,指定为逗号分隔的对,由“Leaveout”而且“上”“关闭”.通过指定使用遗漏一个交叉验证“Leaveout”,“上”

在创建交叉验证模型时,你一次只能使用这四个选项中的一个:“KFold”“坚持”“Leaveout”,或“CVPartition”

例子:“Leaveout”,“上”

输出参数

全部折叠

经过训练的支持向量机分类器,包含估计的得分转换函数,返回为ClassificationSVMCompactClassificationSVM,或ClassificationPartitionedModel分类器。

ScoreSVMModel分类器类型与SVMModel分类器类型。

要估计后验概率,通过ScoreSVMModel和预测数据预测.如果你设置“标准化”,真的fitcsvm训练SVMModel,然后预测的列标准化X运用相应的手段SVMModel。μ的标准差SVMModel。σ

最佳得分-后验概率转换函数参数,指定为结构数组。如果字段类型是:

  • 乙状结肠,然后ScoreTransform有这些字段:

  • 一步,然后ScoreTransform有这些字段:

    • PositiveClassProbability的值。π阶跃函数π代表:

      • 一个观测结果处于正类的概率。

      • 得分在区间(的后验概率下界UpperBound).

    • 下界:值。<年代pan class="inlineequation"> 马克斯 y n 1 年代 n 在阶跃函数中。它代表了区间的下界,该区间赋予了正类的后验概率PositiveClassProbability分数。任何得分低于下界有后验概率是正类吗0

    • UpperBound:值。<年代pan class="inlineequation"> 最小值 y n + 1 年代 n 在阶跃函数中。它代表了区间的上界,该区间赋予了正类的后验概率PositiveClassProbability.任何得分大于UpperBound有后验概率是正类吗1

  • 常数,然后ScoreTransform。PredictedClass包含类预测的名称。

    这个结果与SVMModel。一会.后验,后验观察到的后验概率ScoreTransform。PredictedClass总是1

更多关于

全部折叠

乙状结肠函数

映射分数的sigmoid函数年代<年代ub>j与观察相对应j对正类的后验概率是

P 年代 j 1 1 + 经验值 一个 年代 j + B

的值类型领域的ScoreTransform乙状结肠,然后是参数一个而且B对应于字段规模而且拦截ScoreTransform,分别。

阶跃函数

映射分数的阶跃函数年代<年代ub>j与观察相对应j对正类的后验概率是

P 年代 j 0 年代 < 马克斯 y k 1 年代 k π 马克斯 y k 1 年代 k 年代 j 最小值 y k + 1 年代 k 1 年代 j > 最小值 y k + 1 年代 k

地点:

  • 年代<年代ub>j分数是观察的吗j

  • +1和-1分别表示正类和负类。

  • π是观测值属于正类的先验概率。

的值类型领域的ScoreTransform一步,然后是数量<年代pan class="inlineequation"> 马克斯 y k 1 年代 k 而且<年代pan class="inlineequation"> 最小值 y k + 1 年代 k 对应于字段下界而且UpperBoundScoreTransform,分别。

常数函数

常数函数将样本中的所有分数映射为后验概率1或0。

如果所有的观察结果都具有后验概率1,那么它们就有望来自正类。

如果所有观察结果的后验概率都为0,那么它们就不可能来自正类。

提示

  • 该过程描述了一种预测正类后验概率的方法。

    1. 通过传递数据来训练SVM分类器fitcsvm.结果是一个经过训练的SVM分类器,例如SVMModel,用来存储数据。软件设置分数转换函数属性(SVMModel。ScoreTransformation)没有一个

    2. 传递经过训练的SVM分类器SVMModelfitSVMPosteriorfitPosterior.结果,如:ScoreSVMModel,为训练后的SVM分类器SVMModel,除了软件设置ScoreSVMModel。ScoreTransformation到最优分数的变换函数。

    3. 传递预测器数据矩阵和经过训练的SVM分类器,其中包含最优分数转换函数(ScoreSVMModel)预测.的第二个输出参数中的第二列预测存储与预测器数据矩阵的每一行对应的正类后验概率。

      如果跳过第二步,那么预测返回正的类得分而不是正的类后验概率。

  • 在拟合后验概率之后,可以生成预测新数据标签的C/ c++代码。生成C/ c++代码需要<年代pan class="entity">MATLAB<年代up>®编码器™.详情请参见代码生成简介

算法

如果您重新估计得分-后验概率转换函数,也就是说,如果您将SVM分类器传递给fitPosteriorfitSVMPosterior和它的ScoreTransform财产不是没有一个,然后软件:

  • 显示警告

  • 将原始转换函数重置为“没有”在估计新的之前

参考文献

[1] Platt, J.“支持向量机的概率输出和与正则化似然方法的比较”。万博1manbetx:大余量分类器的研究进展.剑桥,马萨诸塞州:麻省理工学院出版社,2000年,第61-74页。

版本历史

在R2014a中介绍

另请参阅

|<年代pan itemscope itemtype="//www.tianjin-qmedu.com/help/schema/MathWorksDocPage/SeeAlso" itemprop="seealso">|<年代pan itemscope itemtype="//www.tianjin-qmedu.com/help/schema/MathWorksDocPage/SeeAlso" itemprop="seealso">|<年代pan itemscope itemtype="//www.tianjin-qmedu.com/help/schema/MathWorksDocPage/SeeAlso" itemprop="seealso">|<年代pan itemscope itemtype="//www.tianjin-qmedu.com/help/schema/MathWorksDocPage/SeeAlso" itemprop="seealso">|<年代pan itemscope itemtype="//www.tianjin-qmedu.com/help/schema/MathWorksDocPage/SeeAlso" itemprop="seealso">|<年代pan itemscope itemtype="//www.tianjin-qmedu.com/help/schema/MathWorksDocPage/SeeAlso" itemprop="seealso">|<年代pan itemscope itemtype="//www.tianjin-qmedu.com/help/schema/MathWorksDocPage/SeeAlso" itemprop="seealso">