使用分类邻里成分分析的特征选择
生成,响应变量取决于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临床蛋白质组学计划数据库。经过一些预处理步骤,该数据集有两个变量:OBS
和GRP
。该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
X
-预测变量值预测器变量值,指定为ñ-通过-p矩阵,其中ñ是观测值的数量和p是预测变量的数目。
数据类型:单
|双
ÿ
-类标签类标签,指定为分类矢量,逻辑矢量,数值向量,字符串数组,长度的字符向量的单元阵列ñ或字符矩阵与ñ行,其中ñ是观测值的数量。元件一世或行一世的ÿ
对应于行类的标签一世的X
(观察一世)。
数据类型:单
|双
|合乎逻辑
|烧焦
|字符串
|细胞
|明确的
指定可选的用逗号分隔的对名称,值
参数。的名字
是参数的名称和值
是对应的值。的名字
必须出现引号内。您可以按照任何顺序指定多个名称和值对参数名1,值1,...,NameN,值N
。
'解算器', 'SGD', '权重',W, 'LAMBDA',0.0003
指定求解器为随机梯度下降,观察权值为向量中的值w ^
,将正则化参数设置为0.0003。
'使用fitmethod'
-拟合模型方法'精确'
(默认)|'没有'
|'平均'
方法拟合模型,指定为逗号分隔对所组成'使用fitmethod'
和以下情况之一:
'精确'
- 执行使用所有数据的拟合。
'没有'
- 无配件。使用此选项使用在调用fscnca提供的初始特征权评估NCA模型的泛化误差。
'平均'
- 将所述数据划分为分区(子集),使用适合的每个分区精确
方法,并且返回的平均特征权重。您可以使用指定的分区数NumPartitions
名称 - 值对的参数。
例:'使用fitmethod', '无'
'NumPartitions'
-分区数MAX(2,分钟(10,ñ))
(默认)|2之间的整数ñ分区的号码拆分数据使用'使用fitmethod', '平均'
选项,指定为逗号分隔的一对组成的'NumPartitions'
和2之间的整数值ñ,其中ñ是观测值的数量。
例:'NumPartitions',15
数据类型:双
|单
“拉姆达”
-正则参数正则化参数,以防止过度拟合,指定为逗号分隔的一对组成的“拉姆达”
和一个非负标量。
随着观测次数ñ增加,过拟合的机会减少,所需的正则化量也减少。看到识别相关的特征以便分类和调整调整参数来检测功能使用NCA的分类学习如何调整正则化参数。
例:'LAMBDA',0.002
数据类型:双
|单
“LengthScale”
-内核的宽度1
(默认)|正实标宽度的内核,指定为逗号分隔对所组成的“LengthScale”
和正实标。
当所有预测器都在相同的标度上时,长度标度值1是合理的。如果预测者在X
有很大的不同幅度,那么可以考虑使用标准化的预测值“标准化”,真
和设置'长度尺度',1
。
例:'长度尺度',1.5
数据类型:双
|单
'InitialFeatureWeights'
-初始特征的权重者(P,1)
(默认)|p×1实正标量的向量初始特征权重,指定为逗号分隔的一对组成的'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”
|“新元”
|'minibatch-lbfgs'
求解器类型用于估计特征权重,指定为逗号分隔对所组成的“求解”
和以下情况之一:
“lbfgs”
- 有限的存储器的Broyden-弗莱彻-戈德法布-Shanno无(LBFGS)算法
“新元”
- 随机梯度下降(SGD)算法
'minibatch-lbfgs'
-应用随机梯度下降与LBFGS算法的小批量
默认值是“lbfgs”
对于ñ≤1000,“新元”
对于ñ> 1000。
例:'求解', 'minibatch-lbfgs'
“LossFunction”
-损失函数'classiferror'
(默认)|功能手柄损耗函数,指定为逗号分隔的一对组成的“LossFunction”
与下列情况之一。
'classiferror'
- 误分
@
- 自定义损失函数句柄。损失函数具有这种形式。lossfun
功能L = lossfun(于,YV)损失的%计算…
宇
是一个ü×1矢量和YV
是一个v×1向量。大号
是一个ü-通过-v损失的矩阵值,使得L(I,J)
对于损耗值宇(I)
和YV(J)
。为最小化的目标函数包括丧失功能升(ÿ一世,ÿĴ)如下:
在哪里w ^是特征权重向量,ñ是观察的次数,和p是预测变量的数目。pIJ是的概率XĴ为基准点X一世。有关详细信息,请参阅用于分类的NCA特征选择。
例:'LossFunction',@ lossfun
'的CacheSize'
-内存大小1000MB
(默认)|整数存储器大小(MB),以用于目标函数和梯度计算,指定为逗号分隔的一对组成的'的CacheSize'
和一个整数。
例:'CacheSize的',1500MB
数据类型:双
|单
'HessianHistorySize'
-用于Hessian近似的历史缓冲区的大小15
(默认)|正整数历史缓冲区的大小为黑森州逼近“lbfgs”
解算器,指定为逗号分隔的一对组成的'HessianHistorySize'
一个正整数。在每次迭代中,函数使用最新的HessianHistorySize
迭代建立一个近似的逆黑森。
例:'HessianHistorySize',20
数据类型:双
|单
'InitialStepSize'
-初始步长大小'汽车'
(默认)|正实标初始步骤的规模的“lbfgs”
解算器,指定为逗号分隔的一对组成的'InitialStepSize'
和正实标。缺省情况下,函数自动确定初始步长。
数据类型:双
|单
“LineSearchMethod”
-线搜索方法“weakwolfe”
(默认)|'strongwolfe'
|“回溯”
线搜索方法中,指定为逗号分隔的一对组成的“LineSearchMethod”
和以下情况之一:
“weakwolfe”
- 弱Wolfe线搜索
'strongwolfe'
- 强Wolfe线搜索
“回溯”
- 回溯线搜索
例:'LineSearchMethod', '回溯'
'MaxLineSearchIterations'
-线搜索最大迭代次数20.
(默认)|正整数线搜索的迭代的最大次数,指定为逗号分隔的一对组成的'MaxLineSearchIterations'
一个正整数。
例:'MaxLineSearchIterations',25
数据类型:双
|单
'GradientTolerance'
-相对收敛容差1 e-6
(默认)|正实标求解器对梯度范数的相对收敛容忍度lbfgs
,指定为逗号分隔的一对组成的'GradientTolerance'
和正实标。
例:'GradientTolerance',0.000002
数据类型:双
|单
“InitialLearningRate”
-最初的学习率“新元”
解算器'汽车'
(默认)|正实标初始学习速率为“新元”
解算器,指定为逗号分隔的一对组成的“InitialLearningRate”
和正实标。
当使用类型解算器“新元”
,学习率衰减了迭代开始值指定“InitialLearningRate”
。
默认'汽车'
装置,所述初始学习速率使用上的数据的子集的小实验确定。使用NumTuningIterations
参数指定自动调优初始学习速率的迭代次数。使用TuningSubsetSize
参数指定用于自动调优初始学习速率的观察次数。
为了求解类型'minibatch-lbfgs'
,你可以设置“InitialLearningRate”
到非常高的价值。在这种情况下,该函数分别应用到LBFGS每个小批量和来自先前小批量初始特征权重。
为了确保所选择的初始学习率降低每次迭代的客观价值,情节迭代
相对于目的
值保存在mdl.FitInfo
属性。
你可以使用改装
法'InitialFeatureWeights'
等于mdl.FeatureWeights
从目前的解决方案启动和运行额外的迭代
例:“InitialLearningRate”, 0.9
数据类型:双
|单
“MiniBatchSize”
-观察数在每批次为使用“新元”
解算器观察数在每批次为使用“新元”
解算器,指定为逗号分隔的一对组成的“MiniBatchSize”
和一个正整数从1到ñ。
例:“MiniBatchSize”, 25岁
数据类型:双
|单
“PassLimit”
-通行证解算器的最大数量“新元”
五
(默认)|正整数通过所有道的最大数量ñ为求解意见“新元”
,指定为逗号分隔的一对组成的“PassLimit”
一个正整数。每一次通过所有的数据称为一次历元。
例:'PassLimit',10
数据类型:双
|单
'NumPrint'
-批次的频率显示收敛汇总批次的频率显示收敛摘要“新元”
指定为逗号分隔对所组成的'NumPrint'
一个正整数。这个论点适用于“放牧”
值大于0。NumPrint
迷你批被处理为所显示的命令行上的收敛总结每一行。
例:'NumPrint',5
数据类型:双
|单
'NumTuningIterations'
-调整迭代次数调整迭代的次数“新元”
解算器,指定为逗号分隔的一对组成的'NumTuningIterations'
一个正整数。此选项仅对。有效“InitialLearningRate”、“汽车”
。
例:'NumTuningIterations',15
数据类型:双
|单
'TuningSubsetSize'
-观察数用于调整最初的学习速度观察到使用数用于调谐初始学习速率,指定为逗号分隔的一对组成的'TuningSubsetSize'
和正整数值从1到ñ。此选项仅对。有效“InitialLearningRate”、“汽车”
。
例:'TuningSubsetSize',25
数据类型:双
|单
'IterationLimit'
-最大迭代次数最大迭代次数,指定为逗号分隔的一对组成的'IterationLimit'
一个正整数。默认值是SGD的10000,LBFGS和迷你批LBFGS的1000。
批处理的每一次传递都是一次迭代。每一次经过的所有数据都是一个历元。如果数据被分成ķ小批量,那么每一个时代相当于ķ迭代。
例:'IterationLimit',250
数据类型:双
|单
“StepTolerance”
-步长收敛容忍度上步长收敛容差,指定为逗号分隔的一对组成的“StepTolerance”
和正实标。该“lbfgs”
解算器使用一个绝对的一步宽容,和“新元”
求解器使用相对步骤的耐受性。
例:'StepTolerance',0.000005
数据类型:双
|单
“MiniBatchLBFGSIterations”
-每小批LBFGS步骤的最大迭代次数每小批量最大迭代次数LBFGS步骤,指定为逗号分隔的一对组成的“MiniBatchLBFGSIterations”
一个正整数。
例:“MiniBatchLBFGSIterations”, 15
小批量LBFGS算法是SGD和LBFGS相结合的方法。因此,所有适用于SGD和LBFGS求解器的名称 - 值对的论点也适用于小批量LBFGS算法。
数据类型:双
|单
MDL
- 邻居分类成分分析模型FeatureSelectionNCAClassification
目的邻域分量分析模型进行分类,返回为aFeatureSelectionNCAClassification
目的。
您单击对应于该MATLAB命令的链接:
通过在MATLAB命令窗口中输入该命令来运行该命令。Web浏览器不支持MATLAB命令。万博1manbetx
您还可以选择从下面的列表中的网站:
选择最佳的网站性能的中国网站(在中国或英文)。其他MathWorks的国家网站都没有从您的位置访问进行了优化。