ドキュメンテーション

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

refit

クラス: FeatureSelectionNCARegression

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

構文

mdlrefit = refit(mdl,Name,Value)

説明

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

入力引数

すべて展開する

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

名前と値のペアの引数

オプションの引数 Name,Value のコンマ区切りペアを指定します。Name は引数名で、Value は対応する値です。Name は引用符で閉じなければなりません。Name1,Value1,...,NameN,ValueN のように、複数の名前と値のペアの引数を任意の順序で指定できます。

近似オプション

すべて展開する

モデルのあてはめ方式。'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(fullfile(matlabroot,'examples','stats','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')

通常は、正則化パラメーターを調整すると結果が改善されます。回帰用の 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')

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

参照

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

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

R2016b で導入