fscnca

使用分类邻里成分分析的特征选择

描述

MDL= fscnca(Xÿ执行特征选择用于使用的预测因子分类X和反应ÿ

fscnca通过使用与正则化邻里成分分析(NCA)的对角自适应学习的特征权重。

MDL= fscnca(Xÿ名称,值执行特征选择用于与由一个或多个名称值对参数中指定的附加选项分类。

例子

全部收缩

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

rng (0,“扭腰”);%用于重现N = 100;X =兰特(N,20);Y =  - 酮(N,1);Y(X(:,3)* X(:,9)./ X(:,15)​​<0.4)= 1;

适合分类邻里成分分析模型。

MDL = fscnca(X,Y,“求解”“新元”“放牧”,1);
O优化初始学习速率:NumTuningIterations = 20,TuningSubsetSize = 100 | =============================================== ||TUNING |TUNING SUBSET |学习||ITER |FUN VALUE |利率|| =============================================== | | 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,'RO')网格xlabel(“功能指数”)ylabel(“特征权重”

fscnca正确地检测相关的特征。

加载样本数据

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

此示例使用是使用WCX2蛋白质阵列产生高分辨率卵巢癌的数据集。的数据是从FDA-NCI临床蛋白质组学计划数据库。经过一些预处理步骤,该数据集有两个变量:OBSGRP。该OBS变量由216个观测与4000层的功能。中的每个元素GRP的对应行所对应的组OBS属于。

将数据分成训练和测试集

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

RNG(1);%用于重现CVP = cvpartition(GRP,'坚持',56)
cvp =持有交叉验证分区NumObservations: 216 NumTestSets: 1 TrainSize: 160 TestSize: 56
Xtrain = OBS(cvp.training,:);ytrain = GRP(cvp.training,:);XTEST = OBS(cvp.test,:);ytest = GRP(cvp.test,:);

确定是否特征选择是必要的

计算泛化误差不配合。

nca = fscnca (Xtrain ytrain,'使用fitmethod''没有');L =损失(NCA,XTEST,ytest)
L = 0.0893

此选项计算在所提供的附近分量分析(NCA),使用初始特征权重(在该情况下,默认特征权重)的特征选择模型的泛化误差fscnca

配合NCA没有正则化参数(波长= 0)

nca = fscnca (Xtrain ytrain,'使用fitmethod''精确'“拉姆达”,0,“求解”“新元”“标准化”,真正);L =损失(NCA,XTEST,ytest)
L = 0.0714

对损失值的改进表明特征选择是一个好方法。调优 λ 价值通常会改善结果。

调使用NCA正则化参数个5倍交叉验证

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

1.将训练数据分成五层,提取验证(测试)集的数目。对于每一个褶皱,cvpartition受让人的数据作为训练集的五分之四,和五分之一中的数据作为测试组。

CVP = cvpartition(ytrain,“kfold”,5);numvalidsets = cvp.NumTestSets;

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

N =长度(ytrain);lambdavals = linspace(0,20,20)/ N;lossvals =零(长度(lambdavals),numvalidsets);

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''精确'“求解”“新元”“拉姆达”lambdavals(我),'IterationLimit'30,'GradientTolerance'1的军医,“标准化”,真正);lossvals(I,K)=损失(NCA,Xvalid,yvalid,“LossFunction”'classiferror');结束结束

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

meanloss =意味着(lossvals, 2);

画出平均损失值相对于 λ 值。

图()图(lambdavals,meanloss,“滚装”)xlabel(“拉姆达”)ylabel('损失(MSE)')网格

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

[〜,IDX] =分钟(meanloss)%查找索引
idx = 2
bestlambda = lambdavals(IDX)%寻找最佳的λ值
bestlambda = 0.0066
bestloss = meanloss (idx)
bestloss = 0.0250

适合使用最好的所有数据NCA模型 λ 并绘制要素权重

使用求解lbfgs和规范的预测值。

nca = fscnca (Xtrain ytrain,'使用fitmethod''精确'“求解”“新元”“拉姆达”,bestlambda,“标准化”,真的,“放牧”,1);
O优化初始学习速率:NumTuningIterations = 20,TuningSubsetSize = 100 | =============================================== ||TUNING |TUNING SUBSET |学习||ITER |FUN VALUE |利率|| =============================================== | | 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.024185e-02 | 1.196030e+00 | 1.280000e+01 | | 2 | 39 | -8.838656e-01 | 2.333418e-02 | 1.225839e-01 | 8.533333e+00 | | 3 | 49 | -8.669035e-01 | 3.413150e-02 | 3.421881e-01 | 6.400000e+00 | | 3 | 59 | -8.906935e-01 | 1.946293e-02 | 2.232510e-01 | 6.400000e+00 | | 4 | 69 | -8.778630e-01 | 3.561283e-02 | 3.290643e-01 | 5.120000e+00 | | 4 | 79 | -8.857136e-01 | 2.516633e-02 | 3.902977e-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.FeatureWeights,'RO')xlabel(“功能指数”)ylabel(“特征权重”)网格

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

TOL = 0.02;selidx =查找(nca.FeatureWeights> TOL *最大(1,MAX(nca.FeatureWeights)))
selidx =72×1565 611 654 681 737 743 744 750 754 839⋮

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

L =损失(NCA,XTEST,ytest)
L = 0.0179

分类观测使用所选择的特征

提取与要素权重大于0从训练数据的功能。

特征= Xtrain(:,selidx);

使用所选择的特征万博1manbetx来减小的训练集应用一个支持向量机分类器。

svmMdl = fitcsvm(特性,ytrain);

评估上尚未用于选择功能测试数据训练过的分类的准确性。

L =损失(svmMdl,XTEST(:,selidx),ytest)
L =0

输入参数

全部收缩

预测器变量值,指定为ñ-通过-p矩阵,其中ñ是观测值的数量和p是预测变量的数目。

数据类型:|

类标签,指定为分类矢量,逻辑矢量,数值向量,字符串数组,长度的字符向量的单元阵列ñ或字符矩阵与ñ行,其中ñ是观测值的数量。元件一世或行一世ÿ对应于行类的标签一世X(观察一世)。

数据类型:||合乎逻辑|烧焦|字符串|细胞|明确的

名称 - 值对参数

指定可选的用逗号分隔的对名称,值参数。的名字是参数的名称和是对应的值。的名字必须出现引号内。您可以按照任何顺序指定多个名称和值对参数名1,值1,...,NameN,值N

例:'解算器', 'SGD', '权重',W, 'LAMBDA',0.0003指定求解器为随机梯度下降,观察权值为向量中的值w ^,将正则化参数设置为0.0003。

合适的选项

全部收缩

方法拟合模型,指定为逗号分隔对所组成'使用fitmethod'和以下情况之一:

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

  • '没有'- 无配件。使用此选项使用在调用fscnca提供的初始特征权评估NCA模型的泛化误差。

  • '平均'- 将所述数据划分为分区(子集),使用适合的每个分区精确方法,并且返回的平均特征权重。您可以使用指定的分区数NumPartitions名称 - 值对的参数。

例:'使用fitmethod', '无'

分区的号码拆分数据使用'使用fitmethod', '平均'选项,指定为逗号分隔的一对组成的'NumPartitions'和2之间的整数值ñ,其中ñ是观测值的数量。

例:'NumPartitions',15

数据类型:|

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

随着观测次数ñ增加,过拟合的机会减少,所需的正则化量也减少。看到识别相关的特征以便分类调整调整参数来检测功能使用NCA的分类学习如何调整正则化参数。

例:'LAMBDA',0.002

数据类型:|

宽度的内核,指定为逗号分隔对所组成的“LengthScale”和正实标。

当所有预测器都在相同的标度上时,长度标度值1是合理的。如果预测者在X有很大的不同幅度,那么可以考虑使用标准化的预测值“标准化”,真和设置'长度尺度',1

例:'长度尺度',1.5

数据类型:|

初始特征权重,指定为逗号分隔的一对组成的'InitialFeatureWeights'p×1实阳性标量,其中的矢量p为训练数据中预测因子的数量。

优化要素权重正规化目标函数非凸。其结果是,使用不同的初始要素权重,可以得到不同的结果。所有的初始要素权重设置为1,总体运行良好,但在某些情况下,随机初始化使用兰特(P,1)可以提供更好品质的解决方案。万博 尤文图斯

数据类型:|

观察权重,指定为逗号分隔的一对组成的'ObservationWeights'ñ实正标量的-1乘1向量。使用观测权值来指定某些观测值相对于其他观测值的较高重要性。默认的权重对所有观测值赋予同等的重要性。

数据类型:|

每个类的先验概率,指定为逗号分隔对所组成的“在此之前”和以下情况之一:

  • “经验”-fscnca取得现有类概率从类频率。

  • “统一”-fscnca将所有类的概率相等。

  • 结构有两个字段:

    • ClassProbs- 类概率的矢量。如果这些是具有大于1总更大的数值,fsnca标准化他们加起来为1。

    • 类名- 对应于某个类的概率类名ClassProbs

例:“前”、“制服”

用于标准化预测数据指示符,指定为逗号分隔的一对组成的“标准化”,要么要么真正。有关更多信息,请参见标准化的影响

例:“标准化”,真

数据类型:合乎逻辑

为收敛概要显示详细级别指示符,指定为逗号分隔的一对组成的“放牧”和以下情况之一:

  • 0 - 没有收敛汇总

  • 1 - 收敛摘要,包括梯度的范数和目标函数值

  • > 1 - 更收敛信息,根据不同的拟合算法上

    当使用'minibatch-lbfgs'解算器和详细级别> 1时,收敛性信息包括迭代从中间小批量LBFGS配合日志。

例:“详细”,1

数据类型:|

求解器类型用于估计特征权重,指定为逗号分隔对所组成的“求解”和以下情况之一:

  • “lbfgs”- 有限的存储器的Broyden-弗莱彻-戈德法布-Shanno无(LBFGS)算法

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

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

默认值是“lbfgs”对于ñ≤1000,“新元”对于ñ> 1000。

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

损耗函数,指定为逗号分隔的一对组成的“LossFunction”与下列情况之一。

  • 'classiferror'- 误分

    ÿ 一世 ÿ Ĵ = { 1 如果 ÿ 一世 ÿ Ĵ 0 除此以外

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

    功能L = lossfun(于,YV)损失的%计算
    是一个ü×1矢量和YV是一个v×1向量。大号是一个ü-通过-v损失的矩阵值,使得L(I,J)对于损耗值宇(I)YV(J)

为最小化的目标函数包括丧失功能ÿ一世ÿĴ如下:

F w ^ = 1 ñ 一世 = 1 ñ Ĵ = 1 Ĵ 一世 ñ p 一世 Ĵ ÿ 一世 ÿ Ĵ + λ [R = 1 p w ^ [R 2

在哪里w ^是特征权重向量,ñ是观察的次数,和p是预测变量的数目。pIJ是的概率XĴ为基准点X一世。有关详细信息,请参阅用于分类的NCA特征选择

例:'LossFunction',@ lossfun

存储器大小(MB),以用于目标函数和梯度计算,指定为逗号分隔的一对组成的'的CacheSize'和一个整数。

例:'CacheSize的',1500MB

数据类型:|

LBFGS选项

全部收缩

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

例:'HessianHistorySize',20

数据类型:|

初始步骤的规模的“lbfgs”解算器,指定为逗号分隔的一对组成的'InitialStepSize'和正实标。缺省情况下,函数自动确定初始步长。

数据类型:|

线搜索方法中,指定为逗号分隔的一对组成的“LineSearchMethod”和以下情况之一:

  • “weakwolfe”- 弱Wolfe线搜索

  • 'strongwolfe'- 强Wolfe线搜索

  • “回溯”- 回溯线搜索

例:'LineSearchMethod', '回溯'

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

例:'MaxLineSearchIterations',25

数据类型:|

求解器对梯度范数的相对收敛容忍度lbfgs,指定为逗号分隔的一对组成的'GradientTolerance'和正实标。

例:'GradientTolerance',0.000002

数据类型:|

SGD选项

全部收缩

初始学习速率为“新元”解算器,指定为逗号分隔的一对组成的“InitialLearningRate”和正实标。

当使用类型解算器“新元”,学习率衰减了迭代开始值指定“InitialLearningRate”

默认'汽车'装置,所述初始学习速率使用上的数据的子集的小实验确定。使用NumTuningIterations参数指定自动调优初始学习速率的迭代次数。使用TuningSubsetSize参数指定用于自动调优初始学习速率的观察次数。

为了求解类型'minibatch-lbfgs',你可以设置“InitialLearningRate”到非常高的价值。在这种情况下,该函数分别应用到LBFGS每个小批量和来自先前小批量初始特征权重。

为了确保所选择的初始学习率降低每次迭代的客观价值,情节迭代相对于目的值保存在mdl.FitInfo属性。

你可以使用改装'InitialFeatureWeights'等于mdl.FeatureWeights从目前的解决方案启动和运行额外的迭代

例:“InitialLearningRate”, 0.9

数据类型:|

观察数在每批次为使用“新元”解算器,指定为逗号分隔的一对组成的“MiniBatchSize”和一个正整数从1到ñ

例:“MiniBatchSize”, 25岁

数据类型:|

通过所有道的最大数量ñ为求解意见“新元”,指定为逗号分隔的一对组成的“PassLimit”一个正整数。每一次通过所有的数据称为一次历元。

例:'PassLimit',10

数据类型:|

批次的频率显示收敛摘要“新元”指定为逗号分隔对所组成的'NumPrint'一个正整数。这个论点适用于“放牧”值大于0。NumPrint迷你批被处理为所显示的命令行上的收敛总结每一行。

例:'NumPrint',5

数据类型:|

调整迭代的次数“新元”解算器,指定为逗号分隔的一对组成的'NumTuningIterations'一个正整数。此选项仅对。有效“InitialLearningRate”、“汽车”

例:'NumTuningIterations',15

数据类型:|

观察到使用数用于调谐初始学习速率,指定为逗号分隔的一对组成的'TuningSubsetSize'和正整数值从1到ñ。此选项仅对。有效“InitialLearningRate”、“汽车”

例:'TuningSubsetSize',25

数据类型:|

SGD或LBFGS选项

全部收缩

最大迭代次数,指定为逗号分隔的一对组成的'IterationLimit'一个正整数。默认值是SGD的10000,LBFGS和迷你批LBFGS的1000。

批处理的每一次传递都是一次迭代。每一次经过的所有数据都是一个历元。如果数据被分成ķ小批量,那么每一个时代相当于ķ迭代。

例:'IterationLimit',250

数据类型:|

上步长收敛容差,指定为逗号分隔的一对组成的“StepTolerance”和正实标。该“lbfgs”解算器使用一个绝对的一步宽容,和“新元”求解器使用相对步骤的耐受性。

例:'StepTolerance',0.000005

数据类型:|

Mini-Batch LBFGS选项

全部收缩

每小批量最大迭代次数LBFGS步骤,指定为逗号分隔的一对组成的“MiniBatchLBFGSIterations”一个正整数。

例:“MiniBatchLBFGSIterations”, 15

小批量LBFGS算法是SGD和LBFGS相结合的方法。因此,所有适用于SGD和LBFGS求解器的名称 - 值对的论点也适用于小批量LBFGS算法。

数据类型:|

输出参数

全部收缩

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

介绍了在R2016b