Main Content

CompactClassificationDiscriminant

パッケージ: classreg.learning.classif

コンパクトな判別分析クラス

説明

CompactClassificationDiscriminant オブジェクトは、コンパクトなバージョンの判別分析分類器です。コンパクトなバージョンには、分類器の学習のためのデータが含まれません。そのため、コンパクトな分類器では、交差検証などの一部のタスクを実行できません。コンパクトな分類器は、新しいデータの予測 (分類) を行うために使用してください。

構築

cobj = compact(obj) は、完全な分類器からコンパクトな分類器を構築します。

cobj = makecdiscr(Mu,Sigma) は、クラス平均 Mu と共分散行列 Sigma からコンパクトな判別分析分類器を構築します。構文の詳細は、makecdiscr を参照してください。

入力引数

obj

fitcdiscr を使用して作成された判別分析分類器。

プロパティ

BetweenSigma

pp 列の行列、クラス間の共分散で、p は予測子の数です。

CategoricalPredictors

常に空 ([]) であるカテゴリカル予測子のインデックス。

ClassNames

重複が削除された学習データ Y の要素のリスト。ClassNames には、categorical 配列、文字ベクトルの cell 配列、文字配列、logical ベクトル、数値ベクトルのいずれかを指定できます。ClassNames のデータ型は、引数 Y のデータ型と同じです。(string 配列は文字ベクトルの cell 配列として扱われます)。

Coeffs

係数行列の kk 列の構造体で、k はクラスの数です。Coeffs(i,j)i から j までのクラスの間の線形または 2 次の境界の係数を含みます。Coeffs(i,j) 内のフィールド:

  • DiscrimType

  • Class1ClassNames(i)

  • Class2ClassNames(j)

  • Const — スカラー

  • Linearp 成分をもつベクトル (pX の列の数)

  • Quadraticpp 列の行列で、2 次 DiscrimType 用に存在

クラス i とクラス j の境界線の等式は次のとおりです。

Const + Linear * x + x' * Quadratic * x = 0,

ここで x は、長さ p の列ベクトルです。

分類器を作成するときに、fitcdiscrFillCoeffs 名前と値のペアが 'off' に設定された場合、Coeffs は空 ([]) です。

Cost

正方行列。Cost(i,j) は真のクラスが i である場合に 1 つの点をクラス j に分類するためのコストです (行は真のクラス、列は予測したクラスに対応します)。Cost の行と列の順序は、ClassNames のクラスの順序に対応します。Cost の行および列の数は、応答に含まれている一意なクラスの数です。

ドット表記を使用して Cost 行列を変更します。obj.Cost = costMatrix

Delta

線形判別モデルのためのデルタしきい値であり、非負のスカラーです。obj の係数が Delta よりも大きさが小さい場合、obj はこの係数を 0 に設定し、それによって対応する予測子をモデルから削除できます。Delta を高い値に設定すると、削除できる予測子が多くなります。

2 次判別モデルでは Delta0 でなければなりません。

ドット表記を使用して Delta を変更します。obj.Delta = newDelta

DeltaPredictor

obj の予測子の数と同じ長さの行ベクトル。DeltaPredictor(i) < Delta である場合、モデルの係数 i0 です。

obj が 2 次判別モデルである場合、DeltaPredictor のすべての要素は 0 です。

DiscrimType

判別タイプを指定する文字ベクトル。次のいずれかです。

  • 'linear'

  • 'quadratic'

  • 'diagLinear'

  • 'diagQuadratic'

  • 'pseudoLinear'

  • 'pseudoQuadratic'

ドット表記を使用して DiscrimType を変更します。obj.DiscrimType = newDiscrimType

線形タイプ間または 2 次タイプ間での変更は可能ですが、線形タイプと 2 次タイプの間の変更はできません。

Gamma

ガンマ正則化パラメーターの値であり、0 から 1 までのスカラーです。ドット表記を使用して Gamma を変更します。obj.Gamma = newGamma

  • 線形判別式のために 1 を設定する場合、判別式はそのタイプを 'diagLinear' に設定します。

  • 線形判別式のために MinGamma から 1 までの値を設定する場合、判別式はそのタイプを 'linear' に設定します。

  • MinGamma プロパティの値より小さい値を設定できません。

  • 2 次判別式の場合、0 (DiscrimType 'quadratic' の場合) または 1 (DiscrimType 'diagQuadratic' の場合) のいずれかに設定できます。

LogDetSigma

クラス間共分散行列の行列式の対数。LogDetSigma のタイプは判別タイプによって異なります。

  • 線形判別分析のスカラー

  • 2 次判別分析の長さ K のベクトルで、K はクラスの数

MinGamma

非負のスカラーであり、相関行列が可逆になるガンマ パラメーターの最小値です。相関行列が特異ではない場合、MinGamma0 になります。

Mu

クラス平均。サイズのスカラー値クラス平均の Kp 列の行列として指定されます。K はクラス数で、p は予測子の数です。Mu の各行は、対応するクラスの多変量正規分布の平均を表します。クラス インデックスは、ClassNames 属性にあります。

PredictorNames

予測子変数の名前の cell 配列。並びは学習データ X に現れる順です。

Prior

各クラスの事前確率の数値ベクトル。Prior の要素の順序は、ClassNames のクラスの順序に対応します。

ベクトル Prior を追加または変更するには、次のようにドット表記を使用します。obj.Prior = priorVector

ResponseName

応答変数 Y を表す文字ベクトル。

ScoreTransform

組み込みの変換関数を表す文字ベクトル、またはスコアを変換する関数のハンドル。'none' は変換なしを意味します。つまり、'none'@(x)x を意味します。組み込みの変換関数のリストとカスタム変換関数の構文は、fitcdiscr を参照してください。

ドット表記を実装し、次のいずれかの方法で関数 ScoreTransform を追加または変更します。

  • cobj.ScoreTransform = 'function'

  • cobj.ScoreTransform = @function

Sigma

1 つまたは複数のクラス内共分散行列。次元は DiscrimType に応じて異なります。

  • 'linear' (既定) — サイズ pp 列の行列で、p は予測子の数

  • 'quadratic' — サイズ p x p x K の配列で、K はクラスの数

  • 'diagLinear' — 長さの行ベクトル p

  • 'diagQuadratic' — サイズ 1 x p x K の配列

  • 'pseudoLinear' — サイズ pp 列の行列

  • 'pseudoQuadratic' — サイズ p x p x K の配列

オブジェクト関数

compareHoldout新しいデータを使用して 2 つの分類モデルの精度を比較
edge分類エッジ
limeLocal Interpretable Model-agnostic Explanations (LIME)
logp判別分析分類器の対数条件なし確率密度
loss分類誤差
mahal判別分析分類器のクラスの平均に対するマハラノビス距離
margin分類マージン
nLinearCoeffs非ゼロの線形係数の数
partialDependence部分従属の計算
plotPartialDependence部分依存プロット (PDP) および個別条件付き期待値 (ICE) プロットの作成
predict判別分析分類モデルの使用によるラベルの予測
shapleyシャープレイ値

コピーのセマンティクス

値。値のクラスがコピー操作に与える影響については、オブジェクトのコピーを参照してください。

すべて折りたたむ

標本データを読み込みます。

load fisheriris

標本データの判別分析分類器を構築します。

fullobj = fitcdiscr(meas,species);

コンパクトな判別分析分類器を構築し、そのサイズを完全な分類器のサイズと比較します。

cobj = compact(fullobj);
b = whos('fullobj'); % b.bytes = size of fullobj
c = whos('cobj'); % c.bytes = size of cobj
[b.bytes c.bytes] % shows cobj uses 60% of the memory
ans = 1×2

       18291       11678

コンパクトな分類器は完全な分類器より小さくなっています。

フィッシャーのアヤメのデータの平均と共分散からコンパクトな判別分析分類器を構築します。

load fisheriris
mu(1,:) = mean(meas(1:50,:));
mu(2,:) = mean(meas(51:100,:));
mu(3,:) = mean(meas(101:150,:));

mm1 = repmat(mu(1,:),50,1);
mm2 = repmat(mu(2,:),50,1);
mm3 = repmat(mu(3,:),50,1);
cc = meas;
cc(1:50,:) = cc(1:50,:) - mm1;
cc(51:100,:) = cc(51:100,:) - mm2;
cc(101:150,:) = cc(101:150,:) - mm3;
sigstar = cc' * cc / 147;
cpct = makecdiscr(mu,sigstar,...
    'ClassNames',{'setosa','versicolor','virginica'});

詳細

すべて展開する

拡張機能

バージョン履歴

R2011b で導入