kfoldMargin
交差検証済み線形分類モデルの分類マージン
説明
例
NLP のデータ セットを読み込みます。
load nlpdata
X
は予測子データのスパース行列、Y
はクラス ラベルの categorical ベクトルです。データには 2 つを超えるクラスがあります。
モデルでは、ある Web ページの単語数が Statistics and Machine Learning Toolbox™ ドキュメンテーションによるものであるかどうかを識別できなければなりません。したがって、Statistics and Machine Learning Toolbox™ のドキュメンテーション Web ページに対応するラベルを識別します。
Ystats = Y == 'stats';
あるドキュメンテーション Web ページの単語数が Statistics and Machine Learning Toolbox™ ドキュメンテーションによるものであるかどうかを識別できるバイナリ線形分類モデルの交差検証を行います。
rng(1); % For reproducibility CVMdl = fitclinear(X,Ystats,'CrossVal','on');
CVMdl
は ClassificationPartitionedLinear
モデルです。既定では、10 分割交差検証が実行されます。'KFold'
名前と値のペアの引数を使用して分割数を変更できます。
交差検証マージンを推定します。
m = kfoldMargin(CVMdl); size(m)
ans = 1×2
31572 1
m
は 31572 行 1 列のベクトルです。m(j)
は観測値 j
の分割外マージンの平均です。
箱ひげ図を使用して k 分割マージンをプロットします。
figure;
boxplot(m);
h = gca;
h.YLim = [-5 30];
title('Distribution of Cross-Validated Margins')
特徴選択を実行する方法の 1 つは、複数のモデルの k 分割マージンを比較することです。この基準のみに基づくと、マージンが大きい方が分類器として優れています。
NLP のデータ セットを読み込みます。k 分割交差検証マージンの推定で説明されているようにデータを前処理します。
load nlpdata Ystats = Y == 'stats'; X = X';
2 つのデータ セットを作成します。
fullX
にはすべての予測子が含まれます。partX
には、無作為に選択した予測子の 1/2 が含まれます。
rng(1); % For reproducibility p = size(X,1); % Number of predictors halfPredIdx = randsample(p,ceil(0.5*p)); fullX = X; partX = X(halfPredIdx,:);
2 つのバイナリ線形分類モデルを交差検証します。1 つではすべての予測子を、もう 1 つでは半分の予測子を使用します。観測値が列に対応することを指定し、SpaRSA を使用して目的関数を最適化します。
CVMdl = fitclinear(fullX,Ystats,'CrossVal','on','Solver','sparsa',... 'ObservationsIn','columns'); PCVMdl = fitclinear(partX,Ystats,'CrossVal','on','Solver','sparsa',... 'ObservationsIn','columns');
CVMdl
および PCVMdl
は ClassificationPartitionedLinear
モデルです。
各分類器の k 分割マージンを推定します。箱ひげ図を使用して k 分割マージン セットの分布をプロットします。
fullMargins = kfoldMargin(CVMdl); partMargins = kfoldMargin(PCVMdl); figure; boxplot([fullMargins partMargins],'Labels',... {'All Predictors','Half of the Predictors'}); h = gca; h.YLim = [-30 60]; title('Distribution of Cross-Validated Margins')
2 つの分類器でマージンの分布は似ています。
ロジスティック回帰学習器を使用する線形分類モデルに適した LASSO ペナルティの強度を決定するため、k 分割マージンの分布を比較します。
NLP のデータ セットを読み込みます。k 分割交差検証マージンの推定で説明されているようにデータを前処理します。
load nlpdata Ystats = Y == 'stats'; X = X';
~ の範囲で対数間隔で配置された 11 個の正則化強度を作成します。
Lambda = logspace(-8,1,11);
5 分割の交差検証と各正則化強度を使用して、バイナリ線形分類モデルを交差検証します。SpaRSA を使用して目的関数を最適化します。目的関数の勾配の許容誤差を 1e-8
に下げます。
rng(10); % For reproducibility CVMdl = fitclinear(X,Ystats,'ObservationsIn','columns','KFold',5, ... 'Learner','logistic','Solver','sparsa','Regularization','lasso', ... 'Lambda',Lambda,'GradientTolerance',1e-8)
CVMdl = ClassificationPartitionedLinear CrossValidatedModel: 'Linear' ResponseName: 'Y' NumObservations: 31572 KFold: 5 Partition: [1×1 cvpartition] ClassNames: [0 1] ScoreTransform: 'none' Properties, Methods
CVMdl
は ClassificationPartitionedLinear
モデルです。fitclinear
は 5 分割の交差検証を実装するので、各分割について学習させる 5 つの ClassificationLinear
モデルが CVMdl
に格納されます。
各正則化強度の k 分割マージンを推定します。
m = kfoldMargin(CVMdl); size(m)
ans = 1×2
31572 11
m
は各観測値の交差検証マージンから構成される 31572 行 11 列の行列です。列は正則化強度に対応します。
各正則化強度について k 分割マージンをプロットします。ロジスティック回帰スコアは [0,1] の範囲にあるので、マージンは [-1,1] の範囲にあります。グリッド全体でマージンを最大化する正則化強度を識別しやすくするため、マージンのスケールを変更します。
figure boxplot(10000.^m) ylabel('Exponentiated test-sample margins') xlabel('Lambda indices')
いくつかの Lambda
の値では、10000 の付近で k 分割マージンの分布が密になっています。Lambda の値が大きくなると、予測子変数がスパースになります。これは分類器の品質として優れています。
k 分割マージンの分布の中心が低下する直前にある正則化強度を選択します。
LambdaFinal = Lambda(5);
データ セット全体を使用して線形分類モデルに学習をさせます。目的の正則化強度を指定します。
MdlFinal = fitclinear(X,Ystats,'ObservationsIn','columns', ... 'Learner','logistic','Solver','sparsa','Regularization','lasso', ... 'Lambda',LambdaFinal);
新しい観測値のラベルを推定するには、MdlFinal
と新しいデータを predict
に渡します。
入力引数
交差検証済みバイナリ線形分類モデル。ClassificationPartitionedLinear
モデル オブジェクトとして指定します。ClassificationPartitionedLinear
モデル オブジェクトを作成するには、fitclinear
を使用し、交差検証用の名前と値のペアの引数のいずれか 1 つ (CrossVal
など) を指定します。
推定値を取得するため、kfoldMargin
は線形分類モデルの交差検証に使用したものと同じデータ (X
および Y
) を適用します。
出力引数
詳細
バイナリ分類の "分類マージン" は、各観測値における真のクラスの分類スコアと偽のクラスの分類スコアの差です。
このソフトウェアでは、バイナリ分類の分類マージンは次のように定義されます。
x は観測値です。x の真のラベルが陽性クラスである場合、y は 1、それ以外の場合は –1 です。f(x) は観測値 x についての陽性クラスの分類スコアです。一般的には、分類マージンは m = yf(x) と定義されています。
各マージンのスケールが同じである場合、マージンを分類の信頼尺度として使用できます。複数の分類器の中で、マージンが大きい分類器の方が優れています。
線形分類モデルの場合、行ベクトルである観測値 x を陽性クラスに分類する生の "分類スコア" は次により定義されます。
正則化強度が j のモデルでは、 は推定された係数の列ベクトル (モデルの Beta(:,j)
プロパティ)、 は推定されたスカラー バイアス (モデルの Bias(j)
プロパティ) です。
x を陰性クラスに分類する生の分類スコアは -f(x) です。このソフトウェアでは、スコアが正になるクラスに観測値が分類されます。
線形分類モデルがロジスティック回帰学習器から構成されている場合、このソフトウェアでは 'logit'
スコア変換が生の分類スコアに適用されます (ScoreTransform
を参照)。
拡張機能
この関数は、GPU 配列を完全にサポートします。詳細は、GPU での MATLAB 関数の実行 (Parallel Computing Toolbox)を参照してください。
バージョン履歴
R2016a で導入kfoldMargin
は GPU 配列を完全にサポートします。
R2023b 以降では、次の分類モデルのオブジェクト関数において、予測子に欠損値がある観測値が再代入 ("resub") と交差検証 ("kfold") による分類エッジ、損失、マージン、および予測の計算でその一部として使用されます。
以前のリリースでは、予測子に欠損値がある観測値は再代入と交差検証の計算で省略されていました。
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)