主要内容

このページ最新ではありませ。をクリックし,英语のの最新版版を参照参照し。

predict

クラス:RegressionLinear

线形回帰モデル応答予测

説明

是的=预测(Mdl,X)は,済みの线形モデルモデルMdlに基づいてデータX内の各観測値に対する予測応答を返します。是的には,Mdl内の则化强度応答が格纳れ。。。

是的=预测(Mdl,X,“观察”,方面)は,データ観测値の次元,,'rows'(既定)または'columns'のいずれで指定ます。たとえば,“观察”,“列”と指定して、予測子データの列が観測値に対応することを示します。

入力引数

すべて展开する

线形回帰モデル。RegressionLinearモデルオブジェクト指定します。RegressionLinearモデル オブジェクトは、fitrlinearを使用て作成でき。。

応答のに使用する。。非スパースまたはスパースの数値行列またはテーブルとして指定します。

既定では、Xの各行は 1 つの観測値に対応し、各列は 1 つの変数に対応します。

  • 数値行列の場合

    • Xの列に含まれている変数の順序は、Mdlに学習させた予測子変数の順序と同じでなければなりません。

    • テーブル (たとえばTBL)を使用してMdlに学習をさせる場合、TBLに含まれている予測子変数が数値のみであれば、Xを数値にことができます。学习ににTBL内の数値予測子をカテゴリカルとして扱うには、fitrlinearの名前値のペア引数引数分类预期を使用してカテゴリカル予測子を指定します。TBLに种类なる予测子(分类データ型)がが,,,Xが数値行列である場合、predictでエラースローされ。。

  • テーブルの场合

    • predict细胞配列配列配列ではないではない配列配列配列列変数変数サポートしません。。。

    • テーブル (たとえばTBL)を使用してMdlに学習をさせた場合,X内のすべての予測子変数は変数名およびデータ型が、Mdlに学習させた (Mdl.PredictorNamesに格納されている) 変数と同じでなければなりません。ただし、Xの列の順序がTBLの列の順序に対応する必要はありません。また、TBLXに追加(応答応答や値重み)ををことができますががpredictはこれらを無視します。

    • 数値行列を使用してMdlに学習をさせる場合、Mdl.PredictorNames内の予测とX内の対応する予測子変数名が同じでなければなりません。学習時に予測子の名前を指定するには、fitrlinearの名前値のペア引数引数预测器を使用し。X内の子は数値ベクトルでなけれなりません。Xに追加(応答応答や値重み)ををことができますががpredictはこれらを無視します。

メモ

観测値列対応ように予测子を配置して“观察”,“列”を指定,适化実行时间大幅にされる可能性性がありますます。。。。。“观察”,“列”を指定ことはでき。。

データ::双倍的|single|table

予测子データ観测値の。。'columns'または'rows'として指定し。

メモ

観测値列対応ように予测子を配置して“观察”,“列”を指定,适化実行时间大幅にされる可能性性がありますます。。。。。“观察”,“列”を指定ことはでき。。

出力引数

すべて展开する

予測応答。n 行 L 列の数値行列として返されます。n はX内の観測値数、L はMdl.Lambda内の正則化強度の数です。是的(i,j)は,正强度がMdl.Lambda(j)である線形回帰モデルを使用した、観測値iの応答です。

正がががモデルを使用て予测れたははです。 y ^ j = x β j + b j .

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

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

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

すべて展开する

10000个个の観测値をシミュレートし。。。。。

y = x 1 0 0 + 2 x 2 0 0 + e .

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

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

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

线形回帰モデルに学習をさせます。観測値の 30% をホールドアウト標本として予約します。

cvmdl = fitrlinear(x,y,'坚持',0.3); Mdl = CVMdl.Trained{1}
Mdl = RegressionLinear ResponseName: 'Y' ResponseTransform: 'none' Beta: [1000x1 double] Bias: -0.0066 Lambda: 1.4286e-04 Learner: 'svm' Properties, Methods

CVMDLRegressionPartitionedLinearモデルです。これには训练有素プロパティが含まれています。これは 1 行 1 列の cell 配列で、学習セットにより学習させたRegressionLinearモデルが格納されています。

学習データと検定データを分割の定義から抽出します。

trainIdx = training(CVMdl.Partition); testIdx = test(CVMdl.Partition);

学習標本および検定標本の応答を予測します。

yhattrain=预测(Mdl,X(trainIdx,:)); yHatTest = predict(Mdl,X(testIdx,:));

Mdl内の化强度ははつなつなつな,yhattrainyHatTestは数値ベクトルになります。

LASSO ペナルティと最小二乗を使用する最適な線形回帰モデルから応答を予測します。

検定标本のの予测で说明れいるようにににに个个値をシミュレートし。。

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

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

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

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

x = x';cvmdl = fitrlinear(x,y,“观察”,'columns','kfold',5,'Lambda',Lambda,...'Learner','leastsquares','Solver','sparsa','Regularization','lasso');numclmodels = numel(cvmdl.Trading)
numClmodels = 5

CVMDLRegressionPartitionedLinearモデルです。fitrlinear5分割分割検证実装するので,分割について学习ささせるせるせるののののRegressionLinearモデルがCVMDLに格納されます。

1 番目の学習済み線形回帰モデルを表示します。

Mdl1 = CVMdl.Trained{1}
Mdl1 = RegressionLinear ResponseName: 'Y' ResponseTransform: 'none' Beta: [1000x15 double] Bias: [-0.0049 -0.0049 -0.0049 -0.0049 -0.0049 -0.0048 ... ] Lambda: [1.0000e-05 1.9307e-05 3.7276e-05 7.1969e-05 ... ] Learner: 'leastsquares' Properties, Methods

Mdl1RegressionLinearモデル オブジェクトです。fitrlinearは最初の 4 つの分割に対して学習を行うことによりMdl1を构筑した。Lambdaは正则强度のシーケンス,,Mdl1はそれぞれがLambdaの各正則化強度に対応する 11 個のモデルであると考えることができます。

交差検証された MSE を推定します。

mse = kfoldLoss(CVMdl);

Lambdaの値が大きくなると、予測子変数がスパースになります。これは回帰モデルの品質として優れています。データセット全体を使用し、モデルの交差検証を行ったときと同じオプションを指定して、各正則化強度について線形回帰モデルに学習をさせます。モデルごとに非ゼロの係数を特定します。

mdl = fitrlinear(x,y,“观察”,'columns','Lambda',Lambda,...'Learner','leastsquares','Solver','sparsa','Regularization','lasso');numnzcoeff = sum(mdl.beta〜 = 0);

同じ図各则化强度についてのの検证れたたたたととととゼロゼロ系数ののの频度をプロットしますますます。。。すべて

figure; [h,hL1,hL2] = plotyy(log10(Lambda),log10(mse),...log10(lambda),log10(numnzcoeff));hl1.marker ='o'; hL2.Marker ='o'; ylabel(h(1),'log_{10} MSE') ylabel(h(2),'log_ {10}非零频率频率') xlabel('log_{10} Lambda') holdoff

图包含2个轴对象。轴对象1包含类型行的对象。轴对象2包含类型行的对象。

MSEのののの低さのバランスとれている正则化(Lambda(10)など)のの选択し。。

idxfinal = 10;

MSEにに対応モデルを抽出ます。。。

mdlfinal = selectModels(mdl,idxfinal)
mdlfinal =回归线响应名称:'y'ponsponseTransform:'none''beta:[1000x1 double]偏差:-0.0050 lambda:0.0037 Learner:'leastsquares'属性,方法,方法
idxNZCoeff = find(MdlFinal.Beta~=0)
idxNZCoeff =2×1100 200
ESTCOEFF= Mdl.Beta(idxNZCoeff)
ESTCOEFF=2×11.0051 1.9965

MdlFinalは1つの正則化強度があるRegressionLinearモデルです。非ゼロ係数ESTCOEFFは,をし系数に近くています。

10 個の新しい観測値をシミュレートし、最適なモデルを使用して対応する応答を予測します。

XNew = sprandn(d,10,nz); YHat = predict(MdlFinal,XNew,“观察”,'columns');

拡张机能

バージョン履歴

R2016Aで导入