使用邻域分量分析的特征选择进行分类
生成响应变量取决于第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”,'verbose',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('特征重量')
FSCNCA
正确检测相关功能。
加载样本数据
加载卵巢癌;谁是
名称大小字节类属性grp 216x1 25056 cell obs 216x4000 3456000 single
该示例使用使用WCX2蛋白质阵列产生的高分辨率卵巢癌数据集。在某些预处理步骤之后,数据集具有两个变量:obs.
和GRP.
.这obs.
变量由4000个功能组成216个观察。每个元素GRP.
定义相应行的组obs.
属于。
将数据划分为培训和测试集
采用CVPartition.
将数据划分为大小160的训练集和大小56的测试集。训练集和测试集都具有大致相同的组比例GRP.
.
RNG(1);重复性的%本量利= cvpartition (grp,'坚持',56)
CVP =保持交叉验证分区NumObServations:216 NumTestSets:1列塔:160 Testsize:56
奥林匹克广播服务公司(Xtrain = cvp.training:);ytrain = grp (cvp.training:);奥林匹克广播服务公司(Xtest = cvp.test:);欧美= 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.将培训数据分为五个折叠,提取验证数(测试)集。每折,CVPartition.
将四分之五的数据分配为培训集,以及作为测试集的第五个数据。
cvp = 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:长度(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),......'iterationlimit',30,'gradienttolerance',1e-4,......'标准化',真正的);lossvals (i (k) =损失(nca, Xvalid yvalid,'损失','classiferror');结尾结尾
计算每个折叠的平均损耗 价值。
Meanloss =卑鄙(损失,2);
绘制平均损失值与 价值观。
图()绘图(Lambdavals,Meanloss,'ro-')Xlabel(“λ”)ylabel(“损失(MSE)”) 网格在
找到与最小平均损耗相对应的最佳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,'标准化',真的,'verbose',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('特征重量') 网格在
使用要素权重和相对阈值选择功能。
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);
使用所选功能应用万博1manbetx支持向量机分类器到减少的训练集。
svmmdl = fitcsvm(特征,ytrain);
评估训练有素的分类器对未用于选择特征的测试数据的准确性。
L =损耗(SVMMDL,XTEST(:,SELIDX),YTEST)
l =单身的0
X
- - - - - -预测变量值预测值变量值,指定为一个n-经过-p矩阵,n是观察人数和p是预测变量的数量。
数据类型:单身的
|双倍的
Y
- - - - - -类标签类标签,指定为类别向量、逻辑向量、数字向量、字符串数组、长度为字符向量的单元格数组n,或字符矩阵n行,在哪里n是观察人数。元素我或划船我的Y
是对应于行的类标签我的X
(观察我)。
数据类型:单身的
|双倍的
|逻辑
|char
|细绳
|细胞
|分类
指定可选的逗号分离对名称,价值
论点。名称
是参数名称和价值
是相应的价值。名称
必须出现在引号内。您可以以任何顺序指定多个名称和值对参数name1,value1,...,namen,valuen
.
'求解','sgd','重量',w,'lambda',0.0003
指定作为随机梯度下降的求解器,观察权重用为载体中的值W
,并将正则化参数设置为0.0003。
'fitmethod'
- - - - - -模型拟合方法'精确的'
(默认)|'没有任何'
|'平均'
拟合模型的方法,指定为逗号分隔对组成'fitmethod'
以及以下其中之一:
'精确的'
- 使用所有数据执行拟合。
'没有任何'
- 没有配件。使用此选项可使用对FSCNCA中的呼叫中提供的初始功能权重评估NCA模型的泛化误差。
'平均'
- 将数据划分为分区(子集),使用每个分区使用精确的
方法,并返回特征权重的平均值。您可以使用该分区指定分区数NumPartitions
名称-值对的论点。
例子:'fitmethod','没有'
'numpartitions'
- - - - - -分区数量最多(2,min(10,n)))
(默认)|2到2之间的整数n用于分割数据的分区数目'fitmethod','平均'
选项,指定为逗号分隔的配对组成'numpartitions'
和2之间的整数值n, 在哪里n是观察人数。
例子:“NumPartitions”,15
数据类型:双倍的
|单身的
“λ”
- - - - - -正则化参数正则化参数防止过拟合,指定为逗号分隔对组成“λ”
和一个非负标量。
作为观察人数n增加,过度装备的机会降低,所需的正则化量也降低。看确定分类的相关功能和调整正常化参数以检测使用NCA进行分类的功能要了解如何调整正则化参数。
例子:“λ”,0.002
数据类型:双倍的
|单身的
'lifferscale'
- - - - - -核宽1
(默认)|积极的真正标量内核的宽度,指定为逗号分隔对'lifferscale'
一个正的实标量。
当所有预测器处于相同的规模时,长度比例值1是明智的。如果是预测因素X
具有非常不同的大小,然后考虑使用标准化预测值值“标准化”,真的
和设置'LengeScale',1
.
例子:'LengeScale',1.5
数据类型:双倍的
|单身的
'InitialFeaturewuights'
- - - - - -初始特征权重(p,1)
(默认)|p实正量的- × 1向量初始特征权重,指定为逗号分隔对,由'InitialFeaturewuights'
A.p-1个真正正标量的1载体,在哪里p是培训数据中的预测器数量。
优化特征权重的正则化目标函数是非凸的。因此,使用不同的初始特征权重可以得到不同的结果。将所有初始功能权重设置为1通常很有效,但在某些情况下,随机初始化使用兰特(P,1)
可以提供更好的质量解决方案。万博 尤文图斯
数据类型:双倍的
|单身的
“重量”
- - - - - -观察权重观察权值,指定为逗号分隔的对,由'观察重量'
和n- 1个真正正标量的向量。与其他人相比,使用观察权重指定一些观察的重要性。默认权重分配对所有观察的同等重要。
数据类型:双倍的
|单身的
'事先的'
- - - - - -每个班级的概率'经验'
(默认)|'制服'
|结构体每个类的先前概率,指定为逗号分隔的配对组成'事先的'
以及以下其中之一:
'经验'
- - - - - -FSCNCA
从类频率获取先前的类概率。
'制服'
- - - - - -FSCNCA
设置相同的所有类概率。
具有两个字段的结构:
classprobs.
- 类概率矢量矢量图。如果这些是数值,则总量大于1,fsnca
将它们标准化为最多1。
一会
- 与类概率相对应的类名classprobs.
.
例子:'先前','制服'
'标准化'
- - - - - -标准化预测器数据的指标错误的
(默认)|真的
'verbose'
- - - - - -冗长级别指标融合摘要显示的详细级别指示器,指定为逗号分隔对'verbose'
以及以下其中之一:
0 - 没有收敛摘要
1 -收敛总结,包括梯度范数和目标函数值
> 1 -更多的收敛信息,取决于拟合算法
使用时'minibatch-lbfgs'
求解器和冗长级别> 1,收敛信息包括迭代来自中间微型批量LBFGS的日志。
例子:'verbose',1
数据类型:双倍的
|单身的
'求解'
- - - - - -求解器类型'lbfgs'
|“sgd”
|'minibatch-lbfgs'
求解要素类型的求解器类型,指定为包括的逗号分隔对'求解'
以及以下其中之一:
'lbfgs'
- 有限的记忆泡沫 - 弗莱彻 - 戈尔科 - 桑诺(LBFGS)算法
“sgd”
-随机梯度下降(SGD)算法
'minibatch-lbfgs'
- 随机梯度下降与LBFGS算法应用于迷你批次
默认为'lbfgs'
为了n≤1000,和“sgd”
为了n> 1000。
例子:'求解','minibatch-lbfgs'
'损失'
- - - - - -损失功能'classiferror'
(默认)|功能手柄损失函数,指定为逗号分隔对组成'损失'
下面是其中之一。
'classiferror'
- 错误分类错误
@
-自定义丢失功能处理。损失函数是这样的形式。损失义务
功能l = lockfun(yu,yv)%计算损失......
yu.
是A.u1向量和yv.
是A.v1的向量。l
是A.u-经过-v损失值的矩阵L (i, j)
是损失价值俞(i)
和yv(j)
.最小化的目标函数包括损耗功能l(y我,yj)如下:
在哪里w是特征权重矢量,n是观察人数,和p是预测变量的数量。pIJ.是可能的概率xj是参考点x我.有关详细信息,请参阅NCA分类功能选择.
例子:'损失功能',@ lockfun
'缓存'
- - - - - -内存大小1000 mb
(默认)|整数内存大小,在MB中,用于目标函数和渐变计算,指定为逗号分隔的对组成'缓存'
和一个整数。
例子:'CacheSize',1500MB
数据类型:双倍的
|单身的
“HessianHistorySize”
- - - - - -Hessian近似的历史缓冲区的大小15.
(默认)|正整数悲伤缓冲区的大小,用于Hessian近似'lbfgs'
求解器,指定为逗号分隔的对组成“HessianHistorySize”
和一个正整数。在每次迭代时,该函数使用最近的Hessianhistorysize
迭代以构建反向黑森州的近似。
例子:“HessianHistorySize”,20
数据类型:双倍的
|单身的
'initalstepsize'
- - - - - -初始步长“汽车”
(默认)|积极的真正标量的初始步长'lbfgs'
求解器,指定为逗号分隔的对组成'initalstepsize'
一个正的实标量。默认情况下,该函数自动确定初始步长。
数据类型:双倍的
|单身的
'linearchmethod'
- - - - - -线搜索方法'弱狼'
(默认)|'strongwolfe'
|'回溯'
线路搜索方法,指定为逗号分隔对组成'linearchmethod'
以及以下其中之一:
'弱狼'
- 弱狼队搜索
'strongwolfe'
- 强沃尔夫线搜索
'回溯'
- 回溯线搜索
例子:“LineSearchMethod”、“回溯”
'maxlinesearch jorients'
- - - - - -最大线路搜索迭代次数20.
(默认)|正整数最大线路搜索迭代次数,指定为逗号分隔的配对'maxlinesearch jorients'
和一个正整数。
例子:'maxlinesearch jeray',25
数据类型:双倍的
|单身的
'gradienttolerance'
- - - - - -相对收敛耐受性1E-6
(默认)|积极的真正标量求解器梯度标准的相对收敛耐受性LBFGS.
,指定为逗号分隔的配对组成'gradienttolerance'
一个正的实标量。
例子:'gradienttolerance',0.000002
数据类型:双倍的
|单身的
'InitialLearningrate'
- - - - - -初始学习率“sgd”
求解器“汽车”
(默认)|积极的真正标量初始学习率“sgd”
求解器,指定为逗号分隔的对组成'InitialLearningrate'
一个正的实标量。
使用求解器类型时“sgd”
,学习速率衰减在指定的值开始的迭代上'InitialLearningrate'
.
默认值“汽车”
意味着使用关于小数据集的实验确定初始学习率。使用numtuning韵
名称值对参数指定自动调整初始学习率的迭代次数。使用调整aubsetsize
名称值对参数指定用于自动调整初始学习速率的观察次数。
解算器类型'minibatch-lbfgs'
,你可以设置'InitialLearningrate'
一个非常高的价值。在这种情况下,该功能将LBFG分别应用于每个迷你批处理,与前一个迷你批次的初始特征权重。
为了确保所选择的初始学习率降低了每次迭代的客观值,请绘制迭代
与之与客观的
保存在的值mdl.fitinfo.
财产。
你可以使用改装
方法'InitialFeaturewuights'
等于mdl.featureweights.
从当前解决方案开始并运行其他迭代
例子:'InitialLearningrate',0.9
数据类型:双倍的
|单身的
'minibatchsize'
- - - - - -每个批量使用的观察数“sgd”
求解器每个批量使用的观察数“sgd”
求解器,指定为逗号分隔的对组成'minibatchsize'
和1到1的正整数n.
例子:'小匹匹匹匹匹马',25
数据类型:双倍的
|单身的
'passlimit'
- - - - - -求解器的最大通行证数“sgd”
5
(默认)|正整数全部全部通过的最大次数n求解器的观察“sgd”
,指定为逗号分隔的配对组成'passlimit'
和一个正整数。每次通过所有数据都称为时代。
例子:'passlimit',10
数据类型:双倍的
|单身的
'numprint'
- - - - - -显示聚合摘要的批次频率用于显示收敛摘要的批次频率“sgd”
求解器,指定为逗号分隔的对组成'numprint'
和一个正整数。此论点适用于此'verbose'
值大于0。NumPrint
对命令行显示的收敛摘要的每一行进行mini-batch处理。
例子:“NumPrint”,5
数据类型:双倍的
|单身的
'numtuning jill'
- - - - - -优化迭代次数调整迭代的数量“sgd”
求解器,指定为逗号分隔的对组成'numtuning jill'
和一个正整数。此选项仅适用于'InitialLearningrate','auto'
.
例子:“NumTuningIterations”,15
数据类型:双倍的
|单身的
'调整aubsetsize'
- - - - - -用于调整初始学习率的观察次数用于调整初始学习率的观察数,指定为包括的逗号分隔对'调整aubsetsize'
以及1到1的正整数值n.此选项仅适用于'InitialLearningrate','auto'
.
例子:'调整aubsetsize',25
数据类型:双倍的
|单身的
'iterationlimit'
- - - - - -最大迭代次数最大迭代次数,由逗号分隔对组成'iterationlimit'
和一个正整数。对于SGD和LBFGS和Mini-Batch LBFG的SGD和1000,默认值为10000。
每次通过批处理都是迭代。每次通过所有数据都是一个时代。如果数据被分成k迷你批次,那么每一个时代都相当于k迭代。
例子:'iterationlimit',250
数据类型:双倍的
|单身的
'steptolerance'
- - - - - -步长对衔接公差步骤大小的融合公差,指定为逗号分隔对组成'steptolerance'
一个正的实标量。这'lbfgs'
求解器使用绝对的步长,以及“sgd”
求解器使用相对阶梯公差。
例子:'steptolerance',0.000005
数据类型:双倍的
|单身的
'minibatchlbfgsitorations'
- - - - - -每百分比批量LBFGS步骤最大迭代次数每个迷你批量LBFGS步骤的最大迭代次数,指定为包括的逗号分隔对'minibatchlbfgsitorations'
和一个正整数。
例子:'MINIBATCHLBFGSITIONS',15
Mini-Batch LBFGS算法是SGD和LBFGS方法的组合。因此,适用于SGD和LBFGS求解器的所有名称值对参数也适用于迷你批量LBFGS算法。
数据类型:双倍的
|单身的
MDL.
- 邻域分量分析模型进行分类PeazereSelectionNcaclassification.
对象分类的邻域分量分析模型,返回ASPeazereSelectionNcaclassification.
目的。
您已经有了abgeänderte版本死亡Beispiels。Möchten您是谁? Änderungen öffnen?
Sie Haben AUF EINEN LINK GEKLICKT,DER DIESEM MATLAB-BEFEHL ONTSPRICHT:
Führensieden befehl Durch Eingabe在Das Matlab-Befehlsfenster Aus。WebBrowserUnterstützenKeineMatlab-Befehle。
您还可以从以下列表中选择一个网站:
选择中国网站(中文或英文)以获得最佳网站性能。其他MathWorks国家站点没有针对您所在位置的访问进行优化。