Main Content

RegressionPartitionedNeuralNetwork

交差検証済みの回帰ニューラル ネットワーク モデル

R2023b 以降

    説明

    RegressionPartitionedNeuralNetwork は、交差検証分割で学習させた回帰ニューラル ネットワーク モデルのセットです。"kfold" 関数の kfoldPredictkfoldLosskfoldfun を 1 つ以上使用して、交差検証回帰の品質を評価します。

    すべての kfold オブジェクト関数では、学習分割 (分割内) 観測値で学習させたモデルを使用して検証分割 (分割外) 観測値に対する応答を予測します。たとえば、データを 5 つに分割して交差検証を行うとします。ほぼ等しいサイズの 5 つのグループに各観測値が無作為に割り当てられます。"学習分割" にはグループのうち 4 つ (データの約 4/5) が含まれ、"検証分割" には他のグループ (データの約 1/5) が含まれます。この場合、交差検証は次のように処理されます。

    1. (CVMdl.Trained{1} に格納されている) 1 番目のモデルの学習には最後の 4 つのグループの観測値が使用され、1 番目のグループの観測値は検証用に確保されます。

    2. (CVMdl.Trained{2} に格納されている) 2 番目のモデルの学習には、1 番目のグループと最後の 3 つのグループの観測値が使用されます。2 番目のグループの観測値は、検証用に予約されます。

    3. 3 番目、4 番目および 5 番目のモデルに対しても同様に続けられます。

    kfoldPredict を使用して検証する場合、モデル i を使用してグループ i の観測値についての予測が計算されます。つまり、それぞれの観測値に対する応答は、その観測値を使用せずに学習させたモデルによって推定されます。

    作成

    RegressionPartitionedNeuralNetwork オブジェクトは 2 つの方法で作成できます。

    • オブジェクト関数 crossval を使用して、回帰ニューラル ネットワーク モデル オブジェクト RegressionNeuralNetwork から交差検証済みモデルを作成する。

    • 関数 fitrnet を使用し、名前と値の引数 CrossValCVPartitionHoldoutKFoldLeaveout のいずれかを指定して、交差検証済みモデルを作成する。

    プロパティ

    すべて展開する

    交差検証のプロパティ

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

    交差検証済みモデルの名前。'NeuralNetwork' として指定されます。

    データ型: char

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

    交差検証された分割の数。正の整数で指定します。

    データ型: double

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

    交差検証パラメーター値。EnsembleParams オブジェクトとして指定します。パラメーター値は、ニューラル ネットワーク モデルの交差検証に使用した名前と値の引数の値に対応します。推定されたパラメーターは ModelParameters に含まれません。

    ドット表記を使用して ModelParameters のプロパティにアクセスできます。

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

    データを交差検証分割に分割する方法を含むデータ分割。cvpartition モデルとして指定します。

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

    交差検証分割で学習させたコンパクトなモデル。CompactRegressionNeuralNetwork モデル オブジェクトの cell 配列として指定されます。Trained には k 個のセルがあります。k は分割数です。

    データ型: cell

    他の回帰のプロパティ

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

    カテゴリカル予測子のインデックス。正の整数のベクトルとして指定します。CategoricalPredictors には、対応する予測子がカテゴリカルであることを示すインデックス値が格納されます。インデックス値の範囲は 1 ~ p です。p はモデルの学習に使用した予測子の数です。どの予測子もカテゴリカルではない場合、このプロパティは空 ([]) になります。

    データ型: double

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

    X および Y に格納されている学習データ内の観測値の個数。数値スカラーを指定します。

    データ型: double

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

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

    データ型: cell

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

    応答変数名。文字ベクトルを指定します。

    データ型: char

    応答変換関数。'none' または関数ハンドルを指定します。ResponseTransform は、生の応答値を変換する方法を表します。

    MATLAB® 関数やユーザー定義関数の場合は、関数ハンドルを入力します。たとえば、CVMdl.ResponseTransform = @function を入力できます。ここで function は、元の応答の数値ベクトルを受け入れ、変換した応答が格納されている同じサイズの数値ベクトルを返します。

    データ型: char | function_handle

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

    観測値の重み。n 行 1 列の数値ベクトルとして指定します。ここで、n は観測値の数 (NumObservations) です。観測値の重みは、W の要素の合計が 1 になるように正規化されます。

    データ型: double

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

    モデルの交差検証に使用された標準化されていない予測子。数値行列または table として指定されます。X では、fitrnet を呼び出したときの名前と値の引数 ObservationsIn の値に応じて、元の向きで行または列に観測値が格納されます。

    データ型: single | double | table

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

    モデルの交差検証に使用された応答値。数値ベクトルとして指定されます。Y の各行は、X の対応する観測値の応答値を表します。

    データ型: single | double

    オブジェクト関数

    kfoldLoss交差検証された分割済みの回帰モデルの損失
    kfoldPredict交差検証済み回帰モデル内の観測値に対する応答の予測
    kfoldfun回帰での関数の交差検証

    すべて折りたたむ

    fitrnet を使用して、交差検証済みの 10 分割 (既定の交差検証オプション) の回帰ニューラル ネットワークに学習させます。その後、kfoldPredict を使用し、学習分割観測値に対して学習をさせたモデルを使用して、検証分割観測値の応答を予測します。

    carbig データ セットを読み込みます。このデータ セットには、1970 年代と 1980 年代初期に製造された自動車の測定値が格納されています。

    load carbig

    予測子変数 (AccelerationDisplacementHorsepower、および Weight) と応答変数 (MPG) を格納する table を作成します。

    Tbl = table(Acceleration,Displacement,Horsepower,Weight,MPG);

    既定の交差検証オプションを使用して交差検証済み回帰ニューラル ネットワークを作成します。CrossVal の値を "on" として指定します。より適切なモデルの当てはめが得られるように、数値予測子を標準化します。

    rng("default") % For reproducibility
    CVMdl = fitrnet(Tbl,"MPG", ...
        CrossVal="on",Standardize=true)
    CVMdl = 
      RegressionPartitionedNeuralNetwork
        CrossValidatedModel: 'NeuralNetwork'
             PredictorNames: {'Acceleration'  'Displacement'  'Horsepower'  'Weight'}
               ResponseName: 'MPG'
            NumObservations: 398
                      KFold: 10
                  Partition: [1x1 cvpartition]
          ResponseTransform: 'none'
    
    
    

    関数 fitrnet で 10 分割の RegressionPartitionedNeuralNetwork モデル オブジェクト CVMdl が作成されます。交差検証時は、以下の手順が実行されます。

    1. データを 10 個のセットに無作為に分割する。

    2. 各セットについて、そのセットを検証データとして予約し、他の 9 個のセットを使用してモデルに学習させる。

    3. 10 個のコンパクトな学習済みモデルを交差検証済みモデル オブジェクトの Trained プロパティに 10 行 1 列の cell ベクトルとして格納する。

    既定の交差検証の設定は、名前と値の引数 CVPartitionHoldoutKFoldLeaveout を使用してオーバーライドできます。

    kfoldPredict を使用して Tbl の観測値の応答を予測します。それぞれの観測値に対する応答が、その観測値を使用せずに学習させたモデルを使用して予測されます。

    yHat = kfoldPredict(CVMdl);

    yHat は数値ベクトルです。最初の 5 つの予測応答を表示します。

    yHat(1:5)
    ans = 5×1
    
       16.1735
       14.5554
       15.4195
       16.0460
       15.7057
    
    

    回帰損失 (平均二乗誤差) を計算します。

    L = kfoldLoss(CVMdl)
    L = 16.4467
    

    kfoldLoss から 10 個の分割についての平均二乗誤差の平均が返されます。

    バージョン履歴

    R2023b で導入