Main Content

このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。

refit

回帰用の近傍成分分析 (NCA) モデルの再当てはめ

構文

mdlrefit = refit(mdl,Name,Value)

説明

mdlrefit = refit(mdl,Name,Value) は、1 つ以上の Name,Value ペア引数で指定された修正パラメーターを使用して、モデル mdl を再度当てはめます。

入力引数

すべて展開する

分類用の近傍成分分析モデル。FeatureSelectionNCARegression オブジェクトとして指定します。

名前と値の引数

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

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

当てはめオプション

すべて展開する

モデルの当てはめ方式。'FitMethod' と次のいずれかから構成されるコンマ区切りのペアとして指定します。

  • 'exact' — すべてのデータを使用して当てはめを実行します。

  • 'none' — 当てはめを行いません。fsrnca を呼び出すときに指定した特徴量の重みの初期値を使用して NCA モデルの汎化誤差を評価する場合に、このオプションを使用します。

  • 'average' — データをサブセットに分割し、exact 法を使用して各分割を当てはめ、特徴量の重みの平均を返します。名前と値のペアの引数 NumPartitions を使用して分割数を指定できます。

例: 'FitMethod','none'

正則化パラメーター。'Lambda' と非負のスカラー値から構成されるコンマ区切りのペアとして指定します。

n 個の観測値がある場合、NCA モデルの汎化誤差を最小化する最良の Lambda の値は 1/n の整数倍であると考えられます。

例: 'Lambda',0.01

データ型: double | single

特徴量の重みを推定するソルバーのタイプ。'Solver' と次のいずれかから構成されるコンマ区切りのペアとして指定します。

  • 'lbfgs' — メモリ制限 BFGS (Broyden-Fletcher-Goldfarb-Shanno) アルゴリズム (LBFGS アルゴリズム)

  • 'sgd' — 確率的勾配降下法

  • 'minibatch-lbfgs' — LBFGS アルゴリズムをミニバッチに適用した確率的勾配降下

例: 'solver','minibatch-lbfgs'

特徴量の重みの初期値。'InitialFeatureWeights' と正の実数スカラー値による p 行 1 列のベクトルから構成されるコンマ区切りのペアとして指定します。

データ型: double | single

収束概要表示の詳細レベルのインジケーター。'Verbose' と次のいずれかから構成されるコンマ区切りのペアとして指定します。

  • 0 — 収束概要なし

  • 1 — 反復回数、勾配のノルム、目的関数の値を含む収束概要。

  • 1 より大きい値 — 当てはめたアルゴリズムに応じたより多くの収束情報

    ソルバー 'minibatch-lbfgs' を使用する場合に詳細レベルを 1 より大きい値にすると、中間的なミニバッチ LBFGS の当てはめによる反復ログが収束情報に含まれます。

例: 'Verbose',2

データ型: double | single

LBFGS またはミニバッチ LBFGS のオプション

すべて展開する

ソルバーが lbfgs である場合の、勾配ノルムに対する収束の相対許容誤差。'GradientTolerance' と正の実数スカラー値から構成されるコンマ区切りのペアとして指定します。

例: 'GradientTolerance',0.00001

データ型: double | single

SGD またはミニバッチ LBFGS のオプション

すべて展開する

ソルバーが sgd である場合の初期学習率。'InitialLearningRate' と正のスカラー値から構成されるコンマ区切りのペアとして指定します。

ソルバー タイプとして 'sgd' を使用する場合、学習率は 'InitialLearningRate' で指定された値から始まって反復ごとに減衰します。

例: 'InitialLearningRate',0.8

データ型: double | single

ソルバーが 'sgd' (確率的勾配降下) である場合の通過の最大回数。'PassLimit' と正の整数から構成されるコンマ区切りのペアとして指定します。1 回通過するごとに、size(mdl.X,1) 個の観測値が処理されます。

例: 'PassLimit',10

データ型: double | single

SGD、LBFGS またはミニバッチ LBFGS のオプション

すべて展開する

最大反復回数。'IterationLimit' と正の整数で構成されるコンマ区切りのペアとして指定します。

例: 'IterationLimit',250

データ型: double | single

出力引数

すべて展開する

分類用の近傍成分分析モデル。FeatureSelectionNCARegression オブジェクトとして返されます。結果を新しいモデルとして保存するか、mdl = refit(mdl,Name,Value) として既存のモデルを更新することができます。

すべて展開する

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

load('robotarm.mat')

robotarm データセット (pumadyn32nm) は、ロボット アーム シミュレータを使用して作成されており、7168 個の学習観測値、1024 個のテスト観測値、32 個の特徴量が含まれています [1]、[2]。これは、オリジナルのデータセットを前処理したものです。データの前処理では、線形回帰近似を除外してから、すべての特徴量を単位分散に対して正規化しています。

特徴選択を行わずに汎化誤差を計算します。

nca = fsrnca(Xtrain,ytrain,'FitMethod','none','Standardize',1);
L = loss(nca,Xtest,ytest)
L = 0.9017

次に、この問題に特徴選択が必要であるかどうかを判断するため、モデルを再度当てはめ、λ = 0 (正則化項なし) で特徴選択を行って予測損失を計算し、前の損失値と比較します。変更しない設定については、refit は初期モデル nca の設定を使用します。たとえば、nca に含まれている特徴量の重みが特徴量の重みの初期値として使用されます。

nca2 = refit(nca,'FitMethod','exact','Lambda',0);
L2 = loss(nca2,Xtest,ytest)
L2 = 0.1088

損失が小さくなったので、特徴選択が必要であることがわかります。

特徴量の重みをプロットします。

figure()
plot(nca2.FeatureWeights,'ro')

Figure contains an axes object. The axes contains a line object which displays its values using only markers.

通常は、正則化パラメーターを調整すると結果が改善されます。回帰用の NCA の正則化パラメーターの調整で説明されているように交差検証を使用して λ を調整した結果、最良の λ の値が 0.0035 になったとします。この λ の値と、ソルバーとして確率的勾配降下を使用して、nca モデルを再度当てはめます。予測損失を計算します。

nca3 = refit(nca2,'FitMethod','exact','Lambda',0.0035,...
          'Solver','sgd');
L3 = loss(nca3,Xtest,ytest)
L3 = 0.0573

特徴量の重みをプロットします。

figure()
plot(nca3.FeatureWeights,'ro')

Figure contains an axes object. The axes contains a line object which displays its values using only markers.

正則化パラメーターを調整した結果、損失がさらに小さくなり、4 つの特徴量が関連することが識別されました。

参考文献

[1] Rasmussen, C. E., R. M. Neal, G. E. Hinton, D. van Camp, M. Revow, Z. Ghahramani, R. Kustra, and R. Tibshirani.The DELVE Manual, 1996, https://mlg.eng.cam.ac.uk/pub/pdf/RasNeaHinetal96.pdf

[2] https://www.cs.toronto.edu/~delve/data/datasets.html

バージョン履歴

R2016b で導入