ClassificationLinear クラス
高次元データのバイナリ分類用の線形モデル
説明
ClassificationLinear は、バイナリ分類用の学習済み線形モデル オブジェクトです。この線形モデルは、サポート ベクター マシン (SVM) またはロジスティック回帰モデルです。fitclinear は、高次元データ セットの計算時間を短縮する手法 (確率的勾配降下法など) を使用して目的関数を最小化することにより ClassificationLinear モデルを当てはめます。分類損失と正則化項を加算することにより目的関数が構成されます。
他の分類モデルと異なり、メモリ消費を節約するため、ClassificationLinear モデル オブジェクトには学習データが格納されません。ただし、推定した線形モデル係数、事前クラス確率、正則化強度などは格納されます。
学習済みの ClassificationLinear モデルを使用して、新しいデータの分類スコアまたはラベルを予測できます。詳細については、predictを参照してください。
構築
ClassificationLinear オブジェクトの作成には fitclinear を使用します。
プロパティ
線形分類のプロパティ
正則化項の強度。非負のスカラーまたは非負値のベクトルを指定します。
データ型: double | single
線形分類モデルのタイプ。'logistic' または 'svm' を指定します。
次の表では、 です。
β は p 個の係数のベクトルです。
x は p 個の予測子変数による観測値です。
b はスカラー バイアスです。
| 値 | アルゴリズム | 損失関数 | FittedLoss の値 |
|---|---|---|---|
'svm' | サポート ベクター マシン | ヒンジ: | 'hinge' |
'logistic' | ロジスティック回帰 | 逸脱度 (ロジスティック): | 'logit' |
線形係数の推定値。展開された予測子の数と等しい長さの数値ベクトルとして指定します (ExpandedPredictorNames を参照)。
データ型: double
推定バイアス項またはモデルの切片。数値スカラーを指定します。
データ型: double
この プロパティ は読み取り専用です。
線形モデルの当てはめに使用する損失関数。'hinge' または 'logit' を指定します。
| 値 | アルゴリズム | 損失関数 | Learner の値 |
|---|---|---|---|
'hinge' | サポート ベクター マシン | ヒンジ: | 'svm' |
'logit' | ロジスティック回帰 | 逸脱度 (ロジスティック): | 'logistic' |
複雑度ペナルティのタイプ。'lasso (L1)' または 'ridge (L2)' を指定します。
最小化のための目的関数は、平均損失関数 (FittedLoss を参照) と次の表の正則化値を加算することにより作成されます。
| 値 | 説明 |
|---|---|
'lasso (L1)' | LASSO (L1) ペナルティ: |
'ridge (L2)' | リッジ (L2) ペナルティ: |
λ は、正則化項の強度を規定します (Lambda を参照)。
バイアス項 (β0) は正則化ペナルティから除外されます。
他の分類のプロパティ
カテゴリカル予測子のインデックス。正の整数のベクトルとして指定します。CategoricalPredictors には、対応する予測子がカテゴリカルであることを示すインデックス値が格納されます。インデックス値の範囲は 1 ~ p です。p はモデルの学習に使用した予測子の数です。どの予測子もカテゴリカルではない場合、このプロパティは空 ([]) になります。
データ型: single | double
この プロパティ は読み取り専用です。
学習で使用する一意なクラス ラベル。categorical 配列、文字配列、logical ベクトル、数値ベクトル、または文字ベクトルの cell 配列を指定します。ClassNames のデータ型はクラス ラベル Y と同じです。(string 配列は文字ベクトルの cell 配列として扱われます)。ClassNames はクラスの順序も決定します。
データ型: categorical | char | logical | single | double | cell
この プロパティ は読み取り専用です。
誤分類のコスト。正方数値行列として指定します。Cost には K 個の行および列が含まれ、K はクラスの数です。
Cost( は、真のクラスが i,j)i である点をクラス j に分類するコストです。Cost の行と列の順序は、ClassNames のクラスの順序に対応します。
データ型: double
ClassificationLinear モデルに学習をさせるために使用したパラメーター。構造体を指定します。
ModelParameters のフィールドにはドット表記でアクセスします。たとえば、線形係数およびバイアス項の相対許容誤差にアクセスするには Mdl.ModelParameters.BetaTolerance を使用します。
データ型: struct
予測子データに現れる順序で並んでいる予測子名。文字ベクトルの cell 配列として指定します。PredictorNames の長さは、予測子変数として使用される学習データ X または Tbl に含まれている変数の数と等しくなります。
データ型: cell
展開された予測子名。文字ベクトルの cell 配列を指定します。
モデルがカテゴリカル変数用のエンコーディングを使用している場合、ExpandedPredictorNames には展開された変数を表す名前が格納されます。それ以外の場合、ExpandedPredictorNames は PredictorNames と同じです。
データ型: cell
この プロパティ は読み取り専用です。
事前クラス確率。数値ベクトルとして指定します。Prior には、ClassNames のクラスと同数の要素があり、その順序は ClassNames の要素と一致します。
データ型: double
応答変数名。文字ベクトルを指定します。
データ型: char
予測されたスコアに適用するスコア変換関数。関数名または関数ハンドルを指定します。
線形分類モデルで変換前の場合、観測値 x (行ベクトル) について予測される分類スコアは f(x) = xβ + b になります。β と b はそれぞれ Mdl.Beta と Mdl.Bias に対応します。
スコア変換関数を function などに変更するには、ドット表記を使用します。
組み込み関数の場合、
functionを表の値に置き換えて次のコードを入力します。Mdl.ScoreTransform = 'function';
値 説明 "doublelogit"1/(1 + e–2x) "invlogit"log(x / (1 – x)) "ismax"最大のスコアをもつクラスのスコアを 1 に設定し、他のすべてのクラスのスコアを 0 に設定する "logit"1/(1 + e–x) "none"または"identity"x (変換なし) "sign"x < 0 のとき –1
x = 0 のとき 0
x > 0 のとき 1"symmetric"2x – 1 "symmetricismax"最大のスコアをもつクラスのスコアを 1 に設定し、他のすべてのクラスのスコアを –1 に設定する "symmetriclogit"2/(1 + e–x) – 1 MATLAB® 関数やユーザー定義関数の場合は、関数ハンドルを入力します。
Mdl.ScoreTransform = @function;
functionは、各クラスの元のスコアの行列を受け入れて、各クラスの変換後のスコアを表す同じサイズの行列を返さなければなりません。
データ型: char | function_handle
オブジェクト関数
edge | 線形分類モデルの分類エッジ |
incrementalLearner | バイナリ分類用の線形モデルをインクリメンタル学習器に変換 |
lime | Local Interpretable Model-agnostic Explanations (LIME) |
loss | 線形分類モデルの分類損失 |
margin | 線形分類モデルの分類マージン |
partialDependence | 部分依存の計算 |
plotPartialDependence | 部分依存プロット (PDP) および個別条件付き期待値 (ICE) プロットの作成 |
predict | 線形分類モデルのラベルの予測 |
shapley | シャープレイ値 |
selectModels | 正則化されたバイナリ線形分類モデルのサブセットの選択 |
update | コード生成用にモデル パラメーターを更新 |
コピーのセマンティクス
値。値のクラスがコピー操作に与える影響については、オブジェクトのコピーを参照してください。
例
サポート ベクター マシン、双対 SGD およびリッジ正則化を使用して、バイナリ線形分類モデルに学習をさせます。
NLP のデータ セットを読み込みます。
load nlpdataX は予測子データのスパース行列、Y はクラス ラベルの categorical ベクトルです。データには 2 つを超えるクラスがあります。
Statistics and Machine Learning Toolbox™ のドキュメンテーション Web ページに対応するラベルを特定します。
Ystats = Y == 'stats';あるドキュメンテーション Web ページの単語数が Statistics and Machine Learning Toolbox™ ドキュメンテーションによるものであるかどうかを識別できるバイナリ線形分類モデルに学習をさせます。データ セット全体を使用してモデルに学習をさせます。近似の要約を抽出して、最適化アルゴリズムによるモデルがどの程度データに当てはまるかを判断します。
rng(1); % For reproducibility
[Mdl,FitInfo] = fitclinear(X,Ystats)Mdl =
ClassificationLinear
ResponseName: 'Y'
ClassNames: [0 1]
ScoreTransform: 'none'
Beta: [34023×1 double]
Bias: -1.0059
Lambda: 3.1674e-05
Learner: 'svm'
Properties, Methods
FitInfo = struct with fields:
Lambda: 3.1674e-05
Objective: 5.3783e-04
PassLimit: 10
NumPasses: 10
BatchLimit: []
NumIterations: 238561
GradientNorm: NaN
GradientTolerance: 0
RelativeChangeInBeta: 0.0562
BetaTolerance: 1.0000e-04
DeltaGradient: 1.4582
DeltaGradientTolerance: 1
TerminationCode: 0
TerminationStatus: {'Iteration limit exceeded.'}
Alpha: [31572×1 double]
History: []
FitTime: 0.0877
Solver: {'dual'}
Mdl は ClassificationLinear モデルです。Mdl と学習データまたは新しいデータを loss に渡して、標本内分類誤差を調べることができます。または、Mdl と新しい予測子データを predict に渡して、新しい観測値のクラス ラベルを予測することができます。
FitInfo は、重要な情報として終了ステータス (TerminationStatus) とソルバーによるモデルのデータへの当てはめにかかった時間 (FitTime) が含まれている構造体配列です。FitInfo を使用して、最適化終了時の結果が満足できるものであるかどうかを判断することをお勧めします。モデルの再学習を試すこともできますが、学習時間は短いので、データを通す回数を増やしてください。このようにすると、DeltaGradient などの尺度が向上します。
NLP のデータ セットを読み込みます。
load nlpdata n = size(X,1); % Number of observations
Statistics and Machine Learning Toolbox™ のドキュメンテーション Web ページに対応するラベルを特定します。
Ystats = Y == 'stats';5% のデータをホールドアウトします。
rng(1); % For reproducibility cvp = cvpartition(n,'Holdout',0.05)
cvp =
Hold-out cross validation partition
NumObservations: 31572
NumTestSets: 1
TrainSize: 29994
TestSize: 1578
IsCustom: 0
IsGrouped: 0
IsStratified: 0
Properties, Methods
cvp は、n 個のデータを学習セットとテスト セットに無作為に分割する方法を定義する CVPartition オブジェクトです。
あるドキュメンテーション Web ページの単語数が Statistics and Machine Learning Toolbox™ ドキュメンテーションによるものであるかどうかを識別できる学習セットを使用して、バイナリ線形分類モデルに学習をさせます。学習時間を短縮するため、観測値が列単位になるように予測子データの行列を配置します。
idxTrain = training(cvp); % Extract training set indices X = X'; Mdl = fitclinear(X(:,idxTrain),Ystats(idxTrain),'ObservationsIn','columns');
ホールドアウト標本の観測値と分類誤差を予測します。
idxTest = test(cvp); % Extract test set indices labels = predict(Mdl,X(:,idxTest),'ObservationsIn','columns'); L = loss(Mdl,X(:,idxTest),Ystats(idxTest),'ObservationsIn','columns')
L = 7.1753e-04
Mdl が誤分類する標本外観測値は 1% 未満です。
拡張機能
使用上の注意事項および制限事項:
fitclinearを使用して線形分類モデルに学習をさせる場合、以下の制限が適用されます。予測子データの入力引数値は、行列である場合、完全な数値行列でなければなりません。コード生成ではスパース データがサポートされません。
正則化強度は 1 つしか指定できず、名前と値のペアの引数
'Lambda'に'auto'または非負のスカラーを指定します。名前と値のペアの引数
'ScoreTransform'の値を無名関数にすることはできません。コーダー コンフィギュアラーを使用するコード生成では、以下の追加制限が適用されます。
カテゴリカル予測子 (
logical、categorical、char、string、またはcell) はサポートされません。名前と値の引数CategoricalPredictorsは使用できません。カテゴリカル予測子をモデルに含めるには、モデルを当てはめる前にdummyvarを使用してカテゴリカル予測子を前処理します。categoricalデータ型のクラス ラベルはサポートされません。学習データ内のクラス ラベル値 (TblまたはY) および名前と値の引数ClassNamesの値はどちらもcategoricalデータ型の配列にはできません。
詳細は、コード生成の紹介を参照してください。
次のオブジェクト関数は GPU 配列を完全にサポートしています。
次の少なくとも 1 つに該当する場合、オブジェクト関数は GPU で実行されます。
モデルが GPU 配列を使用して当てはめられている。
オブジェクト関数に渡す予測子データが GPU 配列である。
バージョン履歴
R2016a で導入fitclinear を使用して GPU 配列で ClassificationLinear オブジェクトを当てはめることができます。GPU で実行できるように、ClassificationLinear のほとんどのオブジェクト関数で GPU 配列の入力引数がサポートされるようになりました。GPU 配列の入力をサポートしていないオブジェクト関数は、incrementalLearner、lime、shapley、および update です。
R2022a 以降では、指定したコストの値を使用して観測誤分類コストを計算できるように、Cost プロパティにユーザー指定のコスト行列が格納されます。ソフトウェアで格納される正規化された事前確率 (Prior) には、コスト行列で指定されているペナルティは反映されていません。観測誤分類コストを計算するには、関数 loss を呼び出すときに名前と値の引数 LossFun を "classifcost" として指定します。
モデルの学習は変更されていないため、クラス間の判定境界には変更がないことに注意してください。
学習用に、指定した事前確率が近似関数によって更新され、指定したコスト行列で指定されているペナルティが組み込まれます。さらに、事前確率と観測値の重みが正規化されます。この動作は変更されていません。以前のリリースでは、Cost プロパティには既定のコスト行列が格納され、Prior プロパティには学習に使用される事前確率が格納されていました。R2022a 以降では、ユーザー指定のコスト行列が変更なしで格納され、コストのペナルティが反映されていない正規化された事前確率が格納されます。詳細については、誤分類コスト行列、事前確率、および観測値の重みを参照してください。
Cost プロパティと Prior プロパティを使用するオブジェクト関数の一部を次に示します。
関数
lossは、名前と値の引数LossFunを"classifcost"または"mincost"として指定した場合、Costプロパティに格納されたコスト行列を使用します。関数
lossおよびedgeは、入力データの観測値の重みを正規化するために、Priorプロパティに格納された事前確率を使用します。
分類モデルに学習させるときに既定以外のコスト行列を指定すると、オブジェクト関数で以前のリリースとは異なる値が返されます。
ソフトウェアでコスト行列、事前確率、および観測値の重みを以前のリリースと同じように扱う場合は、誤分類コスト行列に応じた事前確率と観測値の重みの調整の説明に従って、既定以外のコスト行列の事前確率と観測値の重みを調整します。その後、分類モデルに学習させるときに、調整後の事前確率と観測値の重みを名前と値の引数 Prior と Weights を使用して指定し、既定のコスト行列を使用します。
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)