メインコンテンツ

lassoPlot

LASSO 近似のトレース プロット

説明

lassoPlot(B) は、BL1 ノルムに対して、B の値のトレース プロットを作成します。

lassoPlot(B,FitInfo) は、FitInfo のデータ型 (および名前と値の引数 PlotType がある場合はその値) に応じたタイプのプロットを作成します。

lassoPlot(B,FitInfo,Name=Value) は、1 つ以上の名前と値の引数で指定された追加オプションを使用してプロットを作成します。

[ax,figh] = lassoPlot(___) は、前のいずれかの入力構文について、LASSO 近似のプロットを含む座標軸 ax と Figure ウィンドウ figh を返します。

すべて折りたたむ

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

load acetylene

交互作用のある LASSO 近似の計画行列を準備します。関数x2fxは、定数項、線形項、交互作用項という順序で 2 次モデルを返します。つまり、定数項、x1x2x3x1.*x2x1.*x3x2.*x3 という順序になります。

X = [x1 x2 x3];
D = x2fx(X,"interaction");
D(:,1) = []; % No constant term

関数 lasso を使用してデータの正則化モデルを当てはめます。

B = lasso(D,y);

名前と値の引数 PredictorNames を使用して、係数にラベルが付けられた LASSO 近似をプロットします。それぞれの線は、単一の予測子変数 (x1x2x3x1.*x2x1.*x3x2.*x3) に対する B 内の値のトレースを表します。

lassoPlot(B,PredictorNames=["x1" "x2" "x3" "x1.*x2" "x1.*x3" "x2.*x3"]);
legend(Location="NorthWest")

MATLAB figure

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

load acetylene

交互作用のある LASSO 近似のデータを準備します。

X = [x1 x2 x3];
D = x2fx(X,"interaction");
D(:,1) = []; % No constant term

関数 lasso を使用してデータの正則化モデルを当てはめます。

[B,FitInfo] = lasso(D,y);

Lambda プロット タイプと対数スケーリングで近似をプロットします。

lassoPlot(B,FitInfo,PlotType="Lambda",XScale="log");

MATLAB figure

さまざまな正則化レベルで交差検証誤差を視覚的に調べます。

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

load acetylene

定数項を持たない、交互作用がある計画行列を作成します。

X = [x1 x2 x3];
D = x2fx(X,"interaction");
D(:,1) = []; % No constant term

10 分割交差検証を使用して LASSO 近似を作成します。結果をプロットできるように、出力 FitInfo を含めます。

rng default % For reproducibility 
[B,FitInfo] = lasso(D,y,CV=10);

交差検証した近似をプロットします。緑の円と点線は、交差検証誤差が最小になる Lambda を示しています。青の円と点線は、最小交差検証誤差に 1 標準誤差を加算した点を示しています。

lassoPlot(B,FitInfo,PlotType="CV");
legend("show")

Figure contains an axes object. The axes object with title Cross-Validated MSE of Lasso Fit, xlabel Lambda, ylabel MSE contains 5 objects of type errorbar, line. One or more of the lines displays its values using only markers These objects represent MSE with Error Bars, LambdaMinMSE, Lambda1SE.

入力引数

すべて折りたたむ

回帰近似のシーケンスの係数。pL 列のサイズの数値行列として指定します。ここで、p は予測子の数、L は正則化係数 Lambda の数です。B は関数 lasso または lassoglm を使用して計算できます。

一般化線形モデルの当てはめ情報。構造体または数値ベクトルとして指定します。

  • FitInfo が関数 lasso または lassoglm から返されるような構造体の場合、関数 lassoPlot は名前と値の引数 PlotType に基づいてプロットを作成します。

  • FitInfo がベクトルの場合、関数 lassoPlotFitInfo の値からプロットの x 軸を形成します。FitInfo の長さは B の列の数に等しくなければなりません。

名前と値の引数

すべて折りたたむ

オプションの引数のペアを Name1=Value1,...,NameN=ValueN として指定します。ここで、Name は引数名で、Value は対応する値です。名前と値の引数は他の引数の後に指定しなければなりませんが、ペアの順序は重要ではありません。

例: lassoPlot(B,XScale="log") は、対数スケールの x 軸を使用します。

R2021a より前では、名前と値をそれぞれコンマを使って区切り、Name を引用符で囲みます。

例: lassoPlot(B,"XScale","log") は、対数スケールの x 軸を使用します。

プロットを描画する親座標軸。Axes オブジェクトとして指定します。Parent を指定しない場合、lassoPlot は、現在の座標軸を使用してプロットを作成します。Axes オブジェクトを作成する方法の詳細については、axes を参照してください。

プロット タイプ。"L1""Lambda"、または "CV" として指定します。引数 PlotType は、引数 FitInfo を指定する場合に適用されます。

PlotTypeプロット
"L1"lassoPlot は、B の係数の L1 ノルムから x 軸を作成します。プロットの最上部の x 軸には、B の非ゼロ係数の数である自由度 (df) が含まれています。

"Lambda"

lassoPlot は、FitInfoLambda フィールドから x 軸を作成します。プロットの最上部の x 軸には、B の非ゼロ係数の数である自由度 (df) が含まれています。

この値を選択する場合、FitInfo は構造体でなければなりません。

"CV"

  • Lambda に対して、lassoPlot は、その Lambda の値を使用して lasso によって当てはめたモデルの新しいデータに対する平均二乗予測誤差の推定値をプロットします。

  • lassoPlot は推定値の誤差範囲をプロットします。

この値を選択する場合、FitInfo は交差検証済みの構造体でなければなりません。

交差検証された構造体 FitInfo を含めた場合、lassoPlot は 2 つの特定の Lambda 値も緑と青の破線で示します。

  • 緑の破線は、交差検証平均二乗誤差 (MSE) が最小になる Lambda の値を示します。

  • 青の破線は、最小の MSE から 1 標準誤差以内にある最大の Lambda を示します。この Lambda の値では、最もスパースなモデルの MSE が比較的小さくなります。

Figure の凡例に各プロットのラベルを表示するには、コマンド ウィンドウで「legend("show")」と入力します。

予測子名。string 配列または文字ベクトルの cell 配列として指定します。B の各係数に予測子名のラベルが付けられます。引数 PredictorNames の長さが B の行数より小さい場合、残りのラベルには既定値が付加されます。

この引数を指定しない場合、引数 FitInfo が構造体として指定されていて、その構造体の PredictorNames フィールドが空 ({}) でなければ、関数 lassoPlot は既定値の代わりにそれらの予測子名を使用します。

予測子名を含む凡例を各プロットのラベルとして表示するには、コマンド ウィンドウで「legend("show")」と入力します。

x 軸方向の値のスケール。次の値のいずれかとして指定します。

  • "linear" — 線形の x 軸。これは、引数 PlotType"L1" または "Lambda" の場合の既定値です。

  • "log" — 対数スケールの x 軸。これは、引数 PlotType"CV" の場合の既定値です。

データ型: string | char

出力引数

すべて折りたたむ

プロットの座標軸。Axes オブジェクトとして返されます。詳細については、座標軸の外観を参照してください。

プロットの Figure ウィンドウ。Figure オブジェクトとして返されます。詳細については、特殊オブジェクトの識別子を参照してください。

バージョン履歴

R2011b で導入