利用邻域成分分析进行特征选择分类
生成玩具数据,其中响应变量取决于第3、第9和第15个预测值。
RNG(0,“旋风”);%用于重现N=100;X=rand(N,20);y=-个(N,1);y(X(:,3)。*X(:,9)。/X(:,15)<0.4)=1;
拟合邻域成分分析模型进行分类。
mdl = fscnca (X, y,'解算器',“sgd”,“详细”,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,“罗”网格)在xlabel(“特色指标”)伊拉贝尔(“特征权重”)
fscnca
正确检测到相关特征。
加载样本数据
负载卵巢癌;谁是
名称大小字节类属性GRP 216x1 26784细胞OBS 216x4000 3456000单
本例使用了使用WCX2蛋白阵列生成的高分辨率卵巢癌数据集。数据来自FDA-NCI临床蛋白质组学计划资料库.经过一些预处理步骤后,数据集有两个变量:奥林匹克广播服务公司
和grp
.该奥林匹克广播服务公司
变量包括216个观测值和4000个特征。中的每个元素grp
定义组到其对应的行奥林匹克广播服务公司
所属。
将数据分为训练集和测试集
使用cvpartition
到数据划分成大小160的训练集和测试集大小56无论是训练集和测试集的具有大致相同的基团的比例在grp
.
RNG(1);%用于重现本量利= 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欧美)
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;lossvals = 0(长度(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,'LossFunction','classiferror');结束结束
计算从每个褶皱获得的平均损失 值。
meanloss =平均值(lossvals,2);
绘制平均损失值与 值。
figure()绘图(lambdavals,平均损失,“ro - - - - - -”)xlabel公司(“λ”)伊拉贝尔(“损失(MSE)”网格)在
寻找最佳的λ值对应于最小平均损失。
[~,idx] = min (meanloss)%查找索引
IDX = 2
bestlambda=lambdavals(idx)%找到最佳lambda值
bestlambda = 0.0066
bestloss = meanloss(IDX)
bestloss = 0.0250
对所有数据使用最佳的nca模型 并绘制特征权重
使用解算器lbfgs并标准化预测值。
NCA = fscnca(Xtrain,ytrain,“FitMethod”,'准确','解算器',“sgd”,...“λ”,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,“罗”)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)、欧美)
一=单0
X
—预测变量值预测变量值,指定为n-通过-p矩阵,其中n是观察的次数和p是预测变量的数目。
数据类型:单
|双
Y
—类标签类标签,指定为分类矢量,逻辑矢量,数值向量,字符串数组,长度的字符向量的单元阵列n或字符矩阵n行,n为观测值个数。元素我或行我属于Y
对应于行类的标签我属于X
(观察我).
数据类型:单
|双
|逻辑
|字符
|串
|细胞
|明确的
指定可选的逗号分隔的对名称、值
参数。名称
参数名和价值
是相应的值。名称
必须出现在引号内。可以按任意顺序指定多个名称和值对参数,如下所示名1,值1,...,NameN,值N
.
“规划求解”,“sgd”、“重量”,0.0003 W,“λ”
指定求解器作为随机梯度下降,观察权重向量中的值W
,并设置在0.0003调整参数。
“FitMethod”
—模型拟合方法'准确'
(默认)|“没有”
|'平均'
用于装配模型的方法,指定为逗号分隔的一对组成的“FitMethod”
及下列其中一项:
'准确'
-使用所有数据执行拟合。
“没有”
——不合适。使用此选项使用调用fscnca时提供的初始特征权重来评估NCA模型的泛化错误。
'平均'
-将数据划分为分区(子集),使用确切的
方法,并返回特征权重的平均值。您可以使用NumPartitions
名称-值对的论点。
例子:'使用fitmethod', '无'
'NumPartitions'
—分区数最大值(2,最小值(10,n))
(默认)|2和之间的整数n用于分割数据的分区数'使用fitmethod', '平均'
选项,指定为逗号分隔的一对组成的'NumPartitions'
以及介于2和之间的整数值n,在那里n为观测值个数。
例子:'NumPartitions',15
数据类型:双
|单
“λ”
—正则化参数正则化参数,以防止过度拟合,指定为逗号分隔的一对组成的“λ”
和一个非负标量。
作为观测值n增加,减少过度拟合的机会和所需的正规化量也减少。看到识别分类的相关特征和调整正则化参数利用NCA分类检测特征如何学会调整调整参数。
例子:“λ”,0.002
数据类型:双
|单
“长度尺度”
—内核的宽度1
(默认)|正实标内核的宽度,被指定为逗号分隔的一对组成的“长度尺度”
一个正的实标量。
当所有的预测器相同的规模的1的长度刻度值是合理的。如果在预测X
有很大的不同幅度,那么可以考虑使用标准化的预测值“标准化”,真的
和设置“长度刻度”,1
.
例子:“长度刻度”,1.5
数据类型:双
|单
“InitialFeatureWeights”
—初始特征权重者(P,1)
(默认)|p实正标量的-乘1向量初始特征权重,由逗号分隔的对组成“InitialFeatureWeights”
以及p-x-1实正标量向量,其中p是预测的训练数据的数量。
用于优化特征权值的正则化目标函数是非凸的。因此,使用不同的初始特征权重可以得到不同的结果。将所有初始特征权重设置为1通常效果良好,但在某些情况下,使用随机初始化兰特(p,1)
可以提供更好的质量解决方案。金宝搏官方网站
数据类型:双
|单
“重量”
—观察权重观察权重,指定为逗号分隔的一对组成的“ObservationWeights”
和一个n×1矢量真实阳性标量。使用观察权重指定比别人一些意见的重要性更高。默认的权重分配给所有的意见同等的重要性。
数据类型:双
|单
“在此之前”
—每一类的先验概率'经验'
(默认)|'制服'
|结构先验概率为每个类,指定为逗号分隔的一对组成的“在此之前”
及下列其中一项:
'经验'
—fscnca
从类频率中获得先验类概率。
'制服'
—fscnca
设置所有类的概率相等。
有两个领域的结构:
类问题
-类概率向量。如果这些是总数大于1的数值,fsnca
标准化他们加起来为1。
一会
-与中的类概率相对应的类名类问题
.
例子:“前”,“均匀”
“标准化”
—指标标准化预测数据假
(默认)|真的
“详细”
—详细级别指标聚合摘要显示的详细级别指示器,指定为逗号分隔对,由“详细”
及下列其中一项:
0-无收敛摘要
1 -收敛性总结,包括梯度的范数和目标函数值
更多的收敛信息,取决于拟合算法
当使用'小批量lbfgs'
解算器和详细级别> 1时,收敛性信息包括迭代从中间小批量LBFGS配合日志。
例子:'冗长',1
数据类型:双
|单
'解算器'
—解算器类型'lbfgs'
|“sgd”
|'小批量lbfgs'
解算器类型用于估计的特征权重,指定为逗号分隔的一对组成的'解算器'
及下列其中一项:
'lbfgs'
-有限内存Broyden-Fletcher-Goldfarb-Shanno(LBFGS)算法
“sgd”
-随机梯度下降(SGD)算法
'小批量lbfgs'
- 施加到微型批次,LBFGS算法随机梯度下降
默认是'lbfgs'
为n≤1000,“sgd”
为n> 1000。
例子:'求解', 'minibatch-lbfgs'
'LossFunction'
—损失函数'classiferror'
(默认)|函数处理损失函数,指定为逗号分隔对,由'LossFunction'
和下面的一个。
'classiferror'
-误分类错误
@
- 自定义损失函数句柄。损失函数具有这种形式。lossfun
功能L=损失(Yu,Yv)损失计算百分比...
余
是u1向量和青年志愿
是v1的向量。l
是u-通过-v损失值矩阵L (i, j)
是的损失值Yu(我)
和YV(J)
.为最小化的目标函数包括丧失功能l(y我,yj)如下:
哪里w是特征权重向量,n是观测值的数量,并且p是预测变量的数目。pij公司是xj是x我.有关详细信息,请参阅对于分类NCA特征选择.
例子:'lossfunt',@lossfun
'的CacheSize'
—内存大小1000 mb
(默认)|整数内存大小,以MB为单位,用于目标函数和梯度计算,指定为逗号分隔对,由'的CacheSize'
和一个整数。
例子:“缓存大小”,1500MB
数据类型:双
|单
“HessianHistorySize”
—历史缓冲区的大小近似的Hessian15
(默认)|正整数Hessian近似的历史缓冲区大小'lbfgs'
解算器,指定为逗号分隔的一对组成的“HessianHistorySize”
和一个正整数。在每次迭代函数使用最新的HessianHistorySize
迭代建立一个近似逆黑森州。
例子:'HessianHistorySize',20
数据类型:双
|单
“InitialStepSize”
—初始步长大小“汽车”
(默认)|正实标的初始步长'lbfgs'
解算器,指定为逗号分隔的一对组成的“InitialStepSize”
一个正实标量。默认情况下,该函数自动确定初始步长。
数据类型:双
|单
'LineSearchMethod'
—线搜索方法'weakwolfe'
(默认)|“strongwolfe”
|'回溯'
行搜索方法,指定为逗号分隔对,由'LineSearchMethod'
及下列其中一项:
'weakwolfe'
- 弱Wolfe线搜索
“strongwolfe”
-强Wolfe线搜索
'回溯'
-回溯线搜索
例子:'LineSearchMethod', '回溯'
“MaxLineSearchIterations”
—最大行搜索迭代次数20
(默认)|正整数线搜索的迭代的最大次数,指定为逗号分隔的一对组成的“MaxLineSearchIterations”
和一个正整数。
例子:“MaxLineSearchIterations”,25
数据类型:双
|单
'GradientTolerance'
—相对收敛公差1E-6
(默认)|正实标对求解器的梯度范相对收敛容差lbfgs
,指定为逗号分隔对,由'GradientTolerance'
一个正的实标量。
例子:'GradientTolerance',0.000002
数据类型:双
|单
'InitialLearningRate'
—初始学习率“sgd”
求解“汽车”
(默认)|正实标初始学习速率为“sgd”
解算器,指定为逗号分隔的一对组成的'InitialLearningRate'
一个正的实标量。
当使用类型解算器“sgd”
,则从指定的值开始,随着迭代的进行,学习率递减'InitialLearningRate'
.
违约“汽车”
表示初始学习速率是通过对小数据子集的实验来确定的。使用NumTuningIterations
名称 - 值对参数指定的迭代次数为自动调谐初始学习速率。使用TuningSubsetSize
名称 - 值对参数指定的观测数到使用用于自动地调整初始学习速率。
解算器类型'小批量lbfgs'
,你可以设置'InitialLearningRate'
一个非常高的值。在这种情况下,该函数将LBFGS分别应用于每个迷你批处理,初始特性权重来自前一个迷你批处理。
为了确保所选的初始学习率在每次迭代时都会降低目标值,请绘制迭代
与目的
保存在mdl.FitInfo
财产。
您可以使用改装
方法“InitialFeatureWeights”
等于mdl.FeatureWeights
从当前解决方案开始并运行额外的迭代
例子:'InitialLearningRate',0.9
数据类型:双
|单
'MiniBatchSize'
—观察数在每批次为使用“sgd”
求解观察数在每批次为使用“sgd”
解算器,指定为逗号分隔的一对组成的'MiniBatchSize'
从1到的正整数n.
例子:'MiniBatchSize',25
数据类型:双
|单
'PassLimit'
—解算器的最大通过次数“sgd”
5
(默认)|正整数通过所有道的最大数量n解算器观测“sgd”
,指定为逗号分隔对,由'PassLimit'
和一个正整数。每次通过的所有数据被称为一个划时代。
例子:“通行证”,10
数据类型:双
|单
“NumPrint”
—用于显示收敛总结的批次频率用于显示收敛汇总的批次频率“sgd”
解算器,指定为逗号分隔的一对组成的“NumPrint”
和一个正整数。这种说法适用于当“详细”
值大于0。NumPrint
在命令行上显示的聚合摘要的每一行都要处理小批处理。
例子:'NumPrint',5
数据类型:双
|单
'数字输入'
—调优迭代次数的优化迭代次数“sgd”
解算器,指定为逗号分隔的一对组成的'数字输入'
和一个正整数。此选项仅对'InitialLearningRate', '汽车'
.
例子:“NumTuningIterations”, 15
数据类型:双
|单
'TuningSubsetSize'
—用于调整初始学习速率的观察数用于调整初始学习率的观察数,指定为逗号分隔对,由'TuningSubsetSize'
和一个正整数从1到n.此选项仅对'InitialLearningRate', '汽车'
.
例子:“调整子尺寸”,25
数据类型:双
|单
“IterationLimit”
—最大迭代次数最大迭代次数,指定为逗号分隔对组成“IterationLimit”
和一个正整数。默认值是10000新元和1000 LBFGS和小批量LBFGS。
每次通过一个批次是迭代。每次通过所有的数据是一个划时代。如果数据被分成k小批量,那么每一个时代相当于k迭代。
例子:“IterationLimit”, 250年
数据类型:双
|单
'StepTolerance'
—该步进大小收敛容差步长上的收敛公差,指定为逗号分隔对组成'StepTolerance'
一个正的实标量。该'lbfgs'
解算器使用绝对步长公差,并且“sgd”
解算器使用相对步长公差。
例子:“阶跃公差”,0.000005
数据类型:双
|单
'MiniBatchLBFGSIterations'
—每小批量最大迭代次数LBFGS步骤每个小批量LBFGS步骤的最大迭代次数,指定为逗号分隔对,由'MiniBatchLBFGSIterations'
和一个正整数。
例子:'MiniBatchLBFGSIterations',15
小批量LBFGS算法是SGD和LBFGS方法的结合。因此,应用于SGD和LBFGS解算器的所有名称-值对参数也适用于小批量LBFGS算法。
数据类型:双
|单
mdl公司
-用于分类的邻域成分分析模型FeatureSelectionNCAClassification
对象邻里成分分析模型进行分类,返回为FeatureSelectionNCAClassification
反对。
你点击了一个链接,对应于这个MATLAB命令:
在MATLAB命令窗口中输入它运行的命令。Web浏览器不支持MATLAB的命令。金宝app
也可以从以下列表中选择网站:
选择中国网站(中文或英文),以获得最佳的网站表现。其他MathWorks国家站点没有针对您所在位置的访问进行优化。