メインコンテンツ

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

予測子データ。np 列の数値行列を指定します。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 である場合、Bpm 列の行列になります。mk の要素数です。scaled0 である場合、B は (p+1) 行 m 列の行列になります。

詳細

すべて折りたたむ

ヒント

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