RegressionNeuralNetwork
説明
RegressionNeuralNetwork
オブジェクトは、回帰用の全結合の学習済みフィードフォワード ニューラル ネットワークです。ニューラル ネットワークの最初の全結合層にはネットワーク入力 (予測子データ X
) からの結合があり、後続の各層には前の層からの結合があります。各全結合層では、入力に重み行列 (LayerWeights
) が乗算されてからバイアス ベクトル (LayerBiases
) が加算されます。最終層を除く各全結合層の後には活性化関数 (Activations
および OutputLayerActivation
) が続きます。最終全結合層によってネットワークの出力、つまり予測応答値が生成されます。詳細については、ニューラル ネットワークの構造を参照してください。
作成
RegressionNeuralNetwork
オブジェクトの作成には fitrnet
を使用します。
プロパティ
ニューラル ネットワークのプロパティ
LayerSizes
— 全結合層のサイズ
正の整数ベクトル
この プロパティ は読み取り専用です。
ニューラル ネットワーク モデル内の全結合層のサイズ。正の整数ベクトルとして返されます。LayerSizes
の i 番目の要素は、ニューラル ネットワーク モデルの i 番目の全結合層の出力数です。
LayerSizes
には最終全結合層のサイズは含まれません。この層の出力は常に 1 つです。
データ型: single
| double
LayerWeights
— 学習済みの層の重み
cell 配列
この プロパティ は読み取り専用です。
全結合層の学習済みの層の重み。cell 配列として返されます。cell 配列内の i 番目のエントリは、i 番目の全結合層の層の重みに対応します。たとえば、Mdl.LayerWeights{1}
は、モデル Mdl
の最初の全結合層についての重みを返します。
LayerWeights
には最終全結合層の重みが含まれます。
データ型: cell
LayerBiases
— 学習済みの層のバイアス
cell 配列
この プロパティ は読み取り専用です。
全結合層の学習済みの層のバイアス。cell 配列として返されます。cell 配列内の i 番目のエントリは、i 番目の全結合層の層のバイアスに対応します。たとえば、Mdl.LayerBiases{1}
は、モデル Mdl
の最初の全結合層についてのバイアスを返します。
LayerBiases
には最終全結合層のバイアスが含まれます。
データ型: cell
Activations
— 全結合層の活性化関数
'relu'
| 'tanh'
| 'sigmoid'
| 'none'
| 文字ベクトルの cell 配列
この プロパティ は読み取り専用です。
ニューラル ネットワーク モデルの全結合層の活性化関数。次の表の値をもつ文字ベクトルまたは文字ベクトルの cell 配列として返されます。
値 | 説明 |
---|---|
'relu' | 正規化線形ユニット (ReLU) 関数 — 各入力要素に対して、0 より小さい値については 0 に設定するという次のしきい値演算を実行します。 |
'tanh' | 双曲線正接 (tanh) 関数 — 各入力要素に関数 |
'sigmoid' | シグモイド関数 — 各入力要素に対して次の演算を実行します。 |
'none' | 恒等関数 — 変換を実行せずに、各入力要素を次のようにそのまま返します。f(x) = x |
Activations
に活性化関数が 1 つだけ含まれている場合は、ニューラル ネットワーク モデルの最終全結合層を除くすべての全結合層の活性化関数になります。最終全結合層には活性化関数はありません (OutputLayerActivation
)。Activations
が活性化関数の配列の場合は、i 番目の要素がニューラル ネットワーク モデルの i 番目の層の活性化関数になります。
データ型: char
| cell
OutputLayerActivation
— 最終全結合層の活性化関数
'none'
この プロパティ は読み取り専用です。
最終全結合層の活性化関数。'none'
として返されます。
ModelParameters
— モデルの学習に使用されるパラメーター値
NeuralNetworkParams
オブジェクト
この プロパティ は読み取り専用です。
RegressionNeuralNetwork
モデルの学習に使用されたパラメーター値。NeuralNetworkParams
オブジェクトとして返されます。ModelParameters
には、回帰ニューラル ネットワーク モデルの学習に使用された名前と値の引数などのパラメーター値が格納されます。
ModelParameters
のプロパティにアクセスするには、ドット表記を使用します。たとえば、モデル Mdl
の全結合層の重みの初期化に使用する関数にアクセスするには Mdl.ModelParameters.LayerWeightsInitializer
を使用します。
収束制御のプロパティ
ConvergenceInfo
— 収束情報
構造体配列
この プロパティ は読み取り専用です。
収束情報。構造体配列として返されます。
フィールド | 説明 |
---|---|
Iterations | ニューラル ネットワーク モデルの学習に使用された学習反復の数 |
TrainingLoss | 返されたモデルの学習平均二乗誤差 (MSE) (モデル Mdl の resubLoss(Mdl) ) |
Gradient | 返されたモデルに対応する反復における重みとバイアスに関する損失関数の勾配 |
Step | 返されたモデルに対応する反復におけるステップ サイズ |
Time | すべての反復に費やした合計時間 (秒) |
ValidationLoss | 返されたモデルの検証 MSE |
ValidationChecks | 検証損失が連続で検証損失の最小値以上になった最大回数 |
ConvergenceCriterion | 収束の基準 |
History | TrainingHistory を参照 |
データ型: struct
TrainingHistory
— 学習履歴
テーブル
この プロパティ は読み取り専用です。
学習履歴。table として返されます。
列 | 説明 |
---|---|
Iteration | 学習反復 |
TrainingLoss | この反復におけるモデルの学習平均二乗誤差 (MSE) |
Gradient | この反復における重みとバイアスに関する損失関数の勾配 |
Step | この反復におけるステップ サイズ |
Time | この反復に費やした時間 (秒) |
ValidationLoss | この反復におけるモデルの検証 MSE |
ValidationChecks | 検証損失が連続で検証損失の最小値以上になっている現在までの回数 |
データ型: table
Solver
— ニューラル ネットワーク モデルの学習に使用されたソルバー
'LBFGS'
この プロパティ は読み取り専用です。
ニューラル ネットワーク モデルの学習に使用されたソルバー。'LBFGS'
として返されます。fitrnet
による RegressionNeuralNetwork
モデルの作成では、メモリ制限 Broyden-Fletcher-Goldfarb-Shanno 準ニュートン アルゴリズム (LBFGS) が損失関数の最小化手法として使用され、平均二乗誤差 (MSE) が最小化されます。
予測子のプロパティ
PredictorNames
— 予測子変数名
文字ベクトルの cell 配列
この プロパティ は読み取り専用です。
予測子変数名。文字ベクトルの cell 配列として返されます。PredictorNames
の要素の順序は、予測子名が学習データに現れる順序に対応します。
データ型: cell
CategoricalPredictors
— カテゴリカル予測子のインデックス
正の整数のベクトル | []
この プロパティ は読み取り専用です。
カテゴリカル予測子のインデックス。正の整数のベクトルとして返されます。予測子データの行に観測値が含まれていると仮定すると、CategoricalPredictors
には、カテゴリカル予測子が含まれている予測子データの列に対応するインデックス値が格納されます。どの予測子もカテゴリカルではない場合、このプロパティは空 ([]
) になります。
データ型: double
ExpandedPredictorNames
— 展開された予測子名
文字ベクトルの cell 配列
この プロパティ は読み取り専用です。
展開された予測子名。文字ベクトルの cell 配列として返されます。モデルがカテゴリカル変数用のエンコーディングを使用している場合、ExpandedPredictorNames
には展開された変数を表す名前が格納されます。それ以外の場合、ExpandedPredictorNames
は PredictorNames
と同じです。
データ型: cell
Mu
— 予測子の平均
数値ベクトル | []
R2023b 以降
この プロパティ は読み取り専用です。
予測子の平均。数値ベクトルとして返されます。ニューラル ネットワーク モデルに学習させるときに Standardize
を 1
または true
に設定した場合、ベクトル Mu
の長さは展開された予測子の数と等しくなります (ExpandedPredictorNames
を参照)。展開されたカテゴリカル予測子に対応するダミー変数については、ベクトルに値 0
が格納されます。
ニューラル ネットワーク モデルに学習させるときに Standardize
を 0
または false
に設定した場合、Mu
の値は空ベクトル ([]
) になります。
データ型: double
Sigma
— 予測子の標準偏差
数値ベクトル | []
R2023b 以降
この プロパティ は読み取り専用です。
予測子の標準偏差。数値ベクトルとして返されます。ニューラル ネットワーク モデルに学習させるときに Standardize
を 1
または true
に設定した場合、ベクトル Sigma
の長さは展開された予測子の数と等しくなります (ExpandedPredictorNames
を参照)。展開されたカテゴリカル予測子に対応するダミー変数については、ベクトルに値 1
が格納されます。
ニューラル ネットワーク モデルに学習させるときに Standardize
を 0
または false
に設定した場合、Sigma
の値は空ベクトル ([]
) になります。
データ型: double
X
— 標準化されていない予測子
数値行列 | テーブル
この プロパティ は読み取り専用です。
ニューラル ネットワーク モデルの学習に使用された標準化されていない予測子。数値行列または table として返されます。X
では、fitrnet
を呼び出したときの名前と値の引数 ObservationsIn
の値に応じて、元の向きで行または列に観測値が格納されます。
データ型: single
| double
| table
応答のプロパティ
ResponseName
— 応答変数名
文字ベクトル
この プロパティ は読み取り専用です。
応答変数名。文字ベクトルとして返されます。
データ型: char
Y
— 応答値
数値ベクトル
この プロパティ は読み取り専用です。
モデルの学習に使用された応答値。数値ベクトルとして返されます。Y
の各行は、X
の対応する観測値の応答値を表します。
データ型: single
| double
ResponseTransform
— 応答変換関数
'none'
| 関数ハンドル
応答変換関数。'none'
または関数ハンドルを指定します。ResponseTransform
は、生の応答値を変換する方法を表します。
MATLAB® 関数やユーザー定義関数の場合は、関数ハンドルを入力します。たとえば、Mdl.ResponseTransform = @function
を入力できます。ここで function
は、元の応答の数値ベクトルを受け入れ、変換した応答が格納されている同じサイズの数値ベクトルを返します。
データ型: char
| function_handle
その他のデータのプロパティ
HyperparameterOptimizationResults
— ハイパーパラメーターの交差検証最適化
BayesianOptimization
オブジェクト | テーブル
この プロパティ は読み取り専用です。
ハイパーパラメーターの交差検証最適化。ハイパーパラメーターおよび関連する値が含まれているテーブルまたは BayesianOptimization
オブジェクトを指定します。モデルを作成するときに名前と値のペアの引数 'OptimizeHyperparameters'
が空以外であった場合、このプロパティは空以外になります。HyperparameterOptimizationResults
の値は、モデル作成時の構造体 HyperparameterOptimizationOptions
の Optimizer
フィールドの設定によって変化します。
Optimizer フィールドの値 | HyperparameterOptimizationResults の値 |
---|---|
'bayesopt' (既定の設定) | BayesianOptimization クラスのオブジェクト |
'gridsearch' または 'randomsearch' | 使用したハイパーパラメーター、観測された目的関数の値 (交差検証損失)、および最低 (最良) から最高 (最悪) までの観測値の順位が格納されているテーブル |
NumObservations
— 観測値の数
正の数値スカラー
この プロパティ は読み取り専用です。
X
および Y
に格納されている学習データ内の観測値の個数。正の数値スカラーとして返されます。
データ型: double
RowsUsed
— 格納されている元の学習データの観測値
logical ベクトル | []
この プロパティ は読み取り専用です。
モデルに格納されている元の学習データの観測値。logical ベクトルとして返されます。このプロパティは、X
と Y
にすべての観測値が格納される場合は空になります。
データ型: logical
W
— 観測値の重み
数値ベクトル
この プロパティ は読み取り専用です。
モデルの学習に使用された観測値の重み。n 行 1 列の数値ベクトルとして返されます。n は観測値の個数 (NumObservations
) です。
W
の要素の合計が 1 になるように、名前と値の引数 Weights
で指定された観測値の重みが正規化されます。
データ型: single
| double
オブジェクト関数
CompactRegressionNeuralNetwork
の作成
compact | 機械学習モデルのサイズの縮小 |
RegressionPartitionedNeuralNetwork
の作成
crossval | 機械学習モデルの交差検証 |
予測の解釈
lime | Local Interpretable Model-agnostic Explanations (LIME) |
partialDependence | 部分依存の計算 |
plotPartialDependence | 部分依存プロット (PDP) および個別条件付き期待値 (ICE) プロットの作成 |
shapley | シャープレイ値 |
学習データでの予測性能の評価
resubLoss | 再代入回帰損失 |
resubPredict | 学習済み回帰モデルを使用した学習データについての応答の予測 |
例
ニューラル ネットワーク回帰モデルの学習
ニューラル ネットワーク回帰モデルに学習させ、テスト セットでモデルの性能を評価します。
carbig
データ セットを読み込みます。このデータ セットには、1970 年代と 1980 年代初期に製造された自動車の測定値が格納されています。Acceleration
、Displacement
などの予測子変数と応答変数 MPG
が格納された table を作成します。
load carbig cars = table(Acceleration,Displacement,Horsepower, ... Model_Year,Origin,Weight,MPG);
cars
から table に欠損値がある行を削除します。
cars = rmmissing(cars);
米国製かどうかに基づいて、自動車を分類します。
cars.Origin = categorical(cellstr(cars.Origin)); cars.Origin = mergecats(cars.Origin,["France","Japan",... "Germany","Sweden","Italy","England"],"NotUSA");
データを学習セットとテスト セットに分割します。観測値の約 80% をニューラル ネットワーク モデルの学習に使用し、観測値の約 20% を学習済みモデルの新しいデータでの性能のテストに使用します。cvpartition
を使用してデータを分割します。
rng("default") % For reproducibility of the data partition c = cvpartition(height(cars),"Holdout",0.20); trainingIdx = training(c); % Training set indices carsTrain = cars(trainingIdx,:); testIdx = test(c); % Test set indices carsTest = cars(testIdx,:);
学習データ carsTrain
を関数 fitrnet
に渡して、ニューラル ネットワーク回帰モデルに学習させます。より良い結果を得るために、予測子データを標準化するように指定します。
Mdl = fitrnet(carsTrain,"MPG","Standardize",true)
Mdl = RegressionNeuralNetwork PredictorNames: {'Acceleration' 'Displacement' 'Horsepower' 'Model_Year' 'Origin' 'Weight'} ResponseName: 'MPG' CategoricalPredictors: 5 ResponseTransform: 'none' NumObservations: 314 LayerSizes: 10 Activations: 'relu' OutputLayerActivation: 'none' Solver: 'LBFGS' ConvergenceInfo: [1x1 struct] TrainingHistory: [708x7 table]
Mdl
は学習させた RegressionNeuralNetwork
モデルです。ドット表記を使用して Mdl
のプロパティにアクセスできます。たとえば、Mdl.TrainingHistory
と指定すると、ニューラル ネットワーク モデルの学習履歴についての詳細情報を取得できます。
検定の平均二乗誤差 (MSE) を計算して、テスト セットで回帰モデルの性能を評価します。MSE の値が小さいほど、パフォーマンスが優れていることを示します。
testMSE = loss(Mdl,carsTest,"MPG")
testMSE = 7.1092
ニューラル ネットワーク回帰モデルのアーキテクチャの指定
全結合層のサイズなど、ニューラル ネットワーク回帰モデルの構造を指定します。
carbig
データ セットを読み込みます。このデータ セットには、1970 年代と 1980 年代初期に製造された自動車の測定値が格納されています。予測子変数 Acceleration
、Cylinders
などが含まれている行列 X
を作成します。応答変数 MPG
を変数 Y
に保存します。
load carbig
X = [Acceleration Cylinders Displacement Weight];
Y = MPG;
X
および Y
からいずれかの配列に欠損値がある行を削除します。
R = rmmissing([X Y]); X = R(:,1:end-1); Y = R(:,end);
データを学習データ (XTrain
および YTrain
) とテスト データ (XTest
および YTest
) に分割します。観測値の約 20% を検定用に予約し、残りの観測値を学習に使用します。
rng("default") % For reproducibility of the partition c = cvpartition(length(Y),"Holdout",0.20); trainingIdx = training(c); % Indices for the training set XTrain = X(trainingIdx,:); YTrain = Y(trainingIdx); testIdx = test(c); % Indices for the test set XTest = X(testIdx,:); YTest = Y(testIdx);
ニューラル ネットワーク回帰モデルに学習させます。予測子データを標準化するように指定し、最初の全結合層の出力数を 30、2 番目の全結合層の出力数を 10 に指定します。既定では、どちらの層でも正規化線形ユニット (ReLU) 活性化関数が使用されます。全結合層の活性化関数は、名前と値の引数 Activations
を使用して変更できます。
Mdl = fitrnet(XTrain,YTrain,"Standardize",true, ... "LayerSizes",[30 10])
Mdl = RegressionNeuralNetwork ResponseName: 'Y' CategoricalPredictors: [] ResponseTransform: 'none' NumObservations: 319 LayerSizes: [30 10] Activations: 'relu' OutputLayerActivation: 'none' Solver: 'LBFGS' ConvergenceInfo: [1x1 struct] TrainingHistory: [1000x7 table]
Mdl
の LayerWeights
プロパティと LayerBiases
プロパティを使用して、学習させたモデルの全結合層の重みとバイアスにアクセスします。各プロパティの最初の 2 つの要素が最初の 2 つの全結合層の値に対応し、3 番目の要素が回帰用の最終全結合層の値に対応します。たとえば、最初の全結合層の重みとバイアスを表示します。
Mdl.LayerWeights{1}
ans = 30×4
0.0123 0.0117 -0.0094 0.1175
-0.4081 -0.7849 -0.7201 -2.1720
0.6041 0.1680 -2.3952 0.0934
-3.2332 -2.8360 -1.8264 -1.5723
0.5851 1.5370 1.4623 0.6742
-0.2106 1.2830 -1.7489 -1.5556
0.4800 0.1012 -1.0044 -0.7959
1.8015 -0.5272 -0.7670 0.7496
-1.1428 -0.9902 0.2436 1.2288
-0.0833 -2.4265 0.8388 1.8597
⋮
Mdl.LayerBiases{1}
ans = 30×1
-0.4450
-0.8751
-0.3872
-1.1345
0.4499
-2.1555
2.2111
1.2040
-1.4595
0.4639
⋮
最終全結合層の出力は 1 つです。層の出力の数は、層の重みと層のバイアスの最初の次元に対応します。
size(Mdl.LayerWeights{end})
ans = 1×2
1 10
size(Mdl.LayerBiases{end})
ans = 1×2
1 1
学習させたモデルの性能を推定するには、Mdl
のテスト セットの平均二乗誤差 (MSE) を計算します。MSE の値が小さいほど、パフォーマンスが優れていることを示します。
testMSE = loss(Mdl,XTest,YTest)
testMSE = 18.3681
テスト セットの予測応答値と実際の応答値を比較します。予測されるガロンあたりの走行マイル数 (MPG) を縦軸に、実際の MPG を横軸にしてプロットします。基準線上にある点は予測が正しいことを示します。優れたモデルでは、生成された予測が線の近くに分布します。
testPredictions = predict(Mdl,XTest); plot(YTest,testPredictions,".") hold on plot(YTest,YTest) hold off xlabel("True MPG") ylabel("Predicted MPG")
拡張機能
バージョン履歴
R2021a で導入R2023b: 予測子に欠損値がある観測値をモデルに格納
R2023b 以降では、予測子に欠損値がある学習観測値が X
、Y
、および W
のデータ プロパティに含まれます。RowsUsed
プロパティは、学習に使用された観測値ではなく、モデルに格納されている学習観測値を示します。予測子に欠損値がある観測値は、モデルの学習プロセスでは引き続き省略されます。
以前のリリースでは、予測子に欠損値がある学習観測値はモデルのデータ プロパティで省略されていました。
R2023b: ニューラル ネットワーク モデルに含まれる標準化プロパティ
ニューラル ネットワーク モデルに含まれる Mu
プロパティと Sigma
プロパティに、学習前の予測子の標準化に使用される平均と標準偏差がそれぞれ格納されます。これらのプロパティは、近似関数で標準化が一切実行されない場合は空になります。
MATLAB コマンド
次の MATLAB コマンドに対応するリンクがクリックされました。
コマンドを MATLAB コマンド ウィンドウに入力して実行してください。Web ブラウザーは MATLAB コマンドをサポートしていません。
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- 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)