主要内容

fscnca

特征选择使用邻域成分分析进行分类

描述

例子

MDL.= fscnca(XY使用预测器执行分类的特征选择X和回复Y

fscnca使用对角自适应的正则化邻域分量分析(NCA)来学习特征权值。

例子

MDL.= fscnca(XY名称、值使用一个或多个名称-值对参数指定的其他选项执行分类的特征选择。

例子

全部崩溃

生成玩具数据,其中响应变量取决于第3、第9和第15个预测值。

RNG(0,“旋风”);重复性的%n = 100;x = rand(n,20);y = -ones(n,1);Y(x(:,3)。* x(:,9)./ x(:,15)​​<0.4)= 1;

拟合邻域成分分析模型进行分类。

mdl=fscnca(X,y,'求解'“sgd”“详细”,1);
o调整初始学习速率:NumTuning韵= 20,TUNINGSUSESEIZE = 100 | =============================================== ||调整|调谐子集|学习||磨练|有趣的价值|率|| =============================================== | 1 | -3.755936e-01 | 2.000000e-01 | | 2 | -3.950971e-01 | 4.000000e-01 | | 3 | -4.311848e-01 | 8.000000e-01 | | 4 | -4.903195e-01 | 1.600000e+00 | | 5 | -5.630190e-01 | 3.200000e+00 | | 6 | -6.166993e-01 | 6.400000e+00 | | 7 | -6.255669e-01 | 1.280000e+01 | | 8 | -6.255669e-01 | 1.280000e+01 | | 9 | -6.255669e-01 | 1.280000e+01 | | 10 | -6.255669e-01 | 1.280000e+01 | | 11 | -6.255669e-01 | 1.280000e+01 | | 12 | -6.255669e-01 | 1.280000e+01 | | 13 | -6.255669e-01 | 1.280000e+01 | | 14 | -6.279210e-01 | 2.560000e+01 | | 15 | -6.279210e-01 | 2.560000e+01 | | 16 | -6.279210e-01 | 2.560000e+01 | | 17 | -6.279210e-01 | 2.560000e+01 | | 18 | -6.279210e-01 | 2.560000e+01 | | 19 | -6.279210e-01 | 2.560000e+01 | | 20 | -6.279210e-01 | 2.560000e+01 | o Solver = SGD, MiniBatchSize = 10, PassLimit = 5 |==========================================================================================| | PASS | ITER | AVG MINIBATCH | AVG MINIBATCH | NORM STEP | LEARNING | | | | FUN VALUE | NORM GRAD | | RATE | |==========================================================================================| | 0 | 9 | -5.658450e-01 | 4.492407e-02 | 9.290605e-01 | 2.560000e+01 | | 1 | 19 | -6.131382e-01 | 4.923625e-02 | 7.421541e-01 | 1.280000e+01 | | 2 | 29 | -6.225056e-01 | 3.738784e-02 | 3.277588e-01 | 8.533333e+00 | | 3 | 39 | -6.233366e-01 | 4.947901e-02 | 5.431133e-01 | 6.400000e+00 | | 4 | 49 | -6.238576e-01 | 3.445763e-02 | 2.946188e-01 | 5.120000e+00 | Two norm of the final step = 2.946e-01 Relative two norm of the final step = 6.588e-02, TolX = 1.000e-06 EXIT: Iteration or pass limit reached.

绘制选定的特征。不相关特征的权值应该接近于零。

图()图(mdl。FeatureWeights,“罗”网格)Xlabel(“功能指数”)ylabel('特征重量'

图中包含一个轴。轴包含类型为line的对象。

fscnca正确检测相关特征。

加载样本数据

负载卵巢癌;谁是
名称大小字节类属性grp 216x1 25056 cell obs 216x4000 3456000 single

此示例使用使用WCX2蛋白质阵列生成的高分辨率卵巢癌数据集。经过一些预处理步骤后,数据集有两个变量:obs玻璃钢.这obs变量由216个观测值和4000个特征组成。每个元素玻璃钢定义对应行所属的组obs属于。

将数据划分为训练集和测试集

使用CVD分区将数据划分为大小160的训练集和大小56的测试集。训练集和测试集都具有大致相同的组比例玻璃钢

RNG(1);重复性的%本量利= cvpartition (grp,“坚持”,56)
cvp = hold out cross validation partition nummobations: 216 NumTestSets: 1 TrainSize: 160 TestSize: 56
Xtrain = OB(CVP.TRAINTAIN,:);YTrain = GRP(CVP.TRAINTAIN,:);xtest = obs(cvp.test,:);ytest = grp(cvp.test,:);

确定是否需要特征选择

计算泛化误差而不拟合。

NCA = FSCNCA(XTrain,Ytrain,“FitMethod”“没有”);L =损失(nca, Xtest欧美)
L=0.0893

此选项使用中提供的初始特征权重(在本例中为默认特征权重)计算邻域组件分析(NCA)特征选择模型的泛化误差fscnca

没有正则化参数的拟合NCA(Lambda = 0)

NCA = FSCNCA(XTrain,Ytrain,“FitMethod”'精确的'“λ”0,......'求解'“sgd”'标准化',真正的);L =损失(nca, Xtest欧美)
L = 0.0714.

损失价值的改善表明,特征选择是一个好主意。调整 λ. 价值通常会改善结果。

使用五重交叉验证调整NCA的正则化参数

调优 λ. 意味着找到 λ. 值产生最小分类损失。调 λ. 使用交叉验证:

1.将培训数据分为五个折叠,提取验证数(测试)集。每折,CVD分区指定五分之四的数据作为训练集,五分之一的数据作为测试集。

cvp = cvpartition(Ytrain,“kfold”5);numvalidsets = cvp.numtestsets;

分配 λ. 值并创建一个数组以存储丢失函数值。

n=长度(y);lambdavals=linspace(0,20,20)/n;lossvals=零(长度(lambdavals),numvalidset);

2.为每个培训NCA模型 λ. 值,使用每个折叠中的训练集。

3.使用NCA模型计算折叠中相应的测试集的分类损耗。记录损失值。

4.重复所有折叠和所有的过程 λ. 价值观。

对于i = 1:长度(lambdavals)对于k = 1:numvalidsets X = Xtrain(cvp.training(k),:);y = ytrain (cvp.training (k):);Xvalid = Xtrain (cvp.test (k):);yvalid = ytrain (cvp.test (k):);nca = fscnca (X, y,“FitMethod”'精确的'......'求解'“sgd”“λ”,lambdavals(i),......“迭代限制”,30,'gradienttolerance',1e-4,......'标准化',真正的);丢失(i,k)=损失(nca,xvalid,yvalid,'损失''classiferror');结束结束

计算每个折叠的平均损耗 λ. 价值。

Meanloss =卑鄙(损失,2);

绘制平均损失值与 λ. 价值观。

图()绘图(Lambdavals,Meanloss,'ro-')xlabel(“λ”)ylabel(“损失(MSE)”网格)

图中包含一个轴。轴包含类型为line的对象。

找到与最小平均损失相对应的最佳lambda值。

[~, idx] = min (meanloss)查找索引
idx = 2
bestlambda=lambdavals(idx)%找到最佳lambda值
bestlambda = 0.0066
bestloss = meanloss(idx)
Bestloss = 0.0313

最好地将nca模型应用于所有数据 λ. 并绘制特征权重

使用Solver LBFGS并标准化预测值值。

NCA = FSCNCA(XTrain,Ytrain,“FitMethod”'精确的''求解'“sgd”......“λ”,bestlambda,'标准化',真的,“详细”,1);
o调整初始学习速率:NumTuning韵= 20,TUNINGSUSESEIZE = 100 | =============================================== ||调整|调谐子集|学习||磨练|有趣的价值|率|| =============================================== | 1 | 2.403497e+01 | 2.000000e-01 | | 2 | 2.275050e+01 | 4.000000e-01 | | 3 | 2.036845e+01 | 8.000000e-01 | | 4 | 1.627647e+01 | 1.600000e+00 | | 5 | 1.023512e+01 | 3.200000e+00 | | 6 | 3.864283e+00 | 6.400000e+00 | | 7 | 4.743816e-01 | 1.280000e+01 | | 8 | -7.260138e-01 | 2.560000e+01 | | 9 | -7.260138e-01 | 2.560000e+01 | | 10 | -7.260138e-01 | 2.560000e+01 | | 11 | -7.260138e-01 | 2.560000e+01 | | 12 | -7.260138e-01 | 2.560000e+01 | | 13 | -7.260138e-01 | 2.560000e+01 | | 14 | -7.260138e-01 | 2.560000e+01 | | 15 | -7.260138e-01 | 2.560000e+01 | | 16 | -7.260138e-01 | 2.560000e+01 | | 17 | -7.260138e-01 | 2.560000e+01 | | 18 | -7.260138e-01 | 2.560000e+01 | | 19 | -7.260138e-01 | 2.560000e+01 | | 20 | -7.260138e-01 | 2.560000e+01 | o Solver = SGD, MiniBatchSize = 10, PassLimit = 5 |==========================================================================================| | PASS | ITER | AVG MINIBATCH | AVG MINIBATCH | NORM STEP | LEARNING | | | | FUN VALUE | NORM GRAD | | RATE | |==========================================================================================| | 0 | 9 | 4.016078e+00 | 2.835465e-02 | 5.395984e+00 | 2.560000e+01 | | 1 | 19 | -6.726156e-01 | 6.111354e-02 | 5.021138e-01 | 1.280000e+01 | | 1 | 29 | -8.316555e-01 | 4.024186e-02 | 1.196031e+00 | 1.280000e+01 | | 2 | 39 | -8.838656e-01 | 2.333416e-02 | 1.225834e-01 | 8.533333e+00 | | 3 | 49 | -8.669034e-01 | 3.413162e-02 | 3.421902e-01 | 6.400000e+00 | | 3 | 59 | -8.906936e-01 | 1.946295e-02 | 2.232511e-01 | 6.400000e+00 | | 4 | 69 | -8.778630e-01 | 3.561290e-02 | 3.290645e-01 | 5.120000e+00 | | 4 | 79 | -8.857135e-01 | 2.516638e-02 | 3.902979e-01 | 5.120000e+00 | Two norm of the final step = 3.903e-01 Relative two norm of the final step = 6.171e-03, TolX = 1.000e-06 EXIT: Iteration or pass limit reached.

绘制特征权重。

图()绘图(nca.featurewuights,“罗”)xlabel(“功能指数”)ylabel('特征重量'网格)

图中包含一个轴。轴包含类型为line的对象。

使用要素权重和相对阈值选择功能。

tol = 0.02;selidx = find(nca.featureweights> tol * max(1,max(nca.featureweights)))
塞利克斯=72×1565 611 654 681 737 743 744 750 754 839⋮

使用测试集计算分类丢失。

L =损失(nca, Xtest欧美)
L = 0.0179.

使用选定的特征对观察进行分类

从训练数据中提取具有大于0的特征权重的功能。

特征=Xtrain(:,selidx);

将使用选定特征的万博1manbetx支持向量机分类器应用于缩减的训练集。

svmmdl = fitcsvm(特征,ytrain);

评估训练有素的分类器对测试数据的准确性,这些分类器尚未用于选择功能。

L =损耗(SVMMDL,XTEST(:,SELIDX),YTEST)
L=单身的0

输入参数

全部崩溃

预测器变量值,指定为n-经过-p矩阵,其中n是观察人数和p是预测变量的数量。

数据类型:单身的|

类标签,指定为分类矢量,逻辑向量,数字矢量,字符串数组,长度的字符向量阵列n,或字符矩阵n行,在哪里n为观察次数。元素或划船Y是对应于行的类标签X(观察).

数据类型:单身的||逻辑|char|字符串|细胞|分类

名称-值对参数

指定可选的逗号分隔的字符对名称、值论点。的名字是参数名和价值是相应的价值。的名字必须出现在引号内。您可以按任意顺序指定多个名称和值对参数,如下所示:name1,value1,...,namen,valuen

例子:'求解','sgd','重量',w,'lambda',0.0003指定求解器为随机梯度下降,观测权值为向量中的值W,并将正则化参数设置为0.0003。
拟合选项

全部崩溃

模型拟合方法,指定为逗号分隔对组成“FitMethod”以及以下其中之一:

  • '精确的'- 使用所有数据执行拟合。

  • “没有”-不合适。使用此选项可使用调用fscnca时提供的初始特征权重评估NCA模型的泛化误差。

  • “平均”-将数据划分为分区(子集),使用确切的方法,并返回特征权重的平均值。您可以使用该分区指定分区数NumPartitions名称-值对的论点。

例子:'fitmethod','没有'

用于分割数据的分区数目'fitmethod','平均'选项,指定为逗号分隔的配对组成'numpartitions'以及介于2和之间的整数值n,在那里n为观察次数。

例子:'numpartitions',15

数据类型:|单身的

正则化参数以防止过度装备,指定为逗号分隔对组成“λ”和一个非负标量。

作为观察的次数n增加,过度装备的机会降低,所需的正则化量也降低。看识别相关特征进行分类调整正常化参数以检测使用NCA进行分类的功能要了解如何调整正则化参数。

例子:“λ”,0.002

数据类型:|单身的

内核的宽度,指定为逗号分隔对“LengthScale”和一个积极的标量。

当所有预测器在同一尺度上时,长度尺度值为1是合理的。如果预测因子在X具有非常不同的大小,然后考虑使用标准化预测值值“标准化”,真的和设置'LengeScale',1

例子:“长度刻度”,1.5

数据类型:|单身的

初始特征权重,指定为逗号分隔对,由“InitialFeatureWeights”A.p-实正标量的by-1向量,其中p为训练数据中预测器的个数。

优化特征权重的正则化目标函数是非凸的。因此,使用不同的初始特征权重可以得到不同的结果。将所有初始功能权重设置为1通常很有效,但在某些情况下,随机初始化使用兰特(p,1)可以提供更好质量的解决方案。万博 尤文图斯

数据类型:|单身的

观察权重,指定为逗号分隔的配对组成“ObservationWeights”n实正量的- × 1向量。使用观测权值来指定某些观测值比其他观测值更重要。默认权重对所有的观测值都赋予同等的重要性。

数据类型:|单身的

每个类的先前概率,指定为逗号分隔的配对组成'事先的'以及以下其中之一:

  • '经验'- - - - - -fscnca从类频率中获取先验类概率。

  • '制服'- - - - - -fscnca将所有类概率设置为相等。

  • 结构有两个字段:

    • classprobs.- 类概率矢量矢量图。如果这些是数值,则总量大于1,fsnca将它们标准化为最多1。

    • 一会- 与类概率相对应的类名classprobs.

例子:“前”、“制服”

用于标准化预测数据的指示器,指定为逗号分隔对,包括'标准化'和任何一种假的要么真的.有关更多信息,请参阅标准化的影响

例子:“标准化”,真的

数据类型:逻辑

融合摘要显示的详细级别指示器,指定为逗号分隔对“详细”以及以下其中之一:

  • 0-无收敛性摘要

  • 1 -收敛总结,包括梯度范数和目标函数值

  • > 1 -更多的收敛信息,取决于拟合算法

    使用时'minibatch-lbfgs'求解器和冗长级别> 1,收敛信息包括迭代来自中间微型批量LBFGS的日志。

例子:'verbose',1

数据类型:|单身的

求解要素类型的求解器类型,指定为包括的逗号分隔对'求解'以及以下其中之一:

  • “lbfgs”-有限内存Broyden-Fletcher-Goldfarb-Shanno(LBFGS)算法

  • “sgd”-随机梯度下降(SGD)算法

  • 'minibatch-lbfgs'-随机梯度下降与LBFGS算法应用于小批量

默认为“lbfgs”对于n≤ 1000,以及“sgd”对于n> 1000。

例子:'求解','minibatch-lbfgs'

损失函数,指定为逗号分隔对组成'损失'下面是其中之一。

  • 'classiferror'- 错误分类错误

    l y y j 1 如果 y y j 0 否则

  • 损失义务- 自定义丢失功能手柄。损失函数具有此表格。

    功能l = lockfun(yu,yv)%计算损失......
    是一个u1向量和青年志愿是一个v1的向量。l是一个u-经过-v损失值的矩阵L (i, j)损失价值是多少Yu(我)yv(j)

最小化的目标函数包括损耗功能lyyj如下:

f w 1 n σ. 1 n σ. j 1 j n p j l y y j + λ. σ. r 1 p w r 2

在哪里w是特征权重矢量,n是观察的次数,和p是预测变量的数量。pij有没有可能xj是参考点x.有关详细信息,请参阅NCA分类功能选择

例子:“LossFunction”,@lossfun

用于目标函数和梯度计算的内存大小(MB),指定为逗号分隔对,由'缓存'和一个整数。

例子:“缓存大小”,1500MB

数据类型:|单身的

LBFGS选项

全部崩溃

对象的Hessian近似的历史缓冲区大小“lbfgs”求解器,指定为逗号分隔的对组成“HessianHistorySize”一个正整数。在每次迭代中,函数使用最新的Hessianhistorysize迭代来建立逆Hessian的近似。

例子:'Hessianhistorysize',20

数据类型:|单身的

的初始步长“lbfgs”求解器,指定为逗号分隔的对组成“初始步长”和一个积极的标量。默认情况下,该函数自动确定初始步长。

数据类型:|单身的

行搜索方法,指定为逗号分隔对,由“LineSearchMethod”以及以下其中之一:

  • “weakwolfe”- 弱狼队搜索

  • “strongwolfe”-强Wolfe线搜索

  • “回溯”-回溯线搜索

例子:'linearchmethod','backtracking'

最大线路搜索迭代次数,指定为逗号分隔的配对“MaxLineSearchIterations”一个正整数。

例子:'maxlinesearch jeray',25

数据类型:|单身的

求解器梯度范数的相对收敛容限lbfgs,指定为逗号分隔对,由'gradienttolerance'和一个积极的标量。

例子:'gradienttolerance',0.000002

数据类型:|单身的

SGD选项

全部崩溃

初始学习率“sgd”求解器,指定为逗号分隔的对组成“InitialLearningRate”和一个积极的标量。

使用求解器类型时“sgd”时,学习率从指定的值开始随着迭代次数递减“InitialLearningRate”

默认值“汽车”这意味着初始学习率是通过对小数据子集的实验确定的。使用NumTuningIterations名称值对参数指定自动调整初始学习率的迭代次数。使用调整aubsetsize名称值对参数指定用于自动调整初始学习速率的观察次数。

解算器类型'minibatch-lbfgs',你可以设置“InitialLearningRate”非常高的价值。在这种情况下,该函数将LBFGS分别应用于每个小批次,并使用来自前一个小批次的初始特征权重。

为了确保选择的初始学习率随着每次迭代而降低目标值,请绘制迭代与之与客观的保存在中的值mdl。FitInfo财产。

你可以使用改装方法“InitialFeatureWeights”等于特征权重从当前解决方案开始并运行额外的迭代

例子:'InitialLearningrate',0.9

数据类型:|单身的

每个批量使用的观察数“sgd”求解器,指定为逗号分隔的对组成“MiniBatchSize”和1到1的正整数n

例子:“MiniBatchSize”,25岁

数据类型:|单身的

全部全部通过的最大次数n求解器的观察“sgd”,指定为逗号分隔对,由'passlimit'一个正整数。每次通过所有数据都称为时代。

例子:“通行限制”,10

数据类型:|单身的

显示集合摘要的批处理频率“sgd”解算器,指定为逗号分隔的对,由“NumPrint”一个正整数。这个论点适用于“详细”值大于0。NumPrint对命令行显示的收敛摘要的每一行进行mini-batch处理。

例子:'numprint',5

数据类型:|单身的

系统的优化迭代次数“sgd”求解器,指定为逗号分隔的对组成“numtunigitations”一个正整数。此选项仅对'InitialLearningrate','auto'

例子:“NumTuningIterations”,15

数据类型:|单身的

用于调整初始学习率的观察数,指定为逗号分隔对,由'调整aubsetsize'以及1到1的正整数值n.此选项仅对'InitialLearningrate','auto'

例子:'调整aubsetsize',25

数据类型:|单身的

新加坡元或LBFGS期权

全部崩溃

最大迭代次数,由逗号分隔对组成“迭代限制”一个正整数。对于SGD和LBFGS和Mini-Batch LBFG的SGD和1000,默认值为10000。

每次通过批处理都是迭代。每次通过所有数据都是一个时代。如果数据被分成k迷你批次,那么每一个时代都相当于k迭代。

例子:“迭代限制”,250

数据类型:|单身的

收敛公差上的步长,指定为逗号分隔对组成'steptolerance'和一个积极的标量。这“lbfgs”解算器使用绝对步长公差,并且“sgd”求解器使用相对阶梯公差。

例子:“步进公差”,0.000005

数据类型:|单身的

迷你批量LBFGS选项

全部崩溃

每个小批量LBFGS步骤的最大迭代次数,指定为逗号分隔对,包括'minibatchlbfgsitorations'一个正整数。

例子:'MINIBATCHLBFGSITIONS',15

小批量LBFGS算法是SGD和LBFGS方法的组合。因此,适用于SGD和LBFGS解算器的所有名称-值对参数也适用于小批量LBFGS算法。

数据类型:|单身的

输出参数

全部崩溃

邻域成分分析模型进行分类,返回为FeatureSelectionNCAClassification目的。

介绍了R2016b