主要内容

fitPosterior

为支持向量机分类器拟合后验概率

描述

例子

ScoreSVMModel= fitPosterior (SVMModel返回经过训练的支持向量机(SVM)分类器ScoreSVMModel包含两类学习的最优分数-后验概率转换函数。有关更多细节,请参见算法

例子

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

例子

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

例子

全部折叠

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

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

训练支持向量机分类器。标准化数据并指定‘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' 'g'} 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: [351x1 logical] Solver: 'SMO'属性,方法

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

估计训练数据的分数和正类后验概率。显示前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.4797 - 0.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">紧

图中包含一个axes对象。标题为空白S ct e r空白D i g r a m空白of空白i r S空白m e S u r e t S的轴对象包含3个类型为line的对象。这些物品代表了彩色,彩色,处女。

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

一会= {<年代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} = fit后部(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[~,后部{j}] = predict(svm模型{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), (:, 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的标题posteriers为setosa类包含4个对象的类型轮廓,线。这些物品代表了彩色,彩色,处女。坐标轴对象2,标题Posteriors for virginica Class包含4个类型为contour, line的对象。这些物品代表了彩色,彩色,处女。坐标轴对象3与标题posteriers 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">停止秒表并显示运行时间
运行时间为0.796570秒。
抽搐;SVMModel_HO = fitPosterior (SVMModel,<年代pan style="color:#A020F0">“坚持”, 0.10);toc
运行时间为0.133183秒。

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

输入参数

全部折叠

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

名称-值参数

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

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

例子: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

更多关于

全部折叠

乙状结肠函数

映射分数的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>®编码器™.有关详细信息,请参见代码生成简介

算法

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

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

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

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

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

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

  • 显示一个警告

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

选择功能

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

参考文献

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

扩展功能

版本历史

介绍了R2014a

另请参阅

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

Baidu
map