主要内容

fitPosterior

拟合支持向量机(SVM)分类器的后验概率金宝app

描述

例子

ScoreSVMModel= fitPosterior (SVMModel返回一个训练好的支持向量机(SVM)金宝app分类器ScoreSVMModel包含用于两类学习的最优分数-后验概率转换函数。详情请参见算法

例子

ScoreSVMModelScoreTransform= fitPosterior(SVMModel另外,返回最优分数-后验概率转换函数参数。

例子

ScoreSVMModelScoreTransform= fitPosterior(SVMModel名称,值使用由一个或多个名-值对参数指定的其他选项。例如,您可以指定折叠数或保留样本比例。

例子

全部折叠

加载电离层数据集。该数据集有34个预测器和351个雷达返回的二进制响应,要么是坏的(“b”)或好(‘g’).

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

训练支持向量机(金宝appSVM)分类器。标准化数据并指定这一点‘g’是正类。

SVMModel = fitcsvm(X,Y,<年代pan style="color:#A020F0">“类名”, {<年代pan style="color:#A020F0">“b”,<年代pan style="color:#A020F0">‘g’},<年代pan style="color:#A020F0">“标准化”,真正的);

SVMModel是一个ClassificationSVM分类器。

拟合最优得分-后验概率转换函数。

rng (1);<年代pan style="color:#228B22">%用于再现性ScoreSVMModel = fitPosterior(vmmodel)
ScoreSVMModel = ClassificationSVM ResponseName: 'Y' CategoricalPredictors: [] ClassNames: {'b' 'g'} ScoreTransform: '@(S)sigmoid(S,-9.482430e-01,-1.217774e-01)' NumObservations: 351 Alpha: [90x1 double] Bias: -0.1342 KernelParameters: [1x1 struct] Mu:[0.8917 0 0.6413 0.0444 0.6011 0.1159 0.5501…]西格玛:[0.3112 0 0.4977 0.4414 0.5199 0.4608 0.4927…] BoxConstraints: [351x1 double] ConvergenceInfo: [1x1 struct] Is金宝appSupportVector: [351x1 logical]求解器:“SMO”属性,方法

由于类是不可分割的,因此分数转换函数(ScoreSVMModel。ScoreTransform)为sigmoid函数。

估计训练数据的分数和正类后验概率。显示前10个观察结果。

[label,scores] = resubPredict(SVMModel);[~,postProbs] = resubPredict(ScoreSVMModel);表(Y(1:10),标签(1:10),分数(1:10),2),postProbs (1:10), 2),<年代pan style="color:#A020F0">“VariableNames”,<年代pan style="color:#0000FF">...{<年代pan style="color:#A020F0">“TrueLabel”,<年代pan style="color:#A020F0">“PredictedLabel”,<年代pan style="color:#A020F0">“分数”,<年代pan style="color:#A020F0">“PosteriorProbability”})
ans =<年代pan class="emphasis">10×4表TrueLabel PredictedLabel得分PosteriorProbability  _________ ______________ _______ ____________________ {' 1.4862 - 0.82216 g’}{‘g’}{b} {b} -1.0003 - 0.30433{‘g’}{‘g’}1.8685 - 0.86917 {b} {b} -2.6457 - 0.084171{‘g’}{‘g’}1.2807 - 0.79186 {b} {b} -1.4616 - 0.22025{‘g’}{‘g’}2.1674 - 0.89816 {b} {b} -5.7085 - 0.00501{‘g’}{‘g’}2.4798 - 0.92224 {b} {b} -2.7812 - 0.074781

通过OVA (one-versus-all)分类过程训练一个多类SVM分类器,然后绘制每个类的概率等高线。要直接实现OVA,请参见fitcecoc

加载费雪的虹膜数据集。使用花瓣的长度和宽度作为预测数据。

负载<年代pan style="color:#A020F0">fisheririsX = meas(:,3:4);Y =物种;

检查数据的散点图。

图gscatter (X (: 1), (:, 2), Y);标题(<年代pan style="color:#A020F0">“{\bf虹膜测量散点图}”);包含(<年代pan style="color:#A020F0">“花瓣长度”);ylabel (<年代pan style="color:#A020F0">“花瓣宽度”);传奇(<年代pan style="color:#A020F0">“位置”,<年代pan style="color:#A020F0">“西北”);轴<年代pan style="color:#A020F0">紧

图中包含一个轴对象。标题为空白S c a t e r空白D i a g r a m空白of空白i r S空白m e a S u e e nt S的坐标轴对象包含3个类型为line的对象。这些物品代表了setosa, versicolica, virgica。

训练三个二元SVM分类器,将每种类型的虹膜从其他中分离出来。假设径向基函数是每个核的合适核,并允许算法选择核尺度。定义类的顺序。

classNames = {<年代pan style="color:#A020F0">“setosa”;<年代pan style="color:#A020F0">“virginica”;<年代pan style="color:#A020F0">“多色的”};numClasses = size(classNames,1);Inds = cell(3,1);<年代pan style="color:#228B22">%预先配置SVMModel = cell(3,1);rng (1);<年代pan style="color:#228B22">%用于再现性j = 1:numClasses inds{j} = strcmp(Y,classNames{j});<年代pan style="color:#228B22">% OVA分类SVMModel{j} = fitcsvm(X,inds{j},<年代pan style="color:#A020F0">“类名”(虚假的真实),<年代pan style="color:#0000FF">...“标准化”,真的,<年代pan style="color:#A020F0">“KernelFunction”,<年代pan style="color:#A020F0">“rbf”,<年代pan style="color:#A020F0">“KernelScale”,<年代pan style="color:#A020F0">“汽车”);<年代pan style="color:#0000FF">结束

fitcsvm使用涉及子抽样的启发式过程来计算内核尺度的值。

为每个分类器拟合最优分数-后验概率转换函数。

j = 1:numClasses SVMModel{j} = fitPosterior(SVMModel{j});<年代pan style="color:#0000FF">结束
警告:类是完全分离的。最优分数-后验变换是一个阶跃函数。

定义一个网格来绘制后验概率轮廓。估计每个分类器在网格上的后验概率。

D = 0.02;[x1Grid, x2Grid] = meshgrid (min (X (: 1)): d:马克斯(X (: 1))<年代pan style="color:#0000FF">...min (X (:, 2)): d:马克斯(X (:, 2)));xGrid = [x1Grid(:),x2Grid(:)];后验=细胞(3,1);<年代pan style="color:#0000FF">为j = 1:numClasses [~,posterior{j}] = predict(SVMModel{j},xGrid);<年代pan style="color:#0000FF">结束

对于每个SVM分类器,在数据的散点图下绘制后验概率等高线。

图h = 0 (numClasses + 1,1);<年代pan style="color:#228B22">%图形句柄的预分配j = 1:numClasses subplot(2,2,j) contourf(x1Grid,x2Grid,重塑(后验{j}(:,2),size(x1Grid,1),size(x1Grid,2)));持有<年代pan style="color:#A020F0">在h(1:numClasses) = gscatter(X(:,1),X(:,2),Y);标题(sprintf (<年代pan style="color:#A020F0">' %s类的后验'{j}),类名);包含(<年代pan style="color:#A020F0">“花瓣长度”);ylabel (<年代pan style="color:#A020F0">“花瓣宽度”);传说<年代pan style="color:#A020F0">从轴<年代pan style="color:#A020F0">紧持有<年代pan style="color:#A020F0">从结束h(numClasses + 1) = colorbar(<年代pan style="color:#A020F0">“位置”,<年代pan style="color:#A020F0">“EastOutside”,<年代pan style="color:#0000FF">...“位置”, [[0.8, 0.1, 0.05, 0.4]]);set(get(h(numClasses + 1)),<年代pan style="color:#A020F0">“YLabel”),<年代pan style="color:#A020F0">“字符串”,<年代pan style="color:#A020F0">“后”,<年代pan style="color:#A020F0">“字形大小”16);传奇(h (1: numClasses),<年代pan style="color:#A020F0">“位置”, 0.6, 0.2, 0.1, 0.1);

图中包含3个轴对象。轴对象1的标题Posteriors为setosa类包含4个对象类型的轮廓,线。这些物品代表了setosa, versicolica, virgica。坐标轴对象2,标题为Posteriors for virginica Class包含4个类型为contour, line的对象。这些物品代表了setosa, versicolica, virgica。轴对象3的标题为Posteriors for versicololclass包含4个对象的类型等高线,线。这些物品代表了setosa, versicolica, virgica。

在训练SVM分类器后,估计分数到后验概率转换函数。在评估期间使用交叉验证来减少偏差,并比较10倍交叉验证和坚持交叉验证的运行时间。

加载电离层数据集。

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

训练SVM分类器。标准化数据并指定这一点‘g’是正类。

SVMModel = fitcsvm(X,Y,<年代pan style="color:#A020F0">“类名”, {<年代pan style="color:#A020F0">“b”,<年代pan style="color:#A020F0">‘g’},<年代pan style="color:#A020F0">“标准化”,真正的);

SVMModel是一个ClassificationSVM分类器。

拟合最优得分-后验概率转换函数。比较使用10倍交叉验证(默认值)和10%坚持测试样本的运行时间。

rng (1);<年代pan style="color:#228B22">%用于再现性抽搐;<年代pan style="color:#228B22">%启动秒表SVMModel_10FCV = fitPosterior(SVMModel);toc<年代pan style="color:#228B22">停止秒表并显示运行时间
运行时间为1.324590秒。
抽搐;SVMModel_HO = fitPosterior(<年代pan style="color:#A020F0">“坚持”, 0.10);toc
运行时间为0.209066秒。

虽然由于数据集相对较小,两者的运行时间都很短,SVMModel_HO拟合分数转换函数比SVMModel_10FCV.您可以指定坚持交叉验证(而不是默认的10倍交叉验证),以减少较大数据集的运行时间。

输入参数

全部折叠

完整的,训练好的SVM分类器,指定为ClassificationSVMfitcsvm

名称-值参数

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

在R2021a之前,使用逗号分隔每个名称和值,并将其括起来的名字在报价。

例子:fitPosterior (SVMModel KFold的5)在交叉验证模型中使用五次折叠。

用于计算转换函数的交叉验证分区,指定为由逗号分隔的对组成“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”,“上”

输出参数

全部折叠

训练过的SVM分类器,返回为ClassificationSVM分类器。训练后的分类器包含估计的得分-后验概率转换函数。

要估计训练集观测值的后验概率,请通过ScoreSVMModelresubPredict

为估计新观测值的后验概率,将新观测值和传递ScoreSVMModel预测

最优得分-后验概率转换函数参数,作为结构数组返回。

  • 的值类型领域的ScoreTransform乙状结肠,然后ScoreTransform也有这些字段:

  • 的值类型领域的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常数,然后ScoreTransform。PredictedClass包含类预测的名称。

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

更多关于

全部折叠

乙状结肠函数

对应分数的s型函数年代<年代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)预测.的第二个输出参数中的第二列预测存储与预测器数据矩阵的每一行对应的正类后验概率。

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

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

算法

该软件使用SVM分类器拟合适当的得分-后验概率转换函数SVMModel通过使用存储的预测数据进行10倍交叉验证(SVMModel。X)和类别标签(SVMModel。Y),详情见[1].转换函数计算一个观测值被归为正类的后验概率(SVMModel.Classnames (2)).

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

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

  • 在两类学习中,如果两个类中有一个类的相对频率为0,则转换函数为常数函数.的fitPosterior函数不适合单类学习。

  • 该软件将最优得分-后验概率转换函数存储在ScoreSVMModel。ScoreTransform

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

  • 显示警告

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

选择功能

你也可以用拟合后验概率函数fitSVMPosterior.这个函数类似于fitPosterior,只是它更广泛,因为它接受更广泛的SVM分类器类型。

参考文献

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

版本历史

在R2014a中引入

另请参阅

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