主要内容

fitPosterior

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

描述

例子

ScoreSVMModel= fitPosterior (SVMModel返回一个训练过的支持向量机分类器金宝appScoreSVMModel包含两类学习的最优得分-后验概率变换函数。有关详细信息,请参见算法

例子

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

例子

ScoreSVMModelScoreTransform) = fitPosterior (SVMModel名称,值使用由一个或多个名称-值对参数指定的附加选项。例如,您可以指定折叠的数量或坚守样品的比例。

例子

全部折叠

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

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

训练支持向量机分金宝app类器。将数据标准化并指定‘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 (SVMModel)
ScoreSVMModel = ClassificationSVM ResponseName: 'Y' CategoricalPredictors: [] ClassNames: {'b' ' '} ScoreTransform: '@(S)sigmoid(S,-9.482415e-01,-1.217768e-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…Sigma:[0.3112 0 0.4977 0.4414 0.5199 0.4608 0.4927…][351x1 double] ConvergenceInfo: [1x1 struct] IsSupportVector: [35金宝app1x1 logical] Solver: 'SMO'属性,方法

由于类是不可分的,分数变换函数(ScoreSVMModel。ScoreTransform)为s型函数。

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

(标签,分数)= 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.0004 - 0.30431{‘g’}{‘g’}1.8686 - 0.86918 {b} {b} -2.6462 - 0.084133{‘g’}{‘g’}1.2808 - 0.79188 {b} {b} -1.4618 - 0.22022{‘g’}{‘g’}2.1673 - 0.89815 {b} {b} -5.7093 - 0.0050066{‘g’}{‘g’}2.47970.92224 {'b'} {'b'} -2.7811 0.074784

通过一对所有(OVA)分类过程训练多类SVM分类器,然后绘制每类的概率轮廓。要直接实现OVA,请参见fitcecoc

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

负载<年代pan style="color:#A020F0">fisheririsX =量(:,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 ct t e r e D i g r m blank of blank i r i S blank m e u r e t S包含3个对象的类型行。这些物品代表着维珍卡。

训练三个二值支持向量机分类器,将每种虹膜类型与其他类型区分开来。假设一个径向基函数是每一个合适的核,并允许算法选择一个核尺度。定义类顺序。

一会= {<年代pan style="color:#A020F0">“setosa”;<年代pan style="color:#A020F0">“virginica”;<年代pan style="color:#A020F0">“多色的”};numClasses =大小(类名,1);第1 =细胞(3,1);<年代pan style="color:#228B22">%预先配置SVMModel =细胞(3,1);rng (1);<年代pan style="color:#228B22">%的再现性j = 1:numClasses inds{j} = strcmp(Y,classNames{j});<年代pan style="color:#228B22">%卵子分类SVMModel {j} = fitcsvm (X,第1 {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,重塑(posterior{j}(:,2),size(x1Grid,1),size(x1Grid,2));持有<年代pan style="color:#A020F0">在h (1: numClasses) = gscatter (X (: 1), (:, 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]]);集(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,标题为后视图的setosa类包含4个类型为轮廓,线的对象。这些物品代表着维珍卡。带有标题的轴对象2包含4个类型为contour, line的对象。这些物品代表着维珍卡。轴对象3,标题为后视图versicolor类包含4个对象类型为轮廓,线。这些物品代表着维珍卡。

在训练支持向量机分类器后,估计得分-后验概率转换函数。在估计过程中使用交叉验证以减少偏差,并比较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.190378秒。
抽搐;SVMModel_HO = fitPosterior (SVMModel,<年代pan style="color:#A020F0">“坚持”, 0.10);toc
运行时间为0.158474秒。

尽管这两个运行时间都很短,因为数据集相对较小,SVMModel_HO拟合积分变换函数的速度比SVMModel_10FCV.您可以指定holdout交叉验证(而不是默认的10倍交叉验证),以减少较大数据集的运行时间。

输入参数

全部折叠

完整的,经过训练的SVM分类器,指定为ClassificationSVM模型训练fitcsvm

名称-值参数

指定可选的逗号分隔的对名称,值参数。的名字参数名和价值为对应值。的名字必须出现在引号内。可以以任意顺序指定多个名称和值对参数Name1, Value1,…,的家

例子:fitPosterior (SVMModel KFold的5)在一个交叉验证的模型中使用5倍。

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

crossval的名称-值对参数fitcsvm使用。将数据分成多个子集cvpartition

例子:假设您使用以下方法创建了一个随机分区,用于对500个观测数据进行5倍交叉验证本量利= 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)预测.的第二个输出参数中的第二列预测存储预测器数据矩阵每一行对应的正类后验概率。

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

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

算法

该软件利用支持向量机分类器拟合出合适的得分-后验概率转换函数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页。

另请参阅

|<年代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">

介绍了R2014a