Main Content

ridge

説明

B = ridge(y,X,k) は、予測子データ X および応答 y によるリッジ回帰モデルの係数推定値を返します。B の各列は、特定のリッジ パラメーター k に対応します。既定では、平均が 0、標準偏差が 1 になるように予測子をセンタリングおよびスケーリングした後で B が計算されます。モデルには定数項が含まれないので、X に 1 の列を追加しないでください。

B = ridge(y,X,k,scaled) は、B 内の係数推定値のスケーリングを指定します。scaled1 (既定) である場合、ridge は係数を元のデータ スケールに戻しません。scaled0 である場合、ridge は係数を元のデータのスケールに戻します。詳細は、係数のスケーリングを参照してください。

すべて折りたたむ

一連のリッジ パラメーターについてリッジ回帰を実行し、係数推定値の変化を観察します。

acetylene データ セットを読み込みます。

load acetylene

acetylene には、予測子変数 x1x2x3 および応答変数 y の観測値が含まれています。

予測子変数を他の予測子変数に対してプロットします。変数間の相関を確認します。

plotmatrix([x1 x2 x3])

MATLAB figure

たとえば、x1x3 の間に線形相関があります。

一連のリッジ パラメーターに対して、交互作用項をもつ多重線形モデルの係数推定値を計算します。x2fx を使用して交互作用項を作成し、ridge を使用してリッジ回帰を実行します。

X = [x1 x2 x3];
D = x2fx(X,'interaction');
D(:,1) = []; % No constant term
k = 0:1e-5:5e-3;
B = ridge(y,D,k);

リッジのトレースをプロットします。

figure
plot(k,B,'LineWidth',2)
ylim([-100 100])
grid on 
xlabel('Ridge Parameter') 
ylabel('Standardized Coefficient') 
title('Ridge Trace') 
legend('x1','x2','x3','x1x2','x1x3','x2x3')

Figure contains an axes object. The axes object with title Ridge Trace, xlabel Ridge Parameter, ylabel Standardized Coefficient contains 6 objects of type line. These objects represent x1, x2, x3, x1x2, x1x3, x2x3.

この推定は、プロットの右において一定になります。リッジ パラメーターの値が 5*10-4 になると交互作用項 x2x3 の係数の符号が変わることに注意してください。

リッジ回帰を使用して、ガロンあたりの走行マイル数 (MPG) の値を予測します。

carbig データ セットを読み込みます。

load carbig
X = [Acceleration Weight Displacement Horsepower];
y = MPG;

データを学習セットとテスト セットに分割します。

n = length(y);
rng('default') % For reproducibility
c = cvpartition(n,'HoldOut',0.3);
idxTrain = training(c,1);
idxTest = ~idxTrain;

(k = 5 の) リッジ回帰モデルの係数を求めます。

k = 5;
b = ridge(y(idxTrain),X(idxTrain,:),k,0);

このモデルを使用して、テスト データに対する MPG の値を予測します。

yhat = b(1) + X(idxTest,:)*b(2:end);

基準線を使用して、予測された値を実際のガロンあたりの走行マイル数 (MPG) の値と比較します。

scatter(y(idxTest),yhat)
hold on
plot(y(idxTest),y(idxTest))
xlabel('Actual MPG')
ylabel('Predicted MPG')
hold off

Figure contains an axes object. The axes object with xlabel Actual MPG, ylabel Predicted MPG contains 2 objects of type scatter, line.

入力引数

すべて折りたたむ

応答データ。n 行 1 列の数値ベクトルを指定します。n は観測値の個数です。

データ型: single | double

予測子データ。n 行 p 列の数値行列を指定します。X の行は n 個の観測値に、X の列は p 個の予測子に対応します。

データ型: single | double

リッジ パラメーター。数値ベクトルを指定します。

例: [0.2 0.3 0.4 0.5]

データ型: single | double

B 内の係数推定値を元のデータのスケールに戻すかどうかを決定する、スケーリングのフラグ。0 または 1 を指定します。scaled0 である場合、ridge はこの追加変換を実行します。この場合、k の各値について p+1 個の係数が B に格納されます。B の 1 行目はモデルの定数項に対応します。scaled1 である場合、追加変換は省略され、定数項の係数を除く p 個の係数が B に格納されます。

出力引数

すべて折りたたむ

係数推定値。数値行列として返されます。B の行は X 内の予測子に、B の列はリッジ パラメーター k に対応します。

scaled1 である場合、B は p 行 m 列の行列になります。m は k の要素数です。scaled0 である場合、B は (p+1) 行 m 列の行列になります。

詳細

すべて折りたたむ

リッジ回帰

リッジ回帰は、線形相関がある予測子が含まれている線形モデルの係数を推定するための手法です。

多重線形回帰モデルの係数推定は、モデルの項の独立性に依存します。項が相関しており、計画行列 X の列が線形に近い依存関係をもつ場合、行列 (XTX)–1 は特異行列に近づきます。したがって、最小二乗推定

β^=(XTX)1XTy

は、観測された応答 y の確率的誤差の影響を大きく受け、分散が大きくなります。このような状況は多重共線性と呼ばれ、実験計画を立てずにデータを収集した場合などに発生します。

リッジ回帰は、次の式を使用して回帰係数を推定することにより、多重共線性の問題に対処します。

β^=(XTX+kI)1XTy

ここで、k はリッジ パラメーター、I は単位行列です。k を小さい正の値にすると、問題の調整が改善され、推定の分散が小さくなります。偏りはありますが、リッジ推定の分散が小さくなると、多くの場合に最小二乗推定より平均二乗誤差が小さくなります。

リッジ正則化

指定の λ 値 (非負のパラメーター) の場合、ridge は次の問題を解決します。

minβ0,β(i=1N(yiβ0xiTβ)2+λj=1pβj2),

ここで、

  • N は、観測数です。

  • yi は、観測値 i の応答データです。

  • xi はデータ (観測値 i における長さ p のベクトル) です。

  • λ は Lambda の 1 つの値に対応する非負の正則化パラメーターです。

  • パラメーター β0 はスカラーで、パラメーター β は長さ p のベクトルです。

LASSO の問題は、Elastic Netの L2 正則化要素を表します。

係数のスケーリング

リッジ回帰モデルの係数推定値のスケーリングは、入力引数 scaled の値によって変化します。

リッジ パラメーター k が 0 に等しいと仮定します。scaled1 に等しい場合に ridge が返す係数は、次の多重線形モデルにおける bi1 の推定値です。

y – μy = b11z1 + ... + bp1zp + ε

ここで、zi = (xi – μi)/σi はセンタリングおよびスケーリングされた予測子、y – μy はセンタリングされた応答、ε は誤差項です。このモデルは、次のように書き直すことができます。

y = b00 + b10x1 + ... + bp0xp + ε

ここで、b00=μyi=1pbi1μiσi および bi0=bi1σi です。bi0 の項は、scaled0 に等しい場合に ridge が返す係数に対応します。

より一般的には、任意の値の k に対して、B1 = ridge(y,X,k,1) である場合、次のようになります。

       m = mean(X);
       s = std(X,0,1)';
       B1_scaled = B1./s;
       B0 = [mean(y)-m*B1_scaled; B1_scaled]

ここで、B0 = ridge(y,X,k,0) です。

ヒント

  • ridge は、X または y 内の NaN 値を欠損値として扱います。ridge は、欠損値がある観測値をリッジ回帰近似から省略します。

  • 通常は、scaled1 に設定して、係数が同じスケールで表示されるプロットを生成します。リッジ トレース プロットの使用例については、リッジ回帰を参照してください。この例では、回帰係数をリッジ パラメーターの関数として表示しています。予測を行う場合は、scaled0 に設定します。たとえば、リッジ回帰の使用による値の予測を参照してください。

代替機能

  • リッジ、LASSO、および Elastic Net 正則化はすべて、大きい係数にペナルティを課して線形モデルの係数を推定する手法です。ペナルティのタイプは、手法によって異なります (詳細については詳細を参照)。LASSO または Elastic Net 正則化を実行するには、代わりに lasso を使用します。

  • 高次元の非スパースまたはスパース予測子データの場合、ridge の代わりに fitrlinear を使用できます。fitrlinear を使用する場合は、名前と値のペアの引数 'Regularization','ridge' を指定します。名前と値のペアの引数 'Lambda' の値を任意のリッジ パラメーターのベクトルに設定します。fitrlinear は、学習済みの線形モデル Mdl を返します。Mdl.Beta を使用して、モデルの Beta プロパティに格納されている係数推定値にアクセスできます。

参照

[1] Hoerl, A. E., and R. W. Kennard. “Ridge Regression: Biased Estimation for Nonorthogonal Problems.” Technometrics. Vol. 12, No. 1, 1970, pp. 55–67.

[2] Hoerl, A. E., and R. W. Kennard. “Ridge Regression: Applications to Nonorthogonal Problems.” Technometrics. Vol. 12, No. 1, 1970, pp. 69–82.

[3] Marquardt, D. W. “Generalized Inverses, Ridge Regression, Biased Linear Estimation, and Nonlinear Estimation.” Technometrics. Vol. 12, No. 3, 1970, pp. 591–612.

[4] Marquardt, D. W., and R. D. Snee. “Ridge Regression in Practice.” The American Statistician. Vol. 29, No. 1, 1975, pp. 3–20.

バージョン履歴

R2006a より前に導入