Main Content

FeatureSelectionNCARegression

近傍成分分析 (NCA) を使用する回帰用の特徴選択

説明

FeatureSelectionNCARegression には、近傍成分分析 (NCA) モデルのデータ、当てはめの情報、特徴量の重み、その他のモデル パラメーターが格納されます。fsrnca は、NCA を対角的に適用して特徴量の重みを学習し、FeatureSelectionNCARegression オブジェクトのインスタンスを返します。この関数は、特徴量の重みを正則化することにより特徴選択を実現します。

作成

FeatureSelectionNCARegression オブジェクトを作成するには、fsrnca を使用します。

プロパティ

すべて展開する

NCA のプロパティ

この プロパティ は読み取り専用です。

モデルの学習に使用したモデル パラメーター。構造体として指定します。

ModelParameters のフィールドには、ドット表記を使用してアクセスできます。

たとえば、mdl という名前の FeatureSelectionNCARegression オブジェクトの場合、mdl.ModelParameters.LossFunction を使用して LossFunction の値にアクセスできます。

データ型: struct

この プロパティ は読み取り専用です。

このモデルの学習に使用した正則化パラメーター。スカラーとして指定します。n 個の観測値がある場合、NCA モデルの汎化誤差を最小化する最良の Lambda の値は 1/n の整数倍であると考えられます。

データ型: double

この プロパティ は読み取り専用です。

このモデルの当てはめに使用した当てはめ手法の名前。次のいずれかとして指定します。

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

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

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

この プロパティ は読み取り専用です。

このモデルの当てはめに使用したソルバーの名前。次のいずれかとして指定します。

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

  • 'sgd' — 確率的勾配降下 (SGD) アルゴリズム

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

この プロパティ は読み取り専用です。

'lbfgs' ソルバーと 'minibatch-lbfgs' ソルバーの勾配ノルムに対する収束の相対許容誤差。正のスカラー値として指定します。

データ型: double

この プロパティ は読み取り専用です。

最適化の最大反復回数。正の整数値として指定します。

データ型: double

この プロパティ は読み取り専用です。

'sgd' ソルバーと 'minibatch-lbfgs' ソルバーの最大通過回数。正の整数として指定します。1 回の通過ごとに、データ内の観測値がすべて処理されます。

データ型: double

この プロパティ は読み取り専用です。

'sgd' ソルバーと 'minibatch-lbfgs' ソルバーの初期学習率。正の実数スカラーとして指定します。学習率は、InitialLearningRate について指定された値から始まって反復ごとに減衰します。

fsrnca を呼び出すときの初期学習率の自動調整を制御するには、NumTuningIterations および TuningSubsetSize を使用します。

データ型: double

この プロパティ は読み取り専用です。

詳細レベル インジケーター。非負の整数として指定します。利用可能な値は以下のとおりです。

  • 0 — 収束概要なし

  • 1 — 勾配のノルムと目的関数の値を収束概要に含める

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

データ型: double

この プロパティ は読み取り専用です。

特徴量の重みの初期値。p 行 1 列の正の実数スカラーのベクトルとして指定します。p は X 内の予測子の数です。

データ型: double

この プロパティ は読み取り専用です。

特徴量の重み。p 行 1 列の数値ベクトルまたは p 行 m 列の数値行列として指定します。ここで、p はカテゴリカル変数用にダミー変数が作成された後の予測子変数の数です (詳細については、ExpandedPredictorNames を参照)。

FitMethod'average' である場合、FeatureWeights は p 行 m 列の行列になります。m は、fsrnca を呼び出すときに名前と値の引数 NumPartitions で指定した分割数です。

FeatureWeights(k) の絶対値は予測子 k の重要度の尺度です。FeatureWeights(k) の値が 0 に近い場合、予測子 kY 内の応答に影響を与えません。

データ型: double

この プロパティ は読み取り専用です。

当てはめの情報。次のフィールドをもつ構造体として指定します。

フィールド名意味
Iteration反復のインデックス
Objective最小化対象の正則化された目的関数
UnregularizedObjective最小化対象の正則化されていない目的関数
Gradient最小化対象の正則化された目的関数の勾配
  • 分類の場合、UnregularizedObjective は学習データに対する NCA 分類器の leave-one-out 精度の負数を表します。

  • 回帰の場合、UnregularizedObjective は NCA 回帰モデルを使用して予測された応答と真の応答の間の leave-one-out 損失を表します。

  • 'lbfgs' ソルバーの場合、Gradient は最終的な勾配です。'sgd' ソルバーと 'minibatch-lbfgs' ソルバーの場合、Gradient は最終的なミニバッチの勾配です。

  • FitMethod'average' の場合、FitInfo は m 行 1 列の構造体配列になります。m は、名前と値の引数 NumPartitions で指定した分割数です。

FitInfo のフィールドには、ドット表記を使用してアクセスできます。たとえば、mdl という名前の FeatureSelectionNCARegression オブジェクトの場合、mdl.FitInfo.Objective を使用して Objective フィールドにアクセスできます。

データ型: struct

他の回帰のプロパティ

この プロパティ は読み取り専用です。

NaN または Inf 値を削除した後の学習データ (X および Y) に含まれている観測値の数。スカラーとして指定します。

データ型: double

この プロパティ は読み取り専用です。

予測子の平均。学習データが標準化されている場合、p 行 1 列のベクトルとして指定します。この場合、predict メソッドでは、Mu の対応する要素を各列から減算することにより、予測子行列 X をセンタリングします。

学習時にデータが標準化されていない場合、Mu は空になります。

データ型: double

この プロパティ は読み取り専用です。

予測子の標準偏差。学習データが標準化されている場合、p 行 1 列のベクトルとして指定します。この場合、predict メソッドは予測子行列 X を、Mu を使用したデータのセンタリング後にその各列を Sigma の対応する要素で除算することにより、スケーリングします。

学習時にデータが標準化されていない場合、Sigma は空になります。

データ型: double

この プロパティ は読み取り専用です。

このモデルの学習に使用した予測子の値。n 行 p 列の行列として指定します。n は学習データに含まれている観測値の数、p は予測子変数の数です。

データ型: double

この プロパティ は読み取り専用です。

このモデルの学習に使用した応答値。サイズ n の数値ベクトルとして指定します。n は観測値の数です。

データ型: double

この プロパティ は読み取り専用です。

このモデルの学習に使用した観測値の重み。サイズ n の数値ベクトルとして指定します。観測値の重みの合計は n です。

データ型: double

この プロパティ は読み取り専用です。

カテゴリカル予測子のインデックス。正の整数のベクトルとして指定します。CategoricalPredictors には、対応する予測子がカテゴリカルであることを示すインデックス値が格納されます。インデックス値の範囲は 1 ~ p です。p はモデルの学習に使用した予測子の数です。どの予測子もカテゴリカルではない場合、このプロパティは空 ([]) になります。

データ型: single | double

この プロパティ は読み取り専用です。

応答変数名。文字ベクトルを指定します。

データ型: char

この プロパティ は読み取り専用です。

予測子データに現れる順序で並んでいる予測子変数名。一意の文字ベクトルの cell 配列として指定します。PredictorNames の長さは、予測子変数として使用される学習データ X に含まれている変数の数と等しくなります。

データ型: cell

この プロパティ は読み取り専用です。

展開された予測子名。一意の文字ベクトルの cell 配列として指定します。

モデルがカテゴリカル変数用のエンコーディングを使用している場合、ExpandedPredictorNames には展開された変数を表す名前が格納されます。それ以外の場合、ExpandedPredictorNamesPredictorNames と同じです。

データ型: cell

オブジェクト関数

loss 学習した特徴量の重みの精度をテスト データに対して評価
predict近傍成分分析 (NCA) 回帰モデルの使用による応答の予測
refit回帰用の近傍成分分析 (NCA) モデルの再当てはめ
selectFeaturesSelect important features for NCA classification or regression

すべて折りたたむ

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

load imports-85

最初の 15 列には連続予測子変数が、16 列目には応答変数 (自動車の価格) が含まれています。近傍成分分析モデル用の変数を定義します。

Predictors = X(:,1:15);
Y = X(:,16);

回帰用の近傍成分分析 (NCA) モデルを当てはめて、関連する特徴量を判別します。

mdl = fsrnca(Predictors,Y);

返された NCA モデル mdlFeatureSelectionNCARegression オブジェクトです。このオブジェクトには、学習データ、モデルおよび最適化に関する情報が格納されています。このオブジェクトのプロパティ (特徴量の重みなど) には、ドット表記を使用してアクセスできます。

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

plot(mdl.FeatureWeights,"o")
xlabel("Feature Index")
ylabel("Feature Weight")
grid on

無関係な特徴量の重みはゼロになります。fsrnca を呼び出すときに Verbose=1 オプションを指定すると、最適化の情報がコマンド ラインに表示されます。目的関数と反復回数をプロットして最適化プロセスを可視化することもできます。

plot(mdl.FitInfo.Iteration,mdl.FitInfo.Objective,"o-")
grid on
xlabel("Iteration Number")
ylabel("Objective")

ModelParameters プロパティは、モデルに関する詳細情報が含まれている struct です。このプロパティのフィールドには、ドット表記を使用してアクセスできます。たとえば、データが標準化されているかどうかを調べます。

mdl.ModelParameters.Standardize
ans = logical
   0

0 は、NCA モデルを当てはめる前にデータが標準化されていないことを意味します。各予測子のスケールが非常に異なる場合は、fsrnca を呼び出すときに名前と値の引数 Standardize=true を使用して予測子を標準化することができます。

バージョン履歴

R2016b で導入