主要内容

fitPosterior

サポ,トベクタ,マシン(svm)分類器の事後確率の当てはめ

説明

ScoreSVMModel= fitPosterior (SVMModelは2クラス学習で使用するスコアから事後確率への最適な変換関数が格納された,学習済みのサポートベクターマシン(SVM)分類器ScoreSVMModelを返します。詳細は,アルゴリズムを参照してください。

ScoreSVMModelScoreTransform= fitPosterior(SVMModelは,スコアから事後確率への最適な変換関数のパラメ,タ,をさらに返します。

ScoreSVMModelScoreTransform= fitPosterior(SVMModel名称,值は,1以上の名前と値のペアの引数によって指定された追加オプションを使用します。たとえば,分割数やホ,ルドアウト標本比率を指定できます。

すべて折りたたむ

电离层デ,タセットを読み込みます。このデタセットには,レダ反射にいての34個の予測子と,不良(“b”)または良好(‘g’)という351個の二項反応が含まれています。

负载<年代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">“标准化”,真正的);

SVMModelClassificationSVM分類器です。

スコアから事後確率への最適な変換関数パラメ,タ,を近似します。

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)はシグモleiド関数です。

学習デ,タのスコアと陽性のクラスの事後確率を推定します。最初の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

1対他(卵子)分類のプロセスを通してマルチクラス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。

それぞれの種類アヤメを他から分離する3のバナリ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">结束

支持向量机分類器ごとに,デ,タの散布図の下に事後確率等高線をプロットします。

图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。

支持向量机分類器に学習をさせた後で,スコアから事後確率への変換関数を推定します。推定時に交差検証を使用してバイアスを減らし,10分割交差検証とホールドアウト交差検証の実行時間を比較します。

电离层デ,タセットを読み込みます。

负载<年代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">“标准化”,真正的);

SVMModelClassificationSVM分類器です。

スコアから事後確率への最適な変換関数パラメ,タ,を近似します。10分割交差検証 (既定) の場合と 10% のホールドアウト検定標本を使用した場合の実行時間を比較します。

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

デタセットが比較的小さいため実行時間はどらも短くなりますが,SVMModel_HOSVMModel_10FCVよりはるかに速くスコア変換関数を当てはめます。(既定の 10 分割交差検証ではなく) ホールドアウト交差検証を指定すると、大規模なデータセットの場合の実行時間を短くすることができます。

入力引数

すべて折りたたむ

完全な学習済み支持向量机分類器。fitcsvmで学習をさせたClassificationSVMモデルを指定します。

名前と値の引数

オプションの引数のペアをName1 = Value1,…,以=家として指定します。ここで的名字は引数名,价值は対応する値です。名前と値の引数は他の引数の後ろにする必要がありますが、ペアの順序は関係ありません。

R2021aより前では,名前と値をそれぞれコンマを使って区切り,的名字を引用符で囲みます。

例:fitPosterior (SVMModel KFold的5)は,5の分割を交差検証済みモデルで使用します。

変換関数の計算に使用する交差検証分割。“CVPartition”と,cvpartitionによって作成されたcvpartition分割オブジェクトから構成されるコンマ区切りのペアとして指定します。交差検証済みモデルの作成には,次の4のオプションの1だけを使用できます。“KFold”“坚持”“Leaveout”または“CVPartition”のいずれかです。

fitcsvmの名前と値のペアの引数crossvalは,cvpartitionを使用してデ,タをサブセットに分割します。

例:cvp = cvpartition(500,'KFold',5)を使用して,500個の観測値に対する5分割交差検証にいて無作為な分割を作成するとします。この場合,“CVPartition”,本量利を使用して交差検証済みモデルを指定できます。

変換関数の計算に使用するホ,ルドアウト検証用デ,タの比率。“坚持”と(0,1)の範囲内にあるスカラ,値から構成されるコンマ区切りのペアとして指定します。ホ,ルドアウト検証では,指定された比率のデ,タを検定し,残りのデ,タを学習に使用します。

交差検証済みモデルの作成には,次の4のオプションの1だけを使用できます。“KFold”“坚持”“Leaveout”または“CVPartition”のいずれかです。

例:“坚持”,0.1

デ,タ型:|

変換関数を計算するときに使用する分割数。“KFold”と1より大きい正の整数値から構成されるコンマ区切りのペアとして指定します。

交差検証済みモデルの作成には,次の4のオプションの1だけを使用できます。“KFold”“坚持”“Leaveout”または“CVPartition”のいずれかです。

例:“KFold”,8

デ,タ型:|

変換関数の計算に分析交差検証を使用するかどうかを示す分析交差検証フラグ。“Leaveout”“上”または“关闭”から構成されるコンマ区切りのペアとして指定します。“Leaveout”,“上”を指定することにより留一份法の交差検証を使用します。

交差検証済みモデルの作成には,次の4のオプションの1だけを使用できます。“KFold”“坚持”“Leaveout”または“CVPartition”のいずれかです。

例:“Leaveout”,“上”

出力引数

すべて折りたたむ

学習済みの支持向量机分類器。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となります。

詳細

すべて折りたたむ

シグモ@ @ド関数

観測値jに対応するスコアs<年代ub>jを陽性クラスの事後確率にマッピングするシグモesc escド関数は,次のようになります。

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

ScoreTransform类型フィ,ルドの値が乙状结肠である場合,パラメ,タ,aおよびbはそれぞれScoreTransformのフィ,ルド规模および拦截に対応します。

ステップ関数

観測値jに対応するスコアs<年代ub>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 はそれぞれScoreTransformのフィ,ルド下界およびUpperBoundに対応します。

定数関数

定数関数は標本内のすべてのスコアを事後確率1または0にマッピングします。

すべての観測値の事後確率が1である場合,これらは陽性のクラスから派生したと予想されます。

すべての観測値の事後確率が0である場合,これらは陽性のクラスから派生したと予想されません。

ヒント

  • 以下は,陽性クラスの事後確率を予測する方法の1です。

    1. デタをfitcsvmに渡し,svm分類器を学習させます。この結果,SVMModelなどの学習済みSVM分類器が生成され,デ,タが格納されます。スコア変換関数プロパティ(SVMModel。ScoreTransformation)が没有一个に設定されます。

    2. 学習させた支持向量机分類器SVMModelfitSVMPosteriorまたはfitPosteriorに渡します。結果(たとえばScoreSVMModel)はSVMModelと同じ学習済みSVM分類器ですが,最適なスコア変換関数がScoreSVMModel。ScoreTransformationとして設定される点が異なります。

    3. 最適なスコア変換関数が格納されている学習済み支持向量机分類器(ScoreSVMModel)と予測子デ,タ行列を预测に渡します。预测の2番目の出力引数の2列目には,予測子データ行列の各行に対応する陽性クラスの事後確率が格納されます。

      手順2を省略した場合,预测は陽性のクラスの事後確率ではなく,陽性のクラスのスコアを返します。

  • 事後確率を当てはめた後で,新しいデタにいてラベルを予測するc / c++コドを生成できます。C/ c++コ,ドの生成には<年代pan>MATLAB<年代up>®编码器™が必要です。詳細については、コ,ド生成の紹介を参照してください。

アルゴリズム

[1]で説明されているように,svm分類器SVMModelを使用し,保存されている予測子デ,タ(SVMModel。X)およびクラスラベル(SVMModel。Y)によって10分割交差検証を実行することにより,スコアから事後確率への適切な変換関数が当てはめられます。この変換関数は、観測値が陽性のクラス(SVMModel.Classnames (2))に分類される事後確率を計算します。

  • クラスが不可分な場合,変換関数はシグモ@ @ド関数です。

  • クラスが完全に可分な場合,変換関数はステップ関数です。

  • 2クラス学習では,一方のクラスの相対頻度が0である場合,変換関数は定数関数になります。関数fitPosteriorは1クラス学習に適していません。

  • スコアから事後確率への最適な変換関数がScoreSVMModel。ScoreTransformに保存されます。

スコアから事後確率への変換関数を再度推定した場合,化学式まり,ScoreTransformプロパティが没有一个ではない支持向量机分類器をfitPosteriorまたはfitSVMPosteriorに渡した場合は,以下の処理が実行されます。

  • 警告が表示されます。

  • 新しい変換関数を推定する前に,元の変換関数が“没有”にリセットされます。

代替機能

事後確率関数は,関数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">