ドキュメンテーション

最新のリリースでは、このページがまだ翻訳されていません。 このページの最新版は英語でご覧になれます。

kfoldPredict

学習で使用しない観測の予測応答

説明

YHat = kfoldPredict(CVMdl) は、交差検証済みの線形回帰モデル CVMdl による交差検証予測応答を返します。つまり、他のすべての観測値を使用して学習を行うときにホールドアウトする観測値の応答を、kfoldPredict はすべての分割について予測します。

YHat には、CVMdl を構成する線形回帰モデルの各正則化強度に対する予測応答が格納されます。

入力引数

すべて展開する

交差検証済みの線形回帰モデル。RegressionPartitionedLinear モデル オブジェクトを指定します。RegressionPartitionedLinear モデルを作成するには、fitrlinear を使用し、交差検証用の名前と値のペアの引数のいずれか 1 つ (CrossVal など) を指定します。

推定値を取得するため、kfoldPredict は線形回帰モデルの交差検証に使用したものと同じデータ (X および Y) を適用します。

出力引数

すべて展開する

交差検証予測応答。n 行 L 列の数値配列として返されます。n は CVMdl を作成した予測子データ (X を参照) 内の観測値数、L は CVMdl.Trained{1}.Lambda 内の正則化強度の数です。YHat(i,j) は、正則化強度が CVMdl.Trained{1}.Lambda(j) である線形回帰モデルを使用して予測された観測値 i の応答です。

正則化強度が j であるモデルを使用して予測された応答は以下です。y^j=xβj+bj.

  • x は予測子データ行列 X の観測値であり、行列ベクトルです。

  • βj は推定された係数の列ベクトルです。このベクトルは Mdl.Beta(:,j) に格納されます。

  • bj は推定されたスカラー バイアスであり、Mdl.Bias(j) に格納されます。

すべて展開する

次のモデルにより、10000 個の観測値をシミュレートします。

y=x100+2x200+e.

  • X=x1,...,x1000 は、10% の要素が非ゼロ標準正規である 10000 行 1000 列のスパース行列です。

  • e は、平均が 0、標準偏差が 0.3 のランダムな正規誤差です。

rng(1) % For reproducibility
n = 1e4;
d = 1e3;
nz = 0.1;
X = sprandn(n,d,nz);
Y = X(:,100) + 2*X(:,200) + 0.3*randn(n,1);

線形回帰モデルを交差検証します。

CVMdl = fitrlinear(X,Y,'CrossVal','on')
CVMdl = 
  classreg.learning.partition.RegressionPartitionedLinear
    CrossValidatedModel: 'Linear'
           ResponseName: 'Y'
        NumObservations: 10000
                  KFold: 10
              Partition: [1x1 cvpartition]
      ResponseTransform: 'none'


  Properties, Methods

Mdl1 = CVMdl.Trained{1}
Mdl1 = 
  RegressionLinear
         ResponseName: 'Y'
    ResponseTransform: 'none'
                 Beta: [1000x1 double]
                 Bias: 0.0107
               Lambda: 1.1111e-04
              Learner: 'svm'


  Properties, Methods

既定の設定では、fitrlinear は 10 分割の交差検証を実装します。CVMdlRegressionPartitionedLinear モデルです。このモデルに含まれている Trained プロパティは、学習セットを使用して学習を行った 10 個の RegressionLinear モデルが格納されている 10 行 1 列の cell 配列です。

fitrlinear で分割の学習で使用しなかった観測値の応答を予測します。

yHat = kfoldPredict(CVMdl);

Mdl 内の正則化強度は 1 つなので、yHat は数値ベクトルになります。

交差検証応答の予測 で説明されているように 10000 個の観測値をシミュレートします。

rng(1) % For reproducibility
n = 1e4;
d = 1e3;
nz = 0.1;
X = sprandn(n,d,nz);
Y = X(:,100) + 2*X(:,200) + 0.3*randn(n,1);

10-510-1 の範囲で対数間隔で配置された 15 個の正則化強度を作成します。

Lambda = logspace(-5,-1,15);

モデルを交差検証します。実行速度を向上させるため、予測子データを転置し、観測値が列単位であることを指定します。LASSO ペナルティがある最小二乗の使用と、SpaRSA による目的関数の最適化を指定します。

X = X'; 
CVMdl = fitrlinear(X,Y,'ObservationsIn','columns','KFold',5,'Lambda',Lambda,...
    'Learner','leastsquares','Solver','sparsa','Regularization','lasso');

CVMdlRegressionPartitionedLinear モデルです。このモデルに含まれている Trained プロパティは、それぞれが異なる分割を学習時にホールドアウトした、学習済みの RegressionLinear モデルが格納されている 5 行 1 列の cell 配列です。fitrlinear は 15 個の正則化強度を使用して学習を行ったので、各 RegressionLinear モデルは 15 個のモデルであると考えることができます。

交差検証応答を予測します。

YHat = kfoldPredict(CVMdl);
size(YHat)
ans = 1×2

       10000          15

YHat(2,:)
ans = 1×15

   -1.7338   -1.7332   -1.7319   -1.7299   -1.7266   -1.7239   -1.7135   -1.7210   -1.7324   -1.7063   -1.6397   -1.5112   -1.2631   -0.7841   -0.0096

YHat は 10000 行 15 列の行列です。YHat(2,:) は、15 個の正則化値すべてにより正則化されたモデルを使用した、観測値 2 の交差検証応答です。

R2016a で導入