margin
構文
説明
は、m = margin(Mdl,Tbl,ResponseVarName)Tbl 内の予測子データと Tbl.ResponseVarName 内の真のクラス ラベルを使用して、一般化加法モデル Mdl の分類マージン (m) を返します。
m は、n 行 1 列の数値列ベクトルとして返されます。n は予測子データ内の観測値の個数です。
は、計算に交互作用項を含めるかどうかを指定します。前の構文におけるいずれかの入力引数の組み合わせに加えて、m = margin(___,'IncludeInteractions',includeInteractions)includeInteractions を指定できます。
例
一般化加法モデルのテスト標本分類マージンおよびエッジを推定します。テスト標本マージンは観測された真のクラスのスコアから偽のクラスのスコアを差し引いたもので、テスト標本エッジはマージンの平均です。
fisheriris データ セットを読み込みます。versicolor と virginica のアヤメについての 2 つのがく片と 2 つの花弁の測定値が含まれる数値行列 X を作成します。対応するアヤメの種類が含まれる文字ベクトルの cell 配列 Y を作成します。
load fisheriris inds = strcmp(species,'versicolor') | strcmp(species,'virginica'); X = meas(inds,:); Y = species(inds,:);
Y のクラス情報を使用して、観測値を階層的に学習セットとテスト セットに無作為に分割します。テスト用の 30% のホールドアウト標本を指定します。
rng('default') % For reproducibility cv = cvpartition(Y,'HoldOut',0.30);
学習インデックスとテスト インデックスを抽出します。
trainInds = training(cv); testInds = test(cv);
学習データ セットとテスト データ セットを指定します。
XTrain = X(trainInds,:); YTrain = Y(trainInds); XTest = X(testInds,:); YTest = Y(testInds);
予測子 XTrain とクラス ラベル YTrain を使用して、GAM に学習させます。クラス名を指定することが推奨されます。
Mdl = fitcgam(XTrain,YTrain,'ClassNames',{'versicolor','virginica'});
Mdl は ClassificationGAM モデル オブジェクトです。
テスト標本分類マージンおよびエッジを推定します。
m = margin(Mdl,XTest,YTest); e = edge(Mdl,XTest,YTest)
e = 0.8000
テスト標本分類マージンのヒストグラムを表示します。
histogram(m,length(unique(m)),'Normalization','probability') xlabel('Test Sample Margins') ylabel('Probability') title('Probability Distribution of the Test Sample Margins')

テスト標本マージンおよびエッジを調べて、線形項が含まれる GAM を線形項と交互作用項の両方が含まれる GAM と比較します。この比較のみに基づくと、マージンおよびエッジが最大である分類器が最適なモデルです。
ionosphere データ セットを読み込みます。このデータ セットには、レーダー反射についての 34 個の予測子と、不良 ('b') または良好 ('g') という 351 個の二項反応が含まれています。
load ionosphereY のクラス情報を使用して、観測値を階層的に学習セットとテスト セットに無作為に分割します。テスト用の 30% のホールドアウト標本を指定します。
rng('default') % For reproducibility cv = cvpartition(Y,'Holdout',0.30);
学習インデックスとテスト インデックスを抽出します。
trainInds = training(cv); testInds = test(cv);
学習データ セットとテスト データ セットを指定します。
XTrain = X(trainInds,:); YTrain = Y(trainInds); XTest = X(testInds,:); YTest = Y(testInds);
予測子の線形項と交互作用項の両方が格納されている GAM に学習させます。p 値が 0.05 以下である利用可能な交互作用項をすべて含めるように指定します。
Mdl = fitcgam(XTrain,YTrain,'Interactions','all','MaxPValue',0.05)
Mdl =
ClassificationGAM
ResponseName: 'Y'
CategoricalPredictors: []
ClassNames: {'b' 'g'}
ScoreTransform: 'logit'
Intercept: 3.0398
Interactions: [561×2 double]
NumObservations: 246
Properties, Methods
Mdl は ClassificationGAM モデル オブジェクトです。Mdl には利用可能なすべての交互作用項が含まれています。
Mdl のテスト標本マージンおよびエッジを推定します。
M = margin(Mdl,XTest,YTest); E = edge(Mdl,XTest,YTest)
E = 0.7848
交互作用項を含めずに Mdl のテスト標本マージンおよびエッジを推定します。
M_nointeractions = margin(Mdl,XTest,YTest,'IncludeInteractions',false); E_nointeractions = edge(Mdl,XTest,YTest,'IncludeInteractions',false)
E_nointeractions = 0.7871
箱ひげ図を使用してマージンの分布を表示します。
boxplot([M M_nointeractions],'Labels',{'Linear and Interaction Terms','Linear Terms Only'}) title('Box Plots of Test Sample Margins')

マージン M と M_nointeractions は同様の分布を示しますが、線形項のみを含む分類器のテスト標本エッジの方が大きくなります。分類器のマージンは比較的大きいことが推奨されます。
入力引数
一般化加法モデル。ClassificationGAM または CompactClassificationGAM モデル オブジェクトとして指定します。
標本データ。table として指定します。Tbl の各行は 1 つの観測値に、各列は 1 つの予測子変数に対応します。文字ベクトルの cell 配列ではない cell 配列と複数列の変数は使用できません。
Tbl には、Mdl に学習させるために使用したすべての予測子が含まれていなければなりません。必要に応じて、Tbl に応答変数用の列と観測値の重み用の列を含めることができます。
応答変数のデータ型は
Mdl.Yと同じでなければなりません。(string 配列は文字ベクトルの cell 配列として扱われます)。Tblに含まれる応答変数がMdlの学習に使用した応答変数と同じ名前である場合、ResponseVarNameを指定する必要はありません。重みの値は数値ベクトルでなければなりません。
Tbl内の観測値の重みは'Weights'を使用して指定しなければなりません。
table に格納されている標本データを使用して Mdl に学習をさせた場合、margin の入力データも table に含まれていなければなりません。
データ型: table
応答変数名。Tbl 内の応答変数の名前を含む文字ベクトルまたは string スカラーとして指定します。たとえば、応答変数 Y が Tbl.Y に格納されている場合、'Y' として指定します。
データ型: char | string
予測子データ。数値行列として指定します。X の各行は 1 つの観測値に、各列は 1 つの予測子変数に対応します。
行列に格納されている標本データを使用して Mdl に学習させた場合、margin の入力データも行列でなければなりません。
データ型: single | double
モデルの交互作用項を含むというフラグ。true または false として指定します。
モデルに交互作用項が含まれる場合、includeInteractions の既定値は true です。モデルに交互作用項が含まれない場合、値は false でなければなりません。
例: includeInteractions=false
データ型: logical
詳細
バイナリ分類の "分類マージン" は、各観測値における真のクラスの分類スコアと偽のクラスの分類スコアの差です。
各マージンのスケールが同じである場合 (つまり、スコア値が同じスコア変換に基づく場合)、マージンを分類の信頼尺度として使用できます。複数の分類器の中で、マージンが大きい分類器の方が優れています。
バージョン履歴
R2021a で導入
MATLAB Command
You clicked a link that corresponds to this MATLAB command:
Run the command by entering it in the MATLAB Command Window. Web browsers do not support MATLAB commands.
Web サイトの選択
Web サイトを選択すると、翻訳されたコンテンツにアクセスし、地域のイベントやサービスを確認できます。現在の位置情報に基づき、次のサイトの選択を推奨します:
また、以下のリストから Web サイトを選択することもできます。
最適なサイトパフォーマンスの取得方法
中国のサイト (中国語または英語) を選択することで、最適なサイトパフォーマンスが得られます。その他の国の MathWorks のサイトは、お客様の地域からのアクセスが最適化されていません。
南北アメリカ
- América Latina (Español)
- Canada (English)
- United States (English)
ヨーロッパ
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)