Main Content

CompactClassificationNeuralNetwork

分類用のコンパクトなニューラル ネットワーク モデル

R2021a 以降

    説明

    CompactClassificationNeuralNetwork は、ClassificationNeuralNetwork モデル オブジェクトのコンパクトなバージョンです。コンパクトなモデルには、分類器の学習に使用されたデータが含まれません。このため、コンパクトなモデルを使用しても、交差検証など一部のタスクは実行できません。コンパクトなモデルは、新しいデータに対するラベルの予測などのタスクに使用します。

    作成

    CompactClassificationNeuralNetwork オブジェクトは、compact を使用して完全な ClassificationNeuralNetwork モデル オブジェクトから作成します。

    プロパティ

    すべて展開する

    ニューラル ネットワークのプロパティ

    この プロパティ は読み取り専用です。

    ニューラル ネットワーク モデル内の全結合層のサイズ。正の整数ベクトルとして返されます。LayerSizes の i 番目の要素は、ニューラル ネットワーク モデルの i 番目の全結合層の出力数です。

    LayerSizes には最終全結合層のサイズは含まれません。この層の出力数は常に K で、K は応答変数内のクラス数です。

    データ型: single | double

    この プロパティ は読み取り専用です。

    全結合層の学習済みの層の重み。cell 配列として返されます。cell 配列内の i 番目のエントリは、i 番目の全結合層の層の重みに対応します。たとえば、Mdl.LayerWeights{1} は、モデル Mdl の最初の全結合層についての重みを返します。

    LayerWeights には最終全結合層の重みが含まれます。

    データ型: cell

    この プロパティ は読み取り専用です。

    全結合層の学習済みの層のバイアス。cell 配列として返されます。cell 配列内の i 番目のエントリは、i 番目の全結合層の層のバイアスに対応します。たとえば、Mdl.LayerBiases{1} は、モデル Mdl の最初の全結合層についてのバイアスを返します。

    LayerBiases には最終全結合層のバイアスが含まれます。

    データ型: cell

    この プロパティ は読み取り専用です。

    ニューラル ネットワーク モデルの全結合層の活性化関数。次の表の値をもつ文字ベクトルまたは文字ベクトルの cell 配列として返されます。

    説明
    'relu'

    正規化線形ユニット (ReLU) 関数 — 各入力要素に対して、0 より小さい値については 0 に設定するという次のしきい値演算を実行します。

    f(x)={x,x00,x<0

    'tanh'

    双曲線正接 (tanh) 関数 — 各入力要素に関数 tanh を適用します。

    'sigmoid'

    シグモイド関数 — 各入力要素に対して次の演算を実行します。

    f(x)=11+ex

    'none'

    恒等関数 — 変換を実行せずに、各入力要素を次のようにそのまま返します。f(x) = x

    • Activations に活性化関数が 1 つだけ含まれている場合は、ニューラル ネットワーク モデルの最終全結合層を除くすべての全結合層の活性化関数になります。最終全結合層の活性化関数は常にソフトマックス (OutputLayerActivation) です。

    • Activations が活性化関数の配列の場合は、i 番目の要素がニューラル ネットワーク モデルの i 番目の層の活性化関数になります。

    データ型: char | cell

    この プロパティ は読み取り専用です。

    最終全結合層の活性化関数。'softmax' として返されます。関数は入力 xi を取り、各入力について次を返します。K は応答変数内のクラスの数です。

    f(xi)=exp(xi)j=1Kexp(xj).

    結果は予測分類スコア (または事後確率) に対応します。

    データ プロパティ

    この プロパティ は読み取り専用です。

    予測子変数名。文字ベクトルの cell 配列として返されます。PredictorNames の要素の順序は、予測子名が学習データに現れる順序に対応します。

    データ型: cell

    この プロパティ は読み取り専用です。

    カテゴリカル予測子のインデックス。正の整数のベクトルとして返されます。予測子データの行に観測値が含まれていると仮定すると、CategoricalPredictors には、カテゴリカル予測子が含まれている予測子データの列に対応するインデックス値が格納されます。どの予測子もカテゴリカルではない場合、このプロパティは空 ([]) になります。

    データ型: double

    この プロパティ は読み取り専用です。

    展開された予測子名。文字ベクトルの cell 配列として返されます。モデルがカテゴリカル変数用のエンコーディングを使用している場合、ExpandedPredictorNames には展開された変数を表す名前が格納されます。それ以外の場合、ExpandedPredictorNamesPredictorNames と同じです。

    データ型: cell

    この プロパティ は読み取り専用です。

    学習に使用された一意のクラス名。数値ベクトル、categorical ベクトル、logical ベクトル、文字配列、または文字ベクトルの cell 配列として返されます。ClassNames のデータ型はモデルの学習に使用された応答変数内のクラス ラベルと同じです。(string 配列は文字ベクトルの cell 配列として扱われます)。ClassNames はクラスの順序も決定します。

    データ型: single | double | categorical | logical | char | cell

    R2023b 以降

    この プロパティ は読み取り専用です。

    予測子の平均。数値ベクトルとして返されます。ニューラル ネットワーク モデルに学習させるときに Standardize1 または true に設定した場合、ベクトル Mu の長さは展開された予測子の数と等しくなります (ExpandedPredictorNames を参照)。展開されたカテゴリカル予測子に対応するダミー変数については、ベクトルに値 0 が格納されます。

    ニューラル ネットワーク モデルに学習させるときに Standardize0 または false に設定した場合、Mu の値は空ベクトル ([]) になります。

    データ型: double

    この プロパティ は読み取り専用です。

    応答変数名。文字ベクトルとして返されます。

    データ型: char

    R2023b 以降

    この プロパティ は読み取り専用です。

    予測子の標準偏差。数値ベクトルとして返されます。ニューラル ネットワーク モデルに学習させるときに Standardize1 または true に設定した場合、ベクトル Sigma の長さは展開された予測子の数と等しくなります (ExpandedPredictorNames を参照)。展開されたカテゴリカル予測子に対応するダミー変数については、ベクトルに値 1 が格納されます。

    ニューラル ネットワーク モデルに学習させるときに Standardize0 または false に設定した場合、Sigma の値は空ベクトル ([]) になります。

    データ型: double

    他の分類のプロパティ

    誤分類コスト。数値正方行列として返されます。Cost(i,j) は、真のクラスが i である場合に点をクラス j に分類するコストです。コスト行列は、i ~= j の場合は Cost(i,j) = 1i = j の場合は Cost(i,j) = 0 という形式に必ずなります。行は真のクラスに、列は予測するクラスに対応します。Cost の行と列の順序は、ClassNames のクラスの順序に対応します。

    Cost の値は予測に使用されますが、学習には使用されません。学習済みモデルの Cost プロパティの値はドット表記を使用して変更できます。

    データ型: double

    この プロパティ は読み取り専用です。

    事前クラス確率。数値ベクトルとして返されます。Prior の要素の順序は ClassNames の要素に対応します。

    データ型: double

    スコア変換。文字ベクトルまたは関数ハンドルを指定します。ScoreTransform は、組み込みの変換関数または予測した分類スコアを変換する関数のハンドルを表します。

    スコア変換関数を 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

    オブジェクト関数

    すべて展開する

    limeLocal Interpretable Model-agnostic Explanations (LIME)
    partialDependence部分依存の計算
    plotPartialDependence部分依存プロット (PDP) および個別条件付き期待値 (ICE) プロットの作成
    shapleyシャープレイ値
    edgeニューラル ネットワーク分類器の分類エッジ
    lossニューラル ネットワーク分類器の分類損失
    marginニューラル ネットワーク分類器の分類マージン
    predictニューラル ネットワーク分類器を使用した観測値の分類
    compareHoldout新しいデータを使用して 2 つの分類モデルの精度を比較
    testckfold交差検証の反復により 2 つの分類モデルの精度を比較

    すべて折りたたむ

    モデルから学習データを削除することにより、完全なニューラル ネットワーク分類器のサイズを縮小します。コンパクトなモデルを使用すると、メモリ効率を向上させることができます。

    patients データ セットを読み込みます。データ セットから table を作成します。各行が 1 人の患者に対応し、各列が診断の変数に対応します。変数 Smoker を応答変数として使用し、残りの変数を予測子として使用します。

    load patients
    tbl = table(Diastolic,Systolic,Gender,Height,Weight,Age,Smoker);

    データを使用してニューラル ネットワーク分類器に学習させます。tbl の列 Smoker を応答変数として指定します。数値予測子を標準化するための指定を行います。

    Mdl = fitcnet(tbl,"Smoker","Standardize",true)
    Mdl = 
      ClassificationNeuralNetwork
               PredictorNames: {'Diastolic'  'Systolic'  'Gender'  'Height'  'Weight'  'Age'}
                 ResponseName: 'Smoker'
        CategoricalPredictors: 3
                   ClassNames: [0 1]
               ScoreTransform: 'none'
              NumObservations: 100
                   LayerSizes: 10
                  Activations: 'relu'
        OutputLayerActivation: 'softmax'
                       Solver: 'LBFGS'
              ConvergenceInfo: [1x1 struct]
              TrainingHistory: [36x7 table]
    
    
    

    Mdl は完全な ClassificationNeuralNetwork モデル オブジェクトです。

    compact を使用してモデルのサイズを縮小します。

    compactMdl = compact(Mdl)
    compactMdl = 
      CompactClassificationNeuralNetwork
                   LayerSizes: 10
                  Activations: 'relu'
        OutputLayerActivation: 'softmax'
    
    
    

    compactMdlCompactClassificationNeuralNetwork モデル オブジェクトです。compactMdl では、格納されるプロパティが完全なモデル Mdl よりも少なくなっています。

    各ニューラル ネットワーク モデルで使用されるメモリの量を表示します。

    whos("Mdl","compactMdl")
      Name            Size            Bytes  Class                                                           Attributes
    
      Mdl             1x1             19105  ClassificationNeuralNetwork                                               
      compactMdl      1x1              6832  classreg.learning.classif.CompactClassificationNeuralNetwork              
    

    完全なモデルの方がコンパクトなモデルよりも大きくなっています。

    拡張機能

    バージョン履歴

    R2021a で導入

    すべて展開する