edge
説明
は、e = edge(Mdl,Tbl,ResponseVarName)Tbl 内の予測子データと Tbl.ResponseVarName 内の真のクラス ラベルを使用して、一般化加法モデル Mdl の分類エッジ (e) を返します。
では、前の構文におけるいずれかの入力引数の組み合わせに加えて、1 つ以上の名前と値の引数を使用してオプションを指定します。たとえば、観測値の重みや、計算に交互作用項を含めるかどうかを指定できます。e = edge(___,Name,Value)
例
一般化加法モデルのテスト標本分類マージンおよびエッジを推定します。テスト標本マージンは観測された真のクラスのスコアから偽のクラスのスコアを差し引いたもので、テスト標本エッジはマージンの平均です。
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')

一般化加法モデルのテスト標本加重エッジ (マージンの加重平均) を推定します。
fisheriris データ セットを読み込みます。versicolor と virginica のアヤメについての 2 つのがく片と 2 つの花弁の測定値が含まれる数値行列 X を作成します。対応するアヤメの種類が含まれる文字ベクトルの cell 配列 Y を作成します。
load fisheriris idx1 = strcmp(species,'versicolor') | strcmp(species,'virginica'); X = meas(idx1,:); Y = species(idx1,:);
一部の測定値の品質は、旧式のテクノロジーが測定に使用されたために低いと仮定します。この効果をシミュレートするために、20 個の測定値で構成されるランダムなサブセットにノイズを追加します。
rng('default') % For reproducibility idx2 = randperm(size(X,1),20); X(idx2,:) = X(idx2,:) + 2*randn(20,size(X,2));
Y のクラス情報を使用して、観測値を階層的に学習セットとテスト セットに無作為に分割します。テスト用の 30% のホールドアウト標本を指定します。
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 モデル オブジェクトです。
テスト標本エッジを推定します。
e = edge(Mdl,XTest,YTest)
e = 0.8000
平均マージンは約 0.80 です。
ノイズを含む測定値の影響を減らす方法の 1 つは、他の観測値よりも低く重み付けすることです。品質が高い観測値には、他の観測値の 2 倍の重みを与える重みベクトルを定義します。
n = size(X,1); weights = ones(size(X,1),1); weights(idx2) = 0.5; weightsTrain = weights(trainInds); weightsTest = weights(testInds);
予測子 XTrain、クラス ラベル YTrain、および重み weightsTrain を使用して、GAM に学習させます。
Mdl_W = fitcgam(XTrain,YTrain,'Weights',weightsTrain,... 'ClassNames',{'versicolor','virginica'});
加重スキームを使用して、テスト標本の加重エッジを推定します。
e_W = edge(Mdl_W,XTest,YTest,'Weights',weightsTest)e_W = 0.8770
加重平均マージンは約 0.88 です。この結果は、平均すると、加重分類器ラベルのラベルの方が信頼度が高いことを示します。
テスト標本マージンおよびエッジを調べて、線形項が含まれる 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 に学習をさせた場合、edge の入力データも table に含まれていなければなりません。
データ型: table
応答変数名。Tbl 内の応答変数の名前を含む文字ベクトルまたは string スカラーとして指定します。たとえば、応答変数 Y が Tbl.Y に格納されている場合、'Y' として指定します。
データ型: char | string
予測子データ。数値行列として指定します。X の各行は 1 つの観測値に、各列は 1 つの予測子変数に対応します。
行列に格納されている標本データを使用して Mdl に学習させた場合、edge の入力データも行列でなければなりません。
データ型: single | double
名前と値の引数
オプションの引数のペアを Name1=Value1,...,NameN=ValueN として指定します。ここで、Name は引数名で、Value は対応する値です。名前と値の引数は他の引数の後に指定しなければなりませんが、ペアの順序は重要ではありません。
R2021a より前では、名前と値をそれぞれコンマを使って区切り、Name を引用符で囲みます。
例: 'IncludeInteractions',false,'Weights',w は、モデルから交互作用項を除外し、観測値の重み w を使用するように指定します。
モデルの交互作用項を含むというフラグ。true または false として指定します。
Mdl に交互作用項が含まれる場合、'IncludeInteractions' の既定値は true です。モデルに交互作用項が含まれない場合、値は false でなければなりません。
例: 'IncludeInteractions',false
データ型: logical
観測値の重み。スカラー値のベクトルまたは Tbl 内の変数の名前として指定します。X または Tbl の各行に含まれている観測値には、Weights の対応する値で重みが付けられます。Weights のサイズは、X または Tbl の行数と同じでなければなりません。
入力データを table Tbl として指定した場合、Weights は数値ベクトルが含まれている Tbl 内の変数の名前にすることができます。この場合、Weights には文字ベクトルまたは string スカラーを指定しなければなりません。たとえば、重みのベクトル W が Tbl.W に格納されている場合、'W' として指定します。
edge は、合計がクラスの事前確率の値になるように各クラスの重みを正規化します。
データ型: single | double | char | string
詳細
"分類エッジ" は、分類マージンの加重平均です。
特徴選択を実行する場合などに複数の分類器から選択する方法の 1 つは、エッジが最大になる分類器を選択することです。
バイナリ分類の "分類マージン" は、各観測値における真のクラスの分類スコアと偽のクラスの分類スコアの差です。
各マージンのスケールが同じである場合 (つまり、スコア値が同じスコア変換に基づく場合)、マージンを分類の信頼尺度として使用できます。複数の分類器の中で、マージンが大きい分類器の方が優れています。
バージョン履歴
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)