主要内容

FSCNCA

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

描述

实例

mdl= fscnca (X,Y)使用中的预测器进行特征选择以进行分类X以及在Y

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

实例

mdl= fscnca (X,Y,名称,价值)执行具有由一个或多个名称值对参数指定的附加选项的分类的特征选择。

例子

全部收缩

生成响应变量取决于第3个,第9和第15个预测器的玩具数据。

rng(0,“龙卷风”);%的再现性N=100;X=rand(N,20);y=one(N,1);y(X(:,3)。*X(:,9)。/X(:,15)<0.4)=1;

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

mdl = fscnca(x,y,“解算器”,“新加坡元”,“详细”,1);
o调整初始学习率:NumTuningIterations = 20,TuningSubsetSize = 100  |===============================================| | | |调子集学习| | ITER | |娱乐价值率  | |===============================================| | 1 | -3.755936 e-01 e-01 | 2.000000 | | 2 | -3.950971 e-01 e-01 | 4.000000 | | 3 | -4.311848 e-01 e-01 | 8.000000 | | 4 | -4.903195 e-01 | 1.600000 e + 00 | | 5 |-5.630190 e-01 | 3.200000 e + 00 | | 6 | -6.166993 e-01 | 6.400000 e + 00 | | 7 | -6.255669 e-01 | 1.280000 e + 01 | | 8 | -6.255669 e-01 | 1.280000 e + 01 | | 9 | -6.255669 e-01 | 1.280000 e + 01 | | 10 | -6.255669 e-01 | 1.280000 e + 01 | | 11 | -6.255669 e-01 | 1.280000 e + 01 | | 12 | -6.255669 e-01 | 1.280000 e + 01 | | 13 | -6.255669 e-01 | 1.280000 e + 01 | | 14 |e-01 -6.279210 | 2.560000 e + 01 | | 15 | -6.279210 e-01 | 2.560000 e + 01 | | 16 | -6.279210 e-01 | 2.560000 e + 01 | | 17 | -6.279210 e-01 | 2.560000 e + 01 | | | 18 -6.279210 e-01 | 2.560000 e + 01 | | e-01 19 | -6.279210 | 2.560000 e + 01 | | 20 e-01 | -6.279210 | 2.560000 e + 01 | o解决= SGD MiniBatchSize = 10,PassLimit = 5  |==========================================================================================| | 通过| ITER | AVG MINIBATCH | AVG MINIBATCH |规范一步学习| | | | | |娱乐价值规范研究生| |率  | |==========================================================================================| | 0 | 9 e-01 | -5.658450 | 4.492407 e-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,“罗”网格)在…上包含(“功能指数”)伊拉贝尔(“功能重量”)

图包含轴对象。轴对象包含类型线的对象。

FSCNCA正确检测相关特征。

加载样本数据

加载卵巢癌;谁
名称大小字节类属性grp 216x1 25056单元obs 216x4000 3456000单个

该示例使用使用WCX2蛋白质阵列产生的高分辨率卵巢癌数据集。在某些预处理步骤之后,数据集具有两个变量:obs.GRP..的obs.变量由4000个功能组成216个观察。每个元素GRP.定义对应行所属的组obs.属于。

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

CVPartition.将数据分成大小为160的训练集和大小为56的测试集。训练集和测试集的分组比例与中的大致相同GRP.

rng (1);%的再现性cvp=cvp分区(grp,“坚持”,56)
cvp = hold out cross validation partition nummobations: 216 NumTestSets: 1 TrainSize: 160 TestSize: 56
Xtrain=obs(cvp.培训,:);ytrain=grp(cvp.培训,:);Xtest=obs(cvp.test,:);Y试验=玻璃钢(cvp试验:);

确定特征选择是否必要

不拟合计算泛化误差。

nca=fscnca(Xtrain,ytrain,'fitmethod','没有任何');L =损失(nca, Xtest欧美)
l = 0.0893.

此选项计算使用初始特征权重(在这种情况下提供默认要素权重)的邻域分量分析(NCA)特征选择模型的泛化误差FSCNCA

不带正则化参数的拟合NCA(λ=0)

nca=fscnca(Xtrain,ytrain,'fitmethod',“准确”,“拉姆达”0,...“解算器”,“新加坡元”,“标准化”,真);L=损失(nca、Xtest、ytest)
L = 0.0714

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

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

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

1.将训练数据划分为五个折叠,并提取验证(测试)集的数量。对于每个折叠,CVPartition.指定五分之四的数据作为训练集,五分之一的数据作为测试集。

本量利= cvpartition (ytrain,“kfold”5);numvalidsets = cvp.NumTestSets;

分配 λ 值并创建一个数组来存储损失函数值。

n =长度(YTrain);lambdavals = linspace(0,20,20)/ n;lockvals = zeros(长度(lambdavals),numvalidsets);

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

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

4.对所有折叠和所有折叠重复此过程 λ 值。

为了i=1:长度(λ)为了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',“准确”,...“解算器”,“新加坡元”,“拉姆达”,lambdavals(i),...'iterationlimit',30,“GradientTolerance”,1e-4,...“标准化”,真正的);lossvals (i (k) =损失(nca, Xvalid yvalid,“失去功能”,“classiferror”);结尾结尾

计算从每个折叠处获得的平均损失 λ 价值

平均损失=平均值(损失2);

绘制平均损失值与 λ 值。

figure()图(lambdavals、平均损失、,“ro - - - - - -”)xlabel(“拉姆达”)伊拉贝尔(‘损失(MSE)’网格)在…上

图包含轴对象。轴对象包含类型线的对象。

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

[~,idx]=min(平均损失)查找索引
idx = 2
Bestlambda = Lambdavals(IDX)%找到最好的lambda值
bestlambda = 0.0066
最佳损失=平均损失(idx)
最佳损失=0.0313

使用best在所有数据上拟合nca模型 λ 并绘制特征权重

使用解算器lbfgs并标准化预测值。

nca=fscnca(Xtrain,ytrain,'fitmethod',“准确”,“解算器”,“新加坡元”,...“拉姆达”bestlambda,“标准化”符合事实的“详细”,1);
第二阶段:第二阶段:第二阶段:第三阶段:第二阶段:第二阶段:第二阶段:第二阶段:第二阶段:第二阶段:第二阶段:第二阶段:第二阶段:第二阶段:第二阶段:第二阶段:第二阶段:第二阶段:第二阶段:第二阶段:第二阶段:第二阶段:第二阶段:第二阶段:第二阶段:第二阶段:第二阶段:第二阶段:第二阶段:第二阶段:第二阶段:第二阶段:第二阶段:第二阶段:第二阶段:第二阶段:第二阶段:第二阶段:第二阶段:第二阶段:第二阶段:第二阶段:第二阶段:第二阶段:第二阶段:第二阶段:第二阶段:第二阶段:第二阶段:第二阶段:第二阶段:第二阶段:第二阶段:第二阶段:第二阶段:第二阶段:第二阶段:第二阶段:第二阶段:第二阶段:第000000e-01 | 2 | 2.275050e+01 | 4.000000e-01 | 3 | 2.036845e+01 | 8.000000e-1.6万0E+00 | 5 | 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 5 5 5 5 5 4 4 4 4 4 4 4 4 5 5 5 5 5 5 4 4 4 4 4 4 4 4 4 5 5 5 5 5 5 5 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4|10 |-7.260138e-01 | 2.560000e+01 | 11 |-7.260138e-01 | 2.560000e+01 | 12 |-7.260138e-01 | 2.560000e+01 | 13 |-7.23.6.013 8E-01“2.560000e-01”2.5.5万E+01“2.5.6万E+01”2.5.6.6万E+01 12444 4 4 4.5 5\12444 4 4 4 4.6.3 3 3.6.3.3.6.6万E-01“1”1 1 1”2.3.3.3.5.5.5万E-01“1”1“1”2.5.5.5.5.5.5.5 5 5 5 5 5.5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5”第第1 存存存存存存存存存存存存存存存存存存存存存存存第第第第第第1”1 1 1 1 1 1 1“1“1“1”0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.260138e-01 | 2.560000e+01 | | 20 |-7.260138e-01 | 2.560000e+01 | o解算器=SGD,最小批量大小=10,通过限制=5|=====第二个月的第二个月的第二个月的第二个月的第第二个月的第二个第第第第二个月的第第第二个月的第第第二个月的第第二个第第第第第第第二个月的第二个月的第二个月的第二个月的第二个月的第二个月的第二个月的第二个第第二个第第第二个月的第第第二个第二个第第二个第第第第二个第第第第第二个第第二个第第二个月的第礼礼礼礼礼礼礼第第第第第第第第第第第第二个第第第第第第第第第第第第第二个月的第第第二个第第第第第第第第二个第第第第第第第第第二个月的第礼礼礼礼礼礼礼礼礼礼礼礼礼礼礼礼礼礼礼礼礼礼礼礼礼礼礼礼=======================================================================================0 | 9 | 4.016078e+00 | 2.835465e-02 | 5.395984e+00 | 2.561.6.1114 4 E-02 12445.02131313 8 E-02 12445.5.1 1 1.02131313 E-02 5.5.1 1 1.01131313 E-1 1 1.2.1 1 1.28010 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10那个那个那个那个那个那个么么么么么么么么么么么么1.2800 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5 5 5 5 5 5 5 5 5 5 5 5 5 5 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0| | 3 | 49 |-8.669034e-01 | 3.413162e-02 | 3.421902e-01 | 6.400000e+00 | | 3 | 59 |-8.906936e-01 | 1.946295e-02 1242511e-01 | 6.400000e+00 | | 4 | 69 |-8.778630e-01 | 3.561290e-02 | 3.290645e-01 12400E+00 12400E+00ば4 12400E-79 12400E-8.857135e-01む2.516638e-02ゎ3.902979e-01 1240E-01 1240E+00 1240E-01 1240E-01 1240E-01 1240E-01ば最后一步的两个范数=3.900E+00 1240E-01的相对1240E-03,或迭代达到最后一步的极限:通过次数=1716.03次。

绘制特征权重。

图()(nca情节。FeatureWeights,“罗”)xlabel(“功能指数”)伊拉贝尔(“功能重量”网格)在…上

图包含轴对象。轴对象包含类型线的对象。

使用特征权重和相对阈值选择特征。

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

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

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

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

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

功能= XTrain(:,SELIDX);

使用所选功能应用金宝app支持向量机分类器到减少的训练集。

svmMdl = fitcsvm(特性,ytrain);

对未用于选择特征的测试数据评估经过训练的分类器的准确性。

L =损失(svmMdl Xtest (:, selidx)、欧美)
l =仅有一个的0

输入参数

全部收缩

预测值变量值,指定为一个N——- - - - - -P矩阵,N是观察次数和P为预测变量的数量。

数据类型:仅有一个的|

类标签,指定为类别向量、逻辑向量、数字向量、字符串数组、长度为字符向量的单元格数组N,或具有N行,N为观察次数。元素或排属于Y类标签是否与行对应属于X(观察))。

数据类型:仅有一个的||必然的|字符|字符串|细胞|分类

名称值参数

指定可选的逗号分离对名称,价值参数。的名字是参数名称和价值是对应的值。的名字必须出现在引号内。您可以以任何顺序指定多个名称和值对参数Name1, Value1,…,的家

例子:“规划求解”,“sgd”、“重量”,0.0003 W,“λ”指定求解器为随机梯度下降,观测权值为向量中的值W,并将正则化参数设置为0.0003。
配件选项

全部收缩

模型拟合方法,指定为逗号分隔对组成'fitmethod'以及下列其中一项:

  • “准确”-使用所有数据执行拟合。

  • '没有任何'- 没有配件。使用此选项可使用对FSCNCA中的呼叫中提供的初始功能权重评估NCA模型的泛化误差。

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

例子:“FitMethod”、“没有”

要拆分数据以与一起使用的分区数“FitMethod”、“平均”选项,指定为逗号分隔的对,由“NumPartitions”和2之间的整数值N,在那里N为观察次数。

例子:“NumPartitions”,15

数据类型:|仅有一个的

用于防止过拟合的正则化参数,指定为逗号分隔对,由“拉姆达”一个非负标量。

作为观察人数N增加时,过度拟合的机会减少,所需的正则化量也减少。请参阅识别相关特征进行分类使用NCA进行分类,调整正则化参数以检测特征了解如何调整正则化参数。

例子:“λ”,0.002

数据类型:|仅有一个的

内核的宽度,指定为逗号分隔对,由“LengthScale”一个正的实标量。

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

例子:'LengeScale',1.5

数据类型:|仅有一个的

初始特征权重,指定为逗号分隔对,包括“InitialFeatureWeights”P-1个真正正标量的1载体,在哪里P为训练数据中预测器的个数。

用于优化特征权重的正则化目标函数是非凸的。因此,使用不同的初始特征权重可以得到不同的结果。将所有初始特征权重设置为1通常效果良好,但在某些情况下,使用兰特(P,1)可以提供更好质量的解决方案。金宝搏官方网站

数据类型:|仅有一个的

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

数据类型:|仅有一个的

每个类别的先验概率,指定为逗号分隔对,由“之前”以及下列其中一项:

  • “经验的”FSCNCA从类频率获取先前的类概率。

  • “制服”FSCNCA设置相同的所有类概率。

  • 结构有两个字段:

    • 类问题-类概率向量。如果这些数值的总和大于1,fsnca使它们相加为1。

    • 类名-与中的类概率相对应的类名称类问题

例子:“前”、“制服”

标准化预测器数据的指示器指定为逗号分隔的对“标准化”,要么错误的符合事实的。有关详细信息,请参阅标准化的影响

例子:“标准化”,没错

数据类型:必然的

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

  • 0 - 没有收敛摘要

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

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

    使用时“小批量lbfgs”求解器和详细级> 1,收敛信息包括迭代从中间小批LBFGS拟合的日志。

例子:“冗长”,1

数据类型:|仅有一个的

用于估计特征权重的解算器类型,指定为逗号分隔对,包括“解算器”以及下列其中一项:

  • “lbfgs”- 有限的记忆泡沫 - 弗莱彻 - 戈尔科 - 桑诺(LBFGS)算法

  • “新加坡元”-随机梯度下降(SGD)算法

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

默认为“lbfgs”为了N≤1000,和“新加坡元”为了N> 1000.

例子:“规划求解”、“minibatch-lbfgs”

损失函数,指定为逗号分隔对,由“失去功能”和下面的一个。

  • “classiferror”-误分类错误

    L ( Y , Y J ) = { 1. 如果 Y Y J , 0 否则

  • @失意-自定义丢失函数句柄。损失函数具有这种形式。

    作用L=lossfun(Yu,Yv)损失计算%...
    是一个U-by-1矢量和青年志愿是一个v-by-1向量。L是一个U——- - - - - -v损失值矩阵,以便L(i,j)是损失价值Yu(我)青年志愿(j)

最小化的目标函数包括损失函数L(Y,YJ)详情如下:

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特征选择

例子:'损失功能',@ lockfun

内存大小,在MB中,用于目标函数和渐变计算,指定为逗号分隔的对组成“CacheSize”和一个整数。

例子:'CacheSize',1500MB

数据类型:|仅有一个的

LBFGS选项

全部收缩

悲伤缓冲区的大小,用于Hessian近似“lbfgs”解算器,指定为逗号分隔的对,由“HessianHistorySize”一个正整数。在每次迭代中,函数使用最新的HessianHistorySize迭代来建立逆Hessian的近似。

例子:“HessianHistorySize”,20

数据类型:|仅有一个的

系统的初始步长“lbfgs”解算器,指定为逗号分隔的对,由'initalstepsize'和一个正实标量。默认情况下,该函数自动确定初始步长。

数据类型:|仅有一个的

线路搜索方法,指定为逗号分隔对组成“LineSearchMethod”以及下列其中一项:

  • “weakwolfe”-弱沃尔夫线搜索

  • 'strongwolfe'- 强沃尔夫线搜索

  • '回溯'- 回溯线搜索

例子:“LineSearchMethod”,“回溯”

最大行搜索迭代次数,指定为逗号分隔对组成'maxlinesearch jorients'一个正整数。

例子:“MaxLineSearchIterations”,25

数据类型:|仅有一个的

求解器梯度范数的相对收敛容限LBFGS.,指定为逗号分隔的配对组成“GradientTolerance”一个正的实标量。

例子:“GradientTolerance”,0.000002

数据类型:|仅有一个的

SGD选项

全部收缩

初始学习率为“新加坡元”解算器,指定为逗号分隔的对,由“InitialLearningRate”一个正的实标量。

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

默认值“自动”意味着使用关于小数据集的实验确定初始学习率。使用NumTuningIterations名称-值对参数,用于指定自动调整初始学习速率的迭代次数。使用TuningSubsetSize名称-值对参数,指定用于自动调优初始学习率的观察数。

对于解算器类型“小批量lbfgs”,您可以设置“InitialLearningRate”一个非常高的价值。在这种情况下,该功能将LBFG分别应用于每个迷你批处理,与前一个迷你批次的初始特征权重。

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

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

例子:“初始学习率”,0.9

数据类型:|仅有一个的

在每批中使用的观察数“新加坡元”解算器,指定为逗号分隔的对,由“MiniBatchSize”和一个从1到1的正整数N

例子:“MiniBatchSize”,25岁

数据类型:|仅有一个的

通过所有的最大次数N解算器的观测“新加坡元”,指定为逗号分隔的配对组成“通行限制”一个正整数。所有数据的每一遍被称为epoch。

例子:'passlimit',10

数据类型:|仅有一个的

用于显示收敛摘要的批次频率“新加坡元”解算器,指定为逗号分隔的对,由“NumPrint”一个正整数。这个论点适用于“详细”值大于0。NumPrint对于命令行上显示的聚合摘要的每一行,都会处理小批量。

例子:“NumPrint”,5

数据类型:|仅有一个的

调整迭代的数量“新加坡元”解算器,指定为逗号分隔的对,由'numtuning jill'一个正整数。此选项仅对“InitialLearningRate”、“汽车”

例子:“numtunigitations”,15

数据类型:|仅有一个的

用于调整初始学习率的观察数,指定为包括的逗号分隔对“TuningSubsetSize”和一个正整数,从1到N.此选项仅对“InitialLearningRate”、“汽车”

例子:“TuningSubsetSize”,25

数据类型:|仅有一个的

SGD或LBFGS选项

全部收缩

最大迭代次数,指定为逗号分隔对,由'iterationlimit'和正整数。SGD的默认值为10000,LBFGS和小批量LBFGS的默认值为1000。

通过批处理的每一次都是一次迭代。通过所有数据的每一次都是一个历元。如果数据被划分为K小批量,则每个epoch等价于K迭代。

例子:'iterationlimit',250

数据类型:|仅有一个的

收敛公差上的步长,指定为逗号分隔对组成“阶跃公差”和一个正实标量。这个“lbfgs”求解器使用绝对的步长,以及“新加坡元”解算器使用相对步长公差。

例子:'steptolerance',0.000005

数据类型:|仅有一个的

小批量LBFGS选项

全部收缩

每个迷你批量LBFGS步骤的最大迭代次数,指定为包括的逗号分隔对“MiniBatchLBFGSiteOrations”一个正整数。

例子:“MinibatchLBFGsiterements”,15

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

数据类型:|仅有一个的

输出参数

全部收缩

邻域成分分析模型进行分类,返回为FeatureSelectionNCAClassification对象

R2016b中引入