基于邻域分量分析的分类特征选择
生成响应变量取决于第3个,第9和第15个预测器的玩具数据。
rng (0,“旋风”);%的再现性N = 100;X =兰德(N, 20);y = 1 (N, 1);y(X(:,3).*X(:,9)./X(:,15) < 0.4) = 1;
拟合邻域成分分析模型进行分类。
mdl = fscnca(x,y,“规划求解”,“sgd”,“冗长”,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.
绘制选定的特征。不相关特征的权值应该接近于零。
figure()图(mdl.FeatureWeights,“罗”)网格在包含(“功能索引”) 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=保持交叉验证分区numobervations:216 numtestset:1列车尺寸:160测试尺寸: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、ytest)
L = 0.0893.
此选项计算使用初始特征权重(在这种情况下提供默认要素权重)的邻域分量分析(NCA)特征选择模型的泛化误差FSCNCA
.
拟合无正则化参数的NCA (Lambda = 0)
nca = fscnca (Xtrain ytrain,'fitmethod',“准确”,“λ”,0,...“规划求解”,“sgd”,“标准化”,真正的);L =损失(nca, Xtest欧美)
L = 0.0714
对损失值的改进表明特征选择是一种很好的方法。调优 值通常会改善结果。
使用五倍交叉验证调整NCA的正则化参数
调谐 意味着找到 产生最小分类损失的值。调优 使用交叉验证:
1.将训练数据分成5次,提取验证(测试)集的个数。对于每一个褶皱,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:长度(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(我),...'iterationlimit'30岁的“GradientTolerance”1的军医,...“标准化”,真正的);lossvals (i (k) =损失(nca, Xvalid yvalid,“LossFunction”,“classiferror”);结尾结尾
计算从每个折叠中获得的平均损失 价值。
meanloss =意味着(lossvals, 2);
绘制平均损失值与 价值观
图()图(lambdavals meanloss,“ro - - - - - -”)包含(“λ”) ylabel (“损失(MSE)”)网格在
找到对应于最小平均损耗的最佳λ值。
[~, idx] = min (meanloss)%查找索引
idx=2
Bestlambda = Lambdavals(IDX)%找到最好的lambda值
最佳λ=0.0066
bestloss = meanloss (idx)
bestloss = 0.0313
最好地将nca模型应用于所有数据 并绘制特征权重
使用求解器lbfgs并标准化预测值。
nca = fscnca (Xtrain ytrain,'fitmethod',“准确”,“规划求解”,“sgd”,...“λ”bestlambda,“标准化”,真的,“冗长”,1);
o调整初始学习率:NumTuningIterations = 20,TuningSubsetSize = 100 |===============================================| | | |调子集学习| | ITER | |娱乐价值率 | |===============================================| | 1 e + 01 | 2.403497 | 2.000000 e-01 | | 2 | 2.275050 e + 01 | 4.000000 e-01 | | 3 | 2.036845 e + 01 | 8.000000 e-01 | | 4 | 1.627647 e + 01 | 1.600000 e + 00 | | 5 |1.023512 e + 01 | 3.200000 e + 00 | | 6 | 3.864283 e + 6.400000 e + 00 00 | | | 7 e-01 | 4.743816 | 1.280000 e + 01 | | 8 | -7.260138 e-01 | 2.560000 e + 01 | | 9 | -7.260138 e-01 | 2.560000 e + 01 | | 10 | -7.260138 e-01 | 2.560000 e + 01 | | 11 | -7.260138 e-01 | 2.560000 e + 01 | | 12 | -7.260138 e-01 | 2.560000 e + 01 | | 13 | -7.260138 e-01 | 2.560000 e + 01 | | 14 | -7.260138 e-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情节。FeatureWeights,“罗”)包含(“功能索引”) ylabel (“功能重量”)网格在
使用特征权重和相对阈值选择特征。
托尔= 0.02;selidx = (nca找到。FeatureWeights > tol *马克斯(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)、欧美)
L =单0
X
- - - - - -预测变量值预测值变量值,指定为一个n——- - - - - -p矩阵,其中n观察的次数是多少p为预测变量的数量。
数据类型:单
|双重的
Y
- - - - - -类标签类标签,指定为类别向量、逻辑向量、数字向量、字符串数组、长度为字符向量的单元格数组n,或字符矩阵n行,n是观察数。元素我或行我的Y
类标签是否与行对应我的X
(观察我)。
数据类型:单
|双重的
|逻辑
|字符
|一串
|细胞
|分类
指定可选的逗号分离对名称,价值
参数。名称
是参数名称和价值
为对应值。名称
必须出现在引号内。您可以以任何顺序指定多个名称和值对参数Name1, Value1,…,的家
.
“规划求解”,“sgd”、“重量”,0.0003 W,“λ”
将解算器指定为随机梯度下降,将观测权重指定为向量中的值W
,并将正则化参数设置为0.0003。
FitMethod
- - - - - -模型拟合方法“准确”
(默认)|'没有任何'
|“平均”
用于拟合模型的方法,指定为逗号分隔对,由'fitmethod'
以及以下其中之一:
“准确”
-使用所有数据进行拟合。
'没有任何'
- 没有配件。使用此选项可使用对FSCNCA中的呼叫中提供的初始功能权重评估NCA模型的泛化误差。
“平均”
- 将数据划分为分区(子集),使用每个分区使用准确的
方法,并返回特征权重的平均值。属性指定分区的数目NumPartitions
名称-值对的论点。
例子:“FitMethod”、“没有”
NumPartitions
- - - - - -分区数量马克斯(2分钟(10,n)))
(默认)|2到2之间的整数n用于分割数据的分区数目“FitMethod”、“平均”
选项,指定为逗号分隔的对,由“NumPartitions”
和2之间的整数值n哪里n为观察次数。
例子:'numpartitions',15
数据类型:双重的
|单
lambda.
- - - - - -正则化参数正则化参数以防止过度装备,指定为逗号分隔对组成“λ”
一个非负标量。
作为观察人数n增加,过拟合的机会减少,所需的正则化量也减少。看到识别相关特征进行分类和调整正则化参数检测特征使用NCA分类学习如何调优正则化参数。
例子:“λ”,0.002
数据类型:双重的
|单
LengthScale
- - - - - -内核的宽度1
(默认)|积极的真正的标量内核的宽度,指定为逗号分隔对,由“长度刻度”
一个正的实标量。
当所有预测值都在同一标度上时,长度标度值1是合理的。如果预测因子在X
是非常不同的大小,然后考虑标准化的预测值使用“标准化”,真的
和设置“LengthScale”,1
.
例子:'LengeScale',1.5
数据类型:双重的
|单
InitialFeatureWeights
- - - - - -初始特征权重的(p, 1)
(默认)|p实正量的- × 1向量初始特征权重,指定为逗号分隔对,由“初始特征权重”
和一个p-1个真正正标量的1载体,在哪里p是训练数据中预测值的数量。
优化特征权重的正则化目标函数是非凸的。因此,使用不同的初始特征权重可以得到不同的结果。将所有初始功能权重设置为1通常很有效,但在某些情况下,随机初始化使用兰特(P,1)
可以提供更好的质量解决方案。万博 尤文图斯
数据类型:双重的
|单
权重
- - - - - -观察权重观察权重,指定为逗号分隔的配对组成“观测权重”
和n-实正标量的乘-1向量。使用观察权重指定某些观察的重要性高于其他观察。默认权重为所有观察值指定同等的重要性。
数据类型:双重的
|单
之前
- - - - - -每类的先验概率“经验”
(默认)|“统一”
|结构每个类的先验概率,指定为逗号分隔对,由“之前”
以及以下其中之一:
“经验”
- - - - - -FSCNCA
从类频率获取先前的类概率。
“统一”
- - - - - -FSCNCA
设置相同的所有类概率。
结构包含两个字段:
ClassProbs
-职业概率向量。如果这些数值的总和大于1,fsnca
使它们相加为1。
一会
-类名对应于类的概率ClassProbs
.
例子:“优先”,“制服”
标准化
- - - - - -标准化预测数据的指标错误的
(默认)|真正的
verb
- - - - - -冗长的水平指示器用于显示收敛摘要的详细程度指示器,指定为逗号分隔对组成“冗长”
以及以下其中之一:
0 -没有收敛总结
1 - 收敛摘要,包括梯度和目标函数值的规范
> 1 -更多的收敛信息,取决于拟合算法
使用时“minibatch-lbfgs”
求解器和详细级> 1,收敛信息包括迭代从中间小批LBFGS拟合的日志。
例子:“详细”,1
数据类型:双重的
|单
解算器
- - - - - -求解器类型“lbfgs”
|“sgd”
|“minibatch-lbfgs”
用于估计特征权重的求解器类型,指定为由逗号分隔的对组成“规划求解”
以及以下其中之一:
“lbfgs”
- 有限的记忆泡沫 - 弗莱彻 - 戈尔科 - 桑诺(LBFGS)算法
“sgd”
-随机梯度下降(SGD)算法
“minibatch-lbfgs”
-基于LBFGS算法的随机梯度下降法在小批量生产中的应用
默认为“lbfgs”
为了n≤1000,和“sgd”
为了n> 1000。
例子:“规划求解”、“minibatch-lbfgs”
LossFunction
- - - - - -损失函数“classiferror”
(默认)|功能手柄损失函数,指定为逗号分隔对组成“LossFunction”
下面是其中之一。
“classiferror”
——错误分类错误
@
- 自定义丢失功能手柄。损失函数具有此表格。lossfun
函数L = lossfun (Yu青年志愿)损失计算%...
于
是一个u-by-1矢量和伊夫
是一个v1的向量。l
是一个u——- - - - - -v损失值矩阵L (i, j)
是损失价值余(一)
和青年志愿(j)
.最小化的目标函数包括损失函数l(y我,yj)如下:
在哪里w为特征权值向量,n是观察次数,以及p为预测变量的数量。pIJ.是可能的概率xj参考点是什么x我.有关详细信息,请参见用于分类的NCA特征选择.
例子:'损失功能',@ lockfun
缓存
- - - - - -内存大小1000 mb
(默认)|整数内存大小,在MB中,用于目标函数和渐变计算,指定为逗号分隔的对组成“CacheSize”
和一个整数。
例子:“CacheSize”,1500 mb
数据类型:双重的
|单
HessianHistorySize
- - - - - -Hessian近似的历史缓冲区大小15
(默认)|正整数悲伤缓冲区的大小,用于Hessian近似“lbfgs”
解算器,指定为逗号分隔的对,由“HessianHistorySize”
和一个正整数。在每次迭代中,函数使用最新的HessianHistorySize
迭代以构建逆Hessian的近似值。
例子:“HessianHistorySize”,20
数据类型:双重的
|单
initalstepsize.
- - - - - -初始步长“汽车”
(默认)|积极的真正的标量的初始步长“lbfgs”
解算器,指定为逗号分隔的对,由'initalstepsize'
一个正的实标量。默认情况下,该函数自动确定初始步长。
数据类型:双重的
|单
LineSearchMethod
- - - - - -线路搜索方法“weakwolfe”
(默认)|'strongwolfe'
|“回溯”
线路搜索方法,指定为逗号分隔对组成“LineSearchMethod”
以及以下其中之一:
“weakwolfe”
-弱沃尔夫线搜索
'strongwolfe'
- 强沃尔夫线搜索
“回溯”
- 回溯线搜索
例子:'linearchmethod','backtracking'
MaxLineSearchIterations
- - - - - -最大行搜索迭代次数20.
(默认)|正整数最大行搜索迭代次数,指定为逗号分隔对组成'maxlinesearch jorients'
一个正整数。
例子:“MaxLineSearchIterations”,25岁
数据类型:双重的
|单
梯度特拉
- - - - - -相对收敛公差1e-6
(默认)|积极的真正的标量求解器梯度范数的相对收敛容差LBFGS.
,指定为逗号分隔的配对组成“GradientTolerance”
一个正的实标量。
例子:“GradientTolerance”,0.000002
数据类型:双重的
|单
initialLearningrate.
- - - - - -初始学习率“sgd”
解算器“汽车”
(默认)|积极的真正的标量初始学习率为“sgd”
解算器,指定为逗号分隔的对,由“初始学习率”
一个正的实标量。
当使用求解器类型“sgd”
,学习速率在从指定的值开始的迭代中衰减“初始学习率”
.
默认的“汽车”
意味着使用关于小数据集的实验确定初始学习率。使用数字运算
参数的名称-值对指定自动调优初始学习率的迭代次数。使用TuningSubsetSize
名称-值对参数,指定用于自动调整初始学习速率的观察数。
解算器类型“minibatch-lbfgs”
,您可以设置“初始学习率”
一个非常高的价值。在这种情况下,该功能将LBFG分别应用于每个迷你批处理,与前一个迷你批次的初始特征权重。
为了确保所选的初始学习率随着每次迭代而降低目标值,绘制迭代
兑客观的
保存在的值mdl.FitInfo
财产。
你可以使用改装
方法“初始特征权重”
等于mdl.featureweights.
从当前解决方案开始并运行其他迭代
例子:“InitialLearningRate”,0.9
数据类型:双重的
|单
小匹匹匹匹配
- - - - - -在每批中使用的观察数“sgd”
解算器在每批中使用的观察数“sgd”
解算器,指定为逗号分隔的对,由“MiniBatchSize”
一个正整数,从1到n.
例子:“MiniBatchSize”,25
数据类型:双重的
|单
PassLimit
- - - - - -求解器的最大通行证数“sgd”
5
(默认)|正整数通过所有的最大次数n观察对解算器“sgd”
,指定为逗号分隔的配对组成“PassLimit”
和一个正整数。所有数据的每次传递都称为一个历元。
例子:'passlimit',10
数据类型:双重的
|单
NumPrint
- - - - - -显示聚合摘要的批次频率用于显示收敛摘要的批次频率“sgd”
解算器,指定为逗号分隔对,由“NumPrint”
和一个正整数。此论点适用于以下情况:“冗长”
值大于0。NumPrint
对命令行显示的收敛摘要的每一行进行mini-batch处理。
例子:“NumPrint”,5
数据类型:双重的
|单
数字运算
- - - - - -优化迭代次数调整迭代的数量“sgd”
解算器,指定为逗号分隔的对,由“NumTuningIterations”
一个正整数。此选项仅对“初始学习率”,“自动”
.
例子:“NumTuningIterations”,15
数据类型:双重的
|单
TuningSubsetSize
- - - - - -用于调整初始学习率的观察次数用于调整初始学习率的观察数,指定为包括的逗号分隔对“TuningSubsetSize”
和一个正整数,从1到n. 此选项仅对以下情况有效:“初始学习率”,“自动”
.
例子:“TuningSubsetSize”,25岁
数据类型:双重的
|单
IterationLimit
- - - - - -最大迭代次数最大迭代次数,由逗号分隔对组成'iterationlimit'
一个正整数。缺省情况下,SGD为10000,LBFGS和mini-batch LBFGS为1000。
每次批处理都是一次迭代。所有数据的每一次传递都是一个纪元。如果将数据分成k小批量,则每个epoch等价于k迭代。
例子:'iterationlimit',250
数据类型:双重的
|单
阶跃公差
- - - - - -步长收敛公差步长上的收敛公差,指定为逗号分隔对,包括“StepTolerance”
一个正的实标量。的“lbfgs”
求解器使用绝对的步长,以及“sgd”
求解器使用相对步长公差。
例子:'steptolerance',0.000005
数据类型:双重的
|单
小型配料
- - - - - -每个小批LBFGS步骤的最大迭代次数每个小批LBFGS步骤的最大迭代次数,指定为逗号分隔对组成“MiniBatchLBFGSIterations”
一个正整数。
例子:“MiniBatchLBFGSIterations”,15
Mini-Batch LBFGS算法是SGD和LBFGS方法的组合。因此,适用于SGD和LBFGS求解器的所有名称值对参数也适用于迷你批量LBFGS算法。
数据类型:双重的
|单
有一个对应于MATLAB的代码:
在介绍MATLAB公司的情况下,纳维加多尔网站并不赞赏MATLAB公司。
你也可以从以下列表中选择一个网站:
选择中国网站(中文或英文)以获得最佳网站性能。其他MathWorks国家站点没有针对您所在位置的访问进行优化。