ドキュメンテーション

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

RegressionLinear クラス

高次元データ用の線形回帰モデル

説明

RegressionLinear は、回帰用の学習済み線形モデル オブジェクトです。線形モデルは、サポート ベクター マシン回帰 (SVM) または線形回帰モデルです。fitrlinear は、高次元データセットの計算時間を短縮する手法 (確率的勾配降下法など) を使用して目的関数を最小化することにより RegressionLinear モデルをあてはめます。回帰損失と正則化項を加算することにより目的関数が構成されます。

他の回帰モデルとは異なり、また、メモリ消費を節約するため、RegressionLinear モデル オブジェクトには学習データが格納されません。ただし、推定した線形モデル係数、推定した係数、正則化強度などは格納されます。

学習済みの RegressionLinear モデルを使用して、新しいデータに対する応答を予測できます。詳細については、predict を参照してください。

構築

RegressionLinear オブジェクトの作成には fitrlinear を使用します。

プロパティ

すべて展開する

線形回帰のプロパティ

イプシロン不感応区間の幅の半分。非負のスカラーを指定します。

Learner'svm' ではない場合、Epsilon は空の文字列 ([]) です。

データ型: single | double

正則化項の強度。非負のスカラーまたは非負値のベクトルを指定します。

データ型: double | single

線形回帰モデルのタイプ。'leastsquares' または 'svm' を指定します。

次の表では、f(x)=xβ+b. です。

  • β は p 個の係数のベクトルです。

  • x は p 個の予測子変数による観測値です。

  • b はスカラー バイアスです。

アルゴリズム損失関数FittedLoss の値
'leastsquares'通常の最小二乗による線形回帰平均二乗誤差 (MSE): [y,f(x)]=12[yf(x)]2'mse'
'svm'サポート ベクター マシン回帰イプシロン不感応: [y,f(x)]=max[0,|yf(x)|ε]'epsiloninsensitive'

線形係数の推定値。長さが予測子数に等しい数値ベクトルを指定します。

データ型: double

推定バイアス項またはモデルの切片。数値スカラーを指定します。

データ型: double

線形モデルのあてはめに使用する損失関数。'epsiloninsensitive' または 'mse' を指定します。

アルゴリズム損失関数Learner の値
'epsiloninsensitive'サポート ベクター マシン回帰イプシロン不感応: [y,f(x)]=max[0,|yf(x)|ε]'svm'
'mse'通常の最小二乗による線形回帰平均二乗誤差 (MSE): [y,f(x)]=12[yf(x)]2'leastsquares'

複雑度ペナルティのタイプ。'lasso (L1)' または 'ridge (L2)' を指定します。

最小化のための目的関数は、平均損失関数 (FittedLoss を参照) と次の表の正則化値を加算することにより作成されます。

説明
'lasso (L1)'LASSO (L1) ペナルティ: λj=1p|βj|
'ridge (L2)'リッジ (L2) ペナルティ: λ2j=1pβj2

λ は、正則化項の強度を規定します (Lambda を参照)。

バイアス項 (β0) は正則化ペナルティから除外されます。

他の回帰のプロパティ

RegressionLinear モデルに学習をさせるために使用したパラメーター。構造体を指定します。

ModelParameters のフィールドにはドット表記でアクセスします。たとえば、線形係数およびバイアス項の相対許容誤差にアクセスするには Mdl.ModelParameters.BetaTolerance を使用します。

データ型: 構造体

予測子データ X に現れる順序で並んでいる予測子名。文字ベクトルの cell 配列を指定します。PredictorNames の長さは、X の列数と同じです。

データ型: cell

展開された予測子名。文字ベクトルの cell 配列を指定します。

RegressionLinear モデルはカテゴリカル予測子をサポートしないので、ExpandedPredictorNamesPredictorNames は等しくなります。

データ型: cell

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

データ型: char

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

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

データ型: char | function_handle

メソッド

loss線形回帰モデルの回帰損失
predict線形回帰モデルの応答予測
selectModels近似済み正則化線形回帰モデルの選択

コピーのセマンティクス

値。値のクラスがコピー操作に与える影響については、オブジェクトのコピー (MATLAB)を参照してください。

すべて折りたたむ

SVM、双対 SGD およびリッジ正則化を使用して線形回帰モデルに学習をさせます。

次のモデルにより、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);

線形回帰モデルに学習をさせます。既定の設定では、fitrlinear はリッジ ペナルティがあるサポート ベクター マシンを使用し、SVM 用の双対 SGD を使用して最適化を行います。近似の要約を抽出して、最適化アルゴリズムによるモデルがどの程度データにあてはまるかを判断します。

[Mdl,FitInfo] = fitrlinear(X,Y)
Mdl = 
  RegressionLinear
         ResponseName: 'Y'
    ResponseTransform: 'none'
                 Beta: [1000x1 double]
                 Bias: -0.0056
               Lambda: 1.0000e-04
              Learner: 'svm'


  Properties, Methods

FitInfo = struct with fields:
                    Lambda: 1.0000e-04
                 Objective: 0.2725
                 PassLimit: 10
                 NumPasses: 10
                BatchLimit: []
             NumIterations: 100000
              GradientNorm: NaN
         GradientTolerance: 0
      RelativeChangeInBeta: 0.4907
             BetaTolerance: 1.0000e-04
             DeltaGradient: 1.5816
    DeltaGradientTolerance: 0.1000
           TerminationCode: 0
         TerminationStatus: {'Iteration limit exceeded.'}
                     Alpha: [10000x1 double]
                   History: []
                   FitTime: 0.0924
                    Solver: {'dual'}

MdlRegressionLinear モデルです。Mdl と学習データまたは新しいデータを loss に渡して、標本内二乗平均誤差を調べることができます。または、Mdl と新しい予測子データを predict に渡して、新しい観測値の応答を予測することができます。

FitInfo は、重要な情報として終了ステータス (TerminationStatus) とソルバーによるモデルのデータへのあてはめにかかった時間 (FitTime) が含まれている構造体配列です。FitInfo を使用して、最適化終了時の結果が満足できるものであるかどうかを判断することをお勧めします。この場合、fitrlinear は最大反復回数に達しました。モデルに再学習をさせることもできますが、学習時間は短いので、データを通す回数を増やしてください。または、LBFGS など別のソルバーを試してください。

次のモデルにより、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);

5% のデータをホールドアウトします。

rng(1); % For reproducibility
cvp = cvpartition(n,'Holdout',0.05)
cvp = 
Hold-out cross validation partition
   NumObservations: 10000
       NumTestSets: 1
         TrainSize: 9500
          TestSize: 500

cvp は、n 個のデータを学習セットと検定セットに無作為に分割する方法を定義する CVPartition オブジェクトです。

学習セットを使用して線形回帰モデルに学習をさせます。学習時間を短縮するため、観測値が列単位になるように予測子データの行列を配置します。

idxTrain = training(cvp); % Extract training set indices
X = X';
Mdl = fitrlinear(X(:,idxTrain),Y(idxTrain),'ObservationsIn','columns');

ホールドアウト標本の観測値と二乗平均誤差 (MSE) を予測します。

idxTest = test(cvp); % Extract test set indices
yHat = predict(Mdl,X(:,idxTest),'ObservationsIn','columns');
L = loss(Mdl,X(:,idxTest),Y(idxTest),'ObservationsIn','columns')
L = 0.1851

ホールドアウト標本の MSE は 0.1852 です。

拡張機能

R2016a で導入