ドキュメンテーション

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

ridge

構文

b = ridge(y,X,k)
b = ridge(y,X,k,scaled)

説明

b = ridge(y,X,k) は、X 内の予測子に対する y 内の応答の多重線形リッジ回帰について、係数推定のベクトル b を返します。Xnp 列の行列であり、n 個の観測値のそれぞれに対して p 個の予測子があります。y は、観測された応答が格納されている n 行 1 列のベクトルです。k はリッジ パラメーターのベクトルです。km 要素をもつ場合、bp x m です。既定の設定では、平均が 0、標準偏差が 1 になるように予測子をセンタリングおよびスケーリングした後で b が計算されます。このモデルには定数項が含まれていないので、X には 1 で構成される列を含めてはいけません。

b = ridge(y,X,k,scaled) は、{0,1} という値のフラグ scaled を使用して、b 内の係数推定が元のデータのスケールに復元されるかどうかを判断します。ridge(y,X,k,0) はこの追加変換を実行します。この場合、b は、モデルの定数項に対応する最初の行をもつ k の各値の p+1 係数を含みます。ridge(y,X,k,1)ridge(y,X,k) と同じです。この場合、b は、定数項の係数なしの p 係数を含みます。

b0 = ridge(y,X,k,0)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]

これは、多重線形モデル y = b00 + b10x1 + ... + bn0xn の xi (i = 1、...、n) を z スコア zi = (xi - μi)/σi に置き換え、y を y - μy に置き換えることによりわかります。

一般的に、b1 は、係数が同じスケールに表示されるプロットを作成する場合の方が便利です。その例としては、ridge trace (リッジ パラメーター関数としての回帰係数のプロット) があります。b0 は、予測するのにより役立ちます。

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

β^=(XTX)1XTy

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

リッジ回帰は、以下を使って回帰係数を推定することによって問題に対応します。

β^=(XTX+kI)1XTy

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

すべて折りたたむ

標本データを読み込みます。

load acetylene

acetylene には、予測子変数 x1x2x3 および応答変数 y の観測値があります。

予測子変数を他の予測子変数に対してプロットします。

subplot(1,3,1)
plot(x1,x2,'.')
xlabel('x1'); ylabel('x2'); grid on; axis square

subplot(1,3,2)
plot(x1,x3,'.')
xlabel('x1'); ylabel('x3'); grid on; axis square

subplot(1,3,3)
plot(x2,x3,'.')
xlabel('x2'); ylabel('x3'); grid on; axis square

x1 と他の 2 つの予測子変数の相関に注意します。

ridgex2fx を使用して、リッジ パラメーターの範囲に対して、交互作用項をもつ多重線形モデルに対する係数の推定を計算します。

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('{\bf Ridge Trace}')
legend('x1','x2','x3','x1x2','x1x3','x2x3')

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

参照

[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 より前に導入