Main Content

このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。

kfoldPredict

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

説明

YHat = kfoldPredict(CVMdl) は、交差検証済みの線形回帰モデル CVMdl による交差検証予測応答を返します。kfoldPredict は、すべての分割について、学習分割観測値に対して学習させたモデルを使用して、検証分割観測値の応答を予測します。

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

YHat = kfoldPredict(CVMdl,PredictionForMissingValue=prediction) は、予測子データに欠損値がある観測値について予測した応答として prediction の値を使用します。既定では、kfoldPredict は学習分割データ内の観測された応答値の中央値を使用します。 (R2023b 以降)

入力引数

すべて展開する

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

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

R2023b 以降

予測子に欠損値がある観測値に使用する予測した応答値。"median""mean"、または数値スカラーとして指定します。

説明
"median"kfoldPredict は、予測子に欠損値がある観測値について予測した応答値として、学習分割データ内の観測された応答値の中央値を使用します。
"mean"kfoldPredict は、予測子に欠損値がある観測値について予測した応答値として、学習分割データ内の観測された応答値の平均値を使用します。
数値スカラーkfoldPredict は、予測子に欠損値がある観測値について予測した応答値として、この値を使用します。

例: "mean"

例: NaN

データ型: single | double | char | string

出力引数

すべて展開する

交差検証予測応答。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 = 
  RegressionPartitionedLinear
    CrossValidatedModel: 'Linear'
           ResponseName: 'Y'
        NumObservations: 10000
                  KFold: 10
              Partition: [1x1 cvpartition]
      ResponseTransform: 'none'


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


既定の設定では、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 で導入

すべて展開する