refit
クラス: FeatureSelectionNCAClassification
分類用の近傍成分分析 (NCA) モデルの再当てはめ
構文
mdlrefit = refit(mdl,Name,Value)
説明
は、1 つ以上の mdlrefit
= refit(mdl
,Name,Value
)Name,Value
ペア引数で指定された修正パラメーターを使用して、モデル mdl
を再度当てはめます。
入力引数
mdl
— 分類用の近傍成分分析モデル
FeatureSelectionNCAClassification
オブジェクト
分類用の近傍成分分析モデル。FeatureSelectionNCAClassification
オブジェクトとして指定します。
名前と値の引数
オプションの引数のペアを Name1=Value1,...,NameN=ValueN
として指定します。ここで Name
は引数名、Value
は対応する値です。名前と値の引数は他の引数の後ろにする必要がありますが、ペアの順序は関係ありません。
R2021a より前では、名前と値をそれぞれコンマを使って区切り、Name
を引用符で囲みます。
FitMethod
— モデルの当てはめ方式
mdl.FitMethod
(既定値) | 'exact'
| 'none'
| 'average'
モデルの当てはめ方式。'FitMethod'
と次のいずれかから構成されるコンマ区切りのペアとして指定します。
'exact'
— すべてのデータを使用して当てはめを実行します。'none'
— 当てはめを行いません。fscnca
を呼び出すときに指定した特徴量の重みの初期値を使用して NCA モデルの汎化誤差を評価する場合に、このオプションを使用します。'average'
— データをサブセットに分割し、exact
法を使用して各分割を当てはめ、特徴量の重みの平均を返します。名前と値のペアの引数NumPartitions
を使用して分割数を指定できます。
例: 'FitMethod','none'
Lambda
— 正則化パラメーター
mdl.Lambda
(既定値) | 非負のスカラー値
正則化パラメーター。'Lambda'
と非負のスカラー値から構成されるコンマ区切りのペアとして指定します。
n 個の観測値がある場合、NCA モデルの汎化誤差を最小化する最良の Lambda
の値は 1/n の整数倍であると考えられます。
例: 'Lambda',0.01
データ型: double
| single
Solver
— ソルバーのタイプ
mdl.Solver
(既定値) | 'lbfgs'
| 'sgd'
| 'minibatch-lbfgs'
特徴量の重みを推定するソルバーのタイプ。'Solver'
と次のいずれかから構成されるコンマ区切りのペアとして指定します。
'lbfgs'
— メモリ制限 BFGS (Broyden-Fletcher-Goldfarb-Shanno) アルゴリズム (LBFGS アルゴリズム)'sgd'
— 確率的勾配降下法'minibatch-lbfgs'
— LBFGS アルゴリズムをミニバッチに適用した確率的勾配降下
例: 'solver','minibatch-lbfgs'
InitialFeatureWeights
— 特徴量の重みの初期値
mdl.InitialFeatureWeights
(既定値) | 正の実数スカラー値による p 行 1 列のベクトル
特徴量の重みの初期値。'InitialFeatureWeights'
と正の実数スカラー値による p 行 1 列のベクトルから構成されるコンマ区切りのペアとして指定します。
データ型: double
| single
Verbose
— 詳細レベルのインジケーター
mdl.Verbose
(既定値) | 0 | 1 | >1
収束概要表示の詳細レベルのインジケーター。'Verbose'
と次のいずれかから構成されるコンマ区切りのペアとして指定します。
0 — 収束概要なし
1 — 反復回数、勾配のノルム、目的関数の値を含む収束概要。
1 より大きい値 — 当てはめたアルゴリズムに応じたより多くの収束情報
ソルバー
'minibatch-lbfgs'
を使用する場合に詳細レベルを 1 より大きい値にすると、中間的なミニバッチ LBFGS の当てはめによる反復ログが収束情報に含まれます。
例: 'Verbose',2
データ型: double
| single
GradientTolerance
— 収束の相対許容誤差
mdl.GradientTolerance
(既定値) | 正の実数スカラー値
ソルバーが lbfgs
である場合の、勾配ノルムに対する収束の相対許容誤差。'GradientTolerance'
と正の実数スカラー値から構成されるコンマ区切りのペアとして指定します。
例: 'GradientTolerance',0.00001
データ型: double
| single
InitialLearningRate
— ソルバーが sgd
である場合の初期学習率
mdl.InitialLearningRate
(既定値) | 正の実数スカラー値
ソルバーが sgd
である場合の初期学習率。'InitialLearningRate'
と正のスカラー値から構成されるコンマ区切りのペアとして指定します。
ソルバー タイプとして 'sgd'
を使用する場合、学習率は 'InitialLearningRate'
で指定された値から始まって反復ごとに減衰します。
例: 'InitialLearningRate',0.8
データ型: double
| single
PassLimit
— ソルバーが 'sgd'
である場合の最大通過回数
mdl.PassLimit
(既定値) | 正の整数値
ソルバーが 'sgd'
(確率的勾配降下) である場合の通過の最大回数。'PassLimit'
と正の整数から構成されるコンマ区切りのペアとして指定します。1 回通過するごとに、size(mdl.X,1)
個の観測値が処理されます。
例: 'PassLimit',10
データ型: double
| single
IterationLimit
— 最大反復回数
mdl.IterationLimit
(既定値) | 正の整数値
最大反復回数。'IterationLimit'
と正の整数で構成されるコンマ区切りのペアとして指定します。
例: 'IterationLimit',250
データ型: double
| single
出力引数
mdlrefit
— 分類用の近傍成分分析モデル
FeatureSelectionNCAClassification
オブジェクト
分類用の近傍成分分析モデル。FeatureSelectionNCAClassification
オブジェクトとして返されます。結果を新しいモデルとして保存するか、mdl = refit(mdl,Name,Value)
として既存のモデルを更新することができます。
例
設定を修正した分類用の NCA モデルの再当てはめ
関数 generateCheckerBoardData.m
を使用してチェッカーボード データを生成します。
rng(2016,'twister'); % For reproducibility pps = 1375; [X,y] = generateCheckerBoardData(pps); X = X + 2;
データをプロットする。
figure plot(X(y==1,1),X(y==1,2),'rx') hold on plot(X(y==-1,1),X(y==-1,2),'bx') [n,p] = size(X)
n = 22000 p = 2
無関係な予測子をデータに追加します。
Q = 98; Xrnd = unifrnd(0,4,n,Q); Xobs = [X,Xrnd];
このコードにより、すべてが 0 と 4 の間で均等に分散している 98 個の追加予測子が作成されます。
データを学習セットと検定セットに分割します。層化区分を作成し、各分割が似たクラス比率を持つようにするため、分割基準として length(y)
ではなく y
を使用します。
cvp = cvpartition(y,'holdout',2000);
cvpartition
は、検定セットに追加する 2000 個の観測値を無作為に選択します。残りのデータは学習セットに追加されます。cvpartition
オブジェクト cvp
に格納されている割り当てを使用して、学習セットと検証セットを作成します。
Xtrain = Xobs(cvp.training(1),:); ytrain = y(cvp.training(1),:); Xval = Xobs(cvp.test(1),:); yval = y(cvp.test(1),:);
特徴選択を行わない場合の誤分類誤差を計算します。
nca = fscnca(Xtrain,ytrain,'FitMethod','none','Standardize',true, ... 'Solver','lbfgs'); loss_nofs = loss(nca,Xval,yval)
loss_nofs = 0.5165
'FitMethod','none'
オプションでは、既定の重み (すべてが 1) が使用されます。つまり、すべての特徴量が同じ重要度になります。
次に、分類用の近傍成分分析を使用して、 で特徴選択を実行します。
w0 = rand(100,1); n = length(ytrain) lambda = 1/n; nca = refit(nca,'InitialFeatureWeights',w0,'FitMethod','exact', ... 'Lambda',lambda,'solver','sgd');
n = 20000
目的関数の値と反復回数をプロットします。
figure() plot(nca.FitInfo.Iteration,nca.FitInfo.Objective,'ro') hold on plot(nca.FitInfo.Iteration,movmean(nca.FitInfo.Objective,10),'k.-') xlabel('Iteration number') ylabel('Objective value')
特徴選択を行った場合の誤分類誤差を計算します。
loss_withfs = loss(nca,Xval,yval)
loss_withfs = 0.0115
選択された特徴量をプロットします。
figure semilogx(nca.FeatureWeights,'ro') xlabel('Feature index') ylabel('Feature weight') grid on
特徴量の重みおよび相対的なしきい値を使用して、特徴量を選択します。
tol = 0.15; selidx = find(nca.FeatureWeights > tol*max(1,max(nca.FeatureWeights)))
selidx = 1 2
特徴選択により結果が改善され、fscnca
は 2 つの正しい特徴量が関連することを判別します。
バージョン履歴
R2016b で導入
MATLAB コマンド
次の MATLAB コマンドに対応するリンクがクリックされました。
コマンドを MATLAB コマンド ウィンドウに入力して実行してください。Web ブラウザーは MATLAB コマンドをサポートしていません。
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)