主要内容

改装

クラス:功能选择性分类

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

构文

mdlrefit = refit(mdl,name,value)

说明

mdlrefit=改装(mdl,,,,名称,价值は,,つ以上の名称,价值ペア引数で指定された修正パラメーターを使用して、モデルmdlを再度当てます。

入力引数

すべて展開する

分类用近傍成分分析。。功能选择性分类オブジェクトとして指定ます。

名前と値引数

オプションの引数ペアをname1 = value1,...,namen = valuenとして指定ます。ここで姓名は引数名、Valueは対応です名前と値のの引数の后ろにする必要必要がありますますが,ペアペアののの顺序

r2021aよりで,名前値それぞれコンマ使って,,姓名を引用で囲みます。

当てはめオプション

すべて展開する

モデルの当て方式。'FitMethod'と次か构成されるコンマのペアとして指定し。

  • 'exact'- すべての使用て当てはめ実行ます。。

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

  • '平均'- データをに分割,,精确的法をて分割当てめ特徴量重みの平均を返し返します。名前名前と値のの数字を使用て数を指定でき。。

例:'FitMethod',,,,'没有任何'

正则化パラメーター。'lambda'と非负値构成されるコンマのペアとして指定し。

n 個の観測値がある場合、NCA モデルの汎化誤差を最小化する最良の兰姆达の値ははの倍と。。。。

例:'lambda',0.01

データ型:双倍的|单身的

特徴量重み推定するソルバーの。。'Solver'と次か构成されるコンマのペアとして指定し。

  • 'lbfgs'- BFGS(Broyden-Fletcher-Goldfarb-Shanno)アルゴリズム(LBFGSアルゴリズム)

  • 'sgd'- 确率的勾配法

  • 'minibatch-lbfgs'- lbfgsアルゴリズムをバッチ适用し的降下降下

例:“求解器”,,,,'minibatch-lbfgs'

特徴量重みの初期値。“初始流量量”P行によるによるによるによるによる列列ベクトル构成れるコンマ区区切りのペアペアとして。。。

データ型:双倍的|单身的

收束概要の详细レベル。。“冗长”と次か构成されるコンマのペアとして指定し。

  • 0 - 收束收束なし

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

  • 1より値値値たアルゴリズム応じより多くの情报情报

    ソルバー'minibatch-lbfgs'を使用にレベルをををよりよりよりにと,中间中间ミニバッチミニバッチミニバッチミニバッチミニバッチミニバッチミニバッチミニバッチミニバッチミニバッチミニバッチのののの当てはめによるによる反复反复ログログが

例:“冗长”,2

データ型:双倍的|单身的

lbfgsまたはlbfgsのオプションオプション

すべて展開する

ソルバーがlbfgsである场合,ノルムに対するの相対许容误差。'GradientTolerance'と正スカラー値构成される区のペアとして指定します。

例:“梯度耐受”,0.00001

データ型:双倍的|单身的

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

すべて展開する

ソルバーがSGDである场合の学习率。“初始研究量”と正値构成されるコンマのペアとして指定し。

ソルバータイプとして'sgd'を使用する場合、学習率は“初始研究量”で指定れから始まって反复に减衰します。

例:“初始牵引力”,0.8

データ型:双倍的|单身的

ソルバーが'sgd'(确率的)であるである通过の。。“ Passlimit”と正の整数から構成されるコンマ区切りのペアとして指定します。1 回通過するごとに、尺寸(MDL.X,1)個の観測値が処理されます。

例:“ Passlimit”,10

データ型:双倍的|单身的

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

すべて展開する

最大反复。“迭代限制”と正でされるコンマ区ペアとして指定し。。

例:“迭代限制”,250

データ型:双倍的|单身的

出力引数

すべて展開する

分类用近傍成分分析。。功能选择性分类オブジェクトとして返されます。結果を新しいモデルとして保存するか、mdl = revit(mdl,name,value)として既存モデルをすることができます。

すべて展開する

关数generatecheckerboarddata.mを使用てボードデータ生成します。

RNG(2016年,'twister');% For reproducibilitypps = 1375;(X, y) = generateCheckerBoardData (pps);X = X + 2;

データをプロット。

图图(x(y == 1,1),x(y == 1,2),,'rx')holdon图(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,'坚持',2000);

CVPARTITION2000年个个个の値を无作为に选択します残り残りのデータはは学习セットにに追加追加追加。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',,,,'没有任何',,,,“标准化”,真的,...'Solver',,,,'lbfgs');loss_nofs =损失(NCA,XVAL,YVAL)
lose_nofs = 0.5165

'FitMethod',,,,'没有任何'オプションで(1)がののされ。つまりすべての特徴量量が重要重要度に。。

次に用の成分分析をし,,,$\lambda = 1/n$で特徴を実行し。。

w0 = rand(100,1); n = length(ytrain) lambda = 1/n; nca = refit(nca,“初始流量量”,W0,'FitMethod',,,,'exact',,,,...'lambda',lambda,“求解器”,,,,'sgd');
n = 20000

目的关数値反复回数プロットします。

figure() plot(nca.FitInfo.Iteration,nca.FitInfo.Objective,'ro')holdon绘图(nca.fitinfo.Iteration,movmean(nca.fitinfo.Objective,10),'K.-')xlabel('迭代编号')ylabel(“客观价值”

特徴选択た场合误分类误差をし。。。

失利_withfs = loss(nca,Xval,yval)
lose_withfs = 0.0115

选択さた量をプロットし。。

图Semilogx(NCA.FeatureWeaights,'ro')xlabel(“功能索引”)ylabel('Feature weight') 网格on

特徴量および相対なしきい値をし,特徴量を选択します。

TOL = 0.15;selidx = find(nca.featureWeaights> tol*max(1,max(nca.featureWeaights)))))))
selidx = 1 2

特徴选択结果が改善,,FSCNCA2つのつの量关连することを判别ます。。

バージョン履歴

R2016Bで导入