refit
分類用の近傍成分分析 (NCA) モデルの再当てはめ
説明
は、1 つ以上の名前と値の引数で指定された修正パラメーターを使用して、モデル mdlrefit = refit(mdl,Name=Value)mdl を再度当てはめます。
例
関数 generateCheckerBoardData.m を使用してチェッカーボード データを生成します。
rng(2016,"twister"); % For reproducibility pps = 1375; [X,y] = generateCheckerBoardData(pps); X = X + 2;
データをプロットする。
plot(X(y==1,1),X(y==1,2),"x") hold on plot(X(y==-1,1),X(y==-1,2),"x") hold off

[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)
n = 20000
lambda = 1/n; nca = refit(nca,InitialFeatureWeights=w0,FitMethod="exact", ... Lambda=lambda,Solver="sgd");
目的関数の値と反復回数をプロットします。
plot(nca.FitInfo.Iteration,nca.FitInfo.Objective,"o") hold on plot(nca.FitInfo.Iteration,movmean(nca.FitInfo.Objective,10),".-") hold off xlabel("Iteration number") ylabel("Objective value")

特徴選択を行った場合の誤分類誤差を計算します。
loss_withfs = loss(nca,Xval,yval)
loss_withfs = 0.0115
選択された特徴量をプロットします。
semilogx(nca.FeatureWeights,"o") xlabel("Feature index") ylabel("Feature weight") grid on

特徴量の重みおよび相対的なしきい値を使用して、特徴量を選択します。
tol = 0.15; selidx = find(nca.FeatureWeights > tol*max(1,max(nca.FeatureWeights)))
selidx = 2×1
1
2
特徴選択により結果が改善され、fscnca は 2 つの正しい特徴量が関連することを判別します。
入力引数
分類用の近傍成分分析モデル。FeatureSelectionNCAClassification オブジェクトとして指定します。
名前と値の引数
オプションの引数のペアを Name1=Value1,...,NameN=ValueN として指定します。ここで、Name は引数名で、Value は対応する値です。名前と値の引数は他の引数の後に指定しなければなりませんが、ペアの順序は重要ではありません。
例: refit(mdl,Lambda=0.01) は、lambda 値を 0.01 にしてモデル mdl を再度当てはめます。
当てはめオプション
モデルの当てはめ方式。次のいずれかとして指定します。
"exact"— すべてのデータを使用して当てはめを実行します。"none"— 当てはめを行いません。fscncaを呼び出すときに指定した特徴量の重みの初期値を使用して NCA モデルの汎化誤差を評価する場合に、このオプションを使用します。"average"— データをサブセットに分割し、exact法を使用して各分割を当てはめ、特徴量の重みの平均を返します。名前と値の引数NumPartitionsを使用して分割数を指定できます。
例: FitMethod="none"
正則化パラメーター。非負のスカラー値として指定します。
n 個の観測値がある場合、NCA モデルの汎化誤差を最小化する最適な Lambda の値は 1/n の整数倍であると考えられます。
例: Lambda=0.01
データ型: double | single
特徴量の重みを推定するソルバーのタイプ。次のいずれかとして指定します。
"lbfgs"— メモリ制限 BFGS (Broyden-Fletcher-Goldfarb-Shanno) アルゴリズム (LBFGS アルゴリズム)"sgd"— 確率的勾配降下"minibatch-lbfgs"— LBFGS アルゴリズムをミニバッチに適用した確率的勾配降下
例: Solver="minibatch-lbfgs"
特徴量の重みの初期値。p 行 1 列の正の実数スカラー値のベクトルとして指定します。
データ型: double | single
収束概要表示の詳細レベルのインジケーター。次のいずれかとして指定します。
0 — 収束概要なし
1 — 反復回数、勾配のノルム、目的関数の値を含む収束概要。
1 より大きい値 — 当てはめたアルゴリズムに応じたより多くの収束情報
ソルバー
"minibatch-lbfgs"を使用する場合に詳細レベルを 1 より大きい値にすると、中間的なミニバッチ LBFGS の当てはめによる反復ログが収束情報に含まれます。
例: Verbose=2
データ型: double | single
LBFGS またはミニバッチ LBFGS のオプション
ソルバーが lbfgs である場合の勾配ノルムに対する収束の相対許容誤差。正の実数スカラー値として指定します。
例: GradientTolerance=0.00001
データ型: double | single
SGD またはミニバッチ LBFGS のオプション
ソルバーが sgd である場合の初期学習率。正のスカラー値として指定します。
ソルバー タイプとして "sgd" を使用する場合、学習率は InitialLearningRate で指定された値から始まって反復ごとに減衰します。
例: InitialLearningRate=0.8
データ型: double | single
ソルバーが "sgd" (確率的勾配降下) である場合の最大通過回数。正の整数値として指定します。1 回通過するごとに、size(mdl.X,1) 個の観測値が処理されます。
例: PassLimit=10
データ型: double | single
SGD、LBFGS またはミニバッチ LBFGS のオプション
最大反復回数。正の整数を指定します。
例: IterationLimit=250
データ型: double | single
出力引数
分類用の近傍成分分析モデル。FeatureSelectionNCAClassification オブジェクトとして返されます。結果を新しいモデルとして保存するか、mdl = refit(mdl,Name=Value) として既存のモデルを更新することができます。
バージョン履歴
R2016b で導入
MATLAB Command
You clicked a link that corresponds to this MATLAB command:
Run the command by entering it in the MATLAB Command Window. Web browsers do not support MATLAB commands.
Web サイトの選択
Web サイトを選択すると、翻訳されたコンテンツにアクセスし、地域のイベントやサービスを確認できます。現在の位置情報に基づき、次のサイトの選択を推奨します:
また、以下のリストから Web サイトを選択することもできます。
最適なサイトパフォーマンスの取得方法
中国のサイト (中国語または英語) を選択することで、最適なサイトパフォーマンスが得られます。その他の国の MathWorks のサイトは、お客様の地域からのアクセスが最適化されていません。
南北アメリカ
- América Latina (Español)
- Canada (English)
- United States (English)
ヨーロッパ
- 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)