fscnca
使用邻域成分分析进行特征选择分类
描述
例子
利用NCA检测数据中的相关特征进行分类
生成玩具数据,其中响应变量依赖于第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”,“详细”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 | | |e-01 -6.255669 | 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 | -6.279210 e-01 | 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 e-01 | 9.290605 | 2.560000 e + 01 | | 1 | 19 e-01 | -6.131382 | 4.923625 e-02 e-01 | 7.421541 | 1.280000 e + 01 | | 2 | 29 e-01 | -6.225056 | 3.738784 e-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 | final step的相对两个norm = 2.946e-01, TolX = 1.000e-06 EXIT: Iteration or pass limit reached。
绘制选定的特征图。不相关特征的权重应该接近于零。
图()图(mdl。FeatureWeights,“罗”网格)在包含(“功能指数”) ylabel (“功能重量”)
fscnca
正确检测相关特征。
识别相关特征进行分类
加载样例数据
负载ovariancancer;谁
名称大小字节类属性grp 216x1 25056 cell obs 216x4000 3456000 single
本例使用使用WCX2蛋白阵列生成的高分辨率卵巢癌数据集。经过一些预处理步骤后,数据集有两个变量:奥林匹克广播服务公司
而且grp
.的奥林匹克广播服务公司
变量由216个观测值和4000个特征组成。中的每个元素grp
的对应行定义所属的组奥林匹克广播服务公司
属于。
将数据分为训练集和测试集
使用cvpartition
将数据分为大小为160的训练集和大小为56的测试集。训练集和测试集都有大致相同的组比例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 (Lambda = 0)
nca = fscnca(Xtrain,ytrain,“FitMethod”,“准确”,“λ”,0,...“规划求解”,“sgd”,“标准化”,真正的);L =损失(nca,Xtest,ytest)
L = 0.0714
损失值的改善表明特征选择是一个好主意。调优 价值通常会改善结果。
使用五倍交叉验证优化NCA的正则化参数
调优 意味着找到 产生最小分类损失的值。调优 使用交叉验证:
1.将训练数据划分为5个折叠,并提取验证(测试)集的数量。对于每一次折叠,cvpartition
将五分之四的数据分配为训练集,五分之一的数据分配为测试集。
CVP = cvpartition(ytrain,“kfold”5);numvalidsets = cvp.NumTestSets;
分配 值并创建一个数组来存储损失函数值。
N = length(ytrain);Lambdavals = linspace(0,20,20)/n;Lossvals = 0(长度(lambdavals),numvalidsets);
2.训练每一个的NCA模型 值,在每个折叠中使用训练集。
3.使用NCA模型计算折叠中相应测试集的分类损失。记录损失值。
4.重复这个过程的所有折叠和所有 值。
为I = 1:长度(lambda)为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) = loss(nca,Xvalid,yvalid,“LossFunction”,“classiferror”);结束结束
计算从每个折叠中获得的平均损失 价值。
Meanloss = mean(lossvals,2);
画出平均损失值与 值。
图()图(lambdavals meanloss,“ro - - - - - -”)包含(“λ”) ylabel (“损失(MSE)”网格)在
找出与最小平均损失对应的最佳lambda值。
[~,idx] = min(meanloss)查找索引
Idx = 2
Bestlambda = lambdavals(idx)找到最好的lambda值
Bestlambda = 0.0066
最佳损失=平均损失(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 |e-01 10 2.560000 e + 01 | | | -7.260138 | 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.560000 e + 01 | | 15 | -7.260138 e-01 | 2.560000 e + 01 | | 16 | -7.260138 e-01 | 2.560000 e + 01 | | 17 | -7.260138 e-01 | 2.560000 e + 01 | | 18 e-01 | -7.260138 | 2.560000 e + 01 | | e-01 19 | -7.260138 | 2.560000 e + 01 | | 20 e-01 | -7.260138 | 2.560000 e + 01 | o解决= SGD MiniBatchSize = 10,PassLimit = 5 |==========================================================================================| | 通过| ITER | AVG MINIBATCH | AVG MINIBATCH |规范一步学习| | | | | |娱乐价值规范研究生| |率 | |==========================================================================================| | 0 | 9 e + 00 | 4.016078 | 2.835465 e-02 e + 00 | 5.395984 | 2.560000 e + 01 | | 1 | 19 e-01 | -6.726156 | 6.111354 e-02 e-01 | 5.021138 | 1.280000 e + 01 | | 1 | 29 e-01 | -8.316555 | 4.024186 e-02 |1.196031 e + 00 | 1.280000 e + 01 | | 2 | 39 e-01 | -8.838656 | 2.333416 e-02 e-01 | 1.225834 | 8.533333 e + 00 | | 3 | 49 e-01 | -8.669034 | 3.413162 e-02 e-01 | 3.421902 | 6.400000 e + 00 | | 3 | 59 e-01 | -8.906936 | 1.946295 e-02 e-01 | 2.232511 | 6.400000 e + 00 | | 4 | 69 | -8.778630 e-01 e-02 | 3.561290 | 3.290645 e-01 | 5.120000 e + 00 | | 4 | 79 | -8.857135 e-01 e-02 | 2.516638 | 3.902979 e-01 | 5.120000 e + 00 |最后一步= 3.903的两个规范e-01相对最后一步= 6.171 e 03的两个标准,TolX = 1.000e-06 EXIT:达到迭代或通过限制。
绘制特征权重。
图()(nca情节。FeatureWeights,“罗”)包含(“功能指数”) 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,ytest)
L = 0.0179
利用选定的特征对观测数据进行分类
从训练数据中提取出特征权重大于0的特征。
features = Xtrain(:,selidx);
将使用所选特征的金宝app支持向量机分类器应用于缩减的训练集。
svmMdl = fitcsvm(特征,ytrain);
评估训练分类器在未用于选择特征的测试数据上的准确性。
L = loss(svmMdl,Xtest(:,selidx),ytest)
L =单0
输入参数
X
- - - - - -预测变量值
n——- - - - - -p矩阵
预测变量值,指定为n——- - - - - -p矩阵,n观察的次数和p是预测变量的数量。
数据类型:单
|双
Y
- - - - - -类标签
分类向量|逻辑向量|数值向量|字符串数组|长度字符向量的单元格数组n|字符矩阵n行
类标签,指定为类别向量、逻辑向量、数字向量、字符串数组、长度字符向量的单元格数组n,或字符矩阵与n行,n是观测的数量。元素我或行我的Y
类标签是否对应于行我的X
(观察我).
数据类型:单
|双
|逻辑
|字符
|字符串
|细胞
|分类
名称-值参数
指定可选参数对为Name1 = Value1,…,以=家
,在那里的名字
参数名称和价值
对应的值。名称-值参数必须出现在其他参数之后,但对的顺序无关紧要。
在R2021a之前,使用逗号分隔每个名称和值,并将其括起来的名字
在报价。
例子:“规划求解”,“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
数据类型:双
|单
λ
- - - - - -正则化参数
1 /n(默认)|负的标量
正则化参数以防止过拟合,指定为由逗号分隔的对组成“λ”
一个非负标量。
作为观察的数量n增加,过拟合的机会减少,所需的正则化量也减少。看到识别相关特征进行分类而且调整正则化参数,使用NCA进行分类了解如何调优正则化参数。
例子:“λ”,0.002
数据类型:双
|单
LengthScale
- - - - - -核的宽度
1
(默认)|正实标量
内核的宽度,指定为逗号分隔的对,由“LengthScale”
和一个正的实标量。
当所有预测器都在同一尺度上时,长度尺度值1是合理的。如果预测器在X
是非常不同的大小,然后考虑标准化预测值使用“标准化”,真的
和设置“LengthScale”,1
.
例子:“LengthScale”,1.5
数据类型:双
|单
InitialFeatureWeights
- - - - - -初始特征权重
的(p, 1)
(默认)|p-by-1向量的实正标量
初始特征权重,由逗号分隔的对组成“InitialFeatureWeights”
和一个p-by-1向量的实正标量,其中p是训练数据中预测器的数量。
优化特征权值的正则化目标函数是非凸的。因此,使用不同的初始特征权重可以得到不同的结果。将所有初始特征权重设置为1通常效果很好,但在某些情况下,随机初始化使用兰特(p, 1)
能给出更好的质量解决方案。金宝搏官方网站
数据类型:双
|单
权重
- - - - - -观察权重
n-乘1的1s向量(默认)|n-by-1向量的实正标量
观察权重,由逗号分隔的对组成“重量”
和一个n-by-1向量的实正标量。使用观测权重来指定某些观测值比其他观测值更重要。默认权重赋予所有观察值同等重要。
数据类型:双
|单
之前
- - - - - -每个类的先验概率
“经验”
(默认)|“统一”
|结构
每个类的先验概率,由逗号分隔的对组成“之前”
和以下其中之一:
“经验”
- - - - - -fscnca
从类频率中获取先验类概率。“统一”
- - - - - -fscnca
设置所有类概率相等。结构,包含两个字段:
ClassProbs
-职业概率向量。如果这些数值的总和大于1,fsnca
使它们加起来等于1。一会
中类概率对应的类名ClassProbs
.
例子:“前”、“制服”
标准化
- - - - - -用于标准化预测器数据的指标
假
(默认)|真正的
详细的
- - - - - -详细级别指示器
0(默认)|1|> 1
收敛摘要显示的详细级别指示器,指定为由逗号分隔的对组成“详细”
和以下其中之一:
0 -没有收敛摘要
1 -收敛总结,包括梯度范数和目标函数值
> 1 -更多的收敛信息,取决于拟合算法
当使用
“minibatch-lbfgs”
求解器和详细级别> 1,收敛信息包括迭代日志从中间小批量LBFGS拟合。
例子:“详细”,1
数据类型:双
|单
解算器
- - - - - -解算器类型
“lbfgs”
|“sgd”
|“minibatch-lbfgs”
用于估计特征权重的求解器类型,指定为逗号分隔的对,由“规划求解”
和以下其中之一:
“lbfgs”
-有限内存Broyden-Fletcher-Goldfarb-Shanno (LBFGS)算法“sgd”
-随机梯度下降(SGD)算法“minibatch-lbfgs”
随机梯度下降与LBFGS算法应用于小批量
默认是“lbfgs”
为n≤1000,且“sgd”
为n> 1000。
例子:“规划求解”、“minibatch-lbfgs”
LossFunction
- - - - - -损失函数
“classiferror”
(默认)|函数处理
损失函数,指定为逗号分隔的对,由“LossFunction”
下面是其中之一。
“classiferror”
-分类错误@
-自定义丢失函数句柄。损失函数是这样的。lossfun
函数L = lossfun(Yu,Yv)损失百分比计算...
余
是一个u-by-1向量和青年志愿
是一个v1的向量。l
是一个u——- - - - - -v矩阵的损失值L (i, j)
损失的价值是什么Yu(我)
而且青年志愿(j)
.
最小化的目标函数包括损失函数l(y我,yj)如下:
在哪里w是特征权向量,n是观察数,和p是预测变量的数量。pij概率是xj参考点是什么x我.详细信息请参见分类的NCA特征选择.
例子:LossFunction, @lossfun
CacheSize
- - - - - -内存大小
1000 mb
(默认)|整数
内存大小(以MB为单位),用于目标函数和梯度计算,指定为逗号分隔的对,由“CacheSize”
一个整数。
例子:“CacheSize”,1500 mb
数据类型:双
|单
HessianHistorySize
- - - - - -黑森近似的历史缓冲区大小
15
(默认)|正整数
的Hessian近似的历史缓冲区大小“lbfgs”
求解器,指定为逗号分隔的对,由“HessianHistorySize”
一个正整数。在每次迭代中,函数使用最新的HessianHistorySize
迭代来建立逆黑森的近似。
例子:“HessianHistorySize”,20
数据类型:双
|单
InitialStepSize
- - - - - -初始步长
“汽车”
(默认)|正实标量
的初始步长“lbfgs”
求解器,指定为逗号分隔的对,由“InitialStepSize”
和一个正的实标量。缺省情况下,该函数自动确定初始步长。
数据类型:双
|单
LineSearchMethod
- - - - - -直线搜索法
“weakwolfe”
(默认)|“strongwolfe”
|“回溯”
行搜索方法,指定为由逗号分隔的对组成“LineSearchMethod”
和以下其中之一:
“weakwolfe”
-弱沃尔夫线搜索“strongwolfe”
-强沃尔夫线搜索“回溯”
—回溯线搜索
例子:“LineSearchMethod”、“回溯”
MaxLineSearchIterations
- - - - - -最大行搜索迭代次数
20.
(默认)|正整数
行搜索迭代的最大次数,指定为逗号分隔的对,由“MaxLineSearchIterations”
一个正整数。
例子:“MaxLineSearchIterations”,25岁
数据类型:双
|单
GradientTolerance
- - - - - -相对收敛公差
1 e-6
(默认)|正实标量
求解器在梯度范数上的相对收敛公差lbfgs
,指定为逗号分隔的对,由“GradientTolerance”
和一个正的实标量。
例子:“GradientTolerance”,0.000002
数据类型:双
|单
InitialLearningRate
- - - - - -初始学习率“sgd”
解算器
“汽车”
(默认)|正实标量
的初始学习率“sgd”
求解器,指定为逗号分隔的对,由“InitialLearningRate”
和一个正的实标量。
使用求解器类型时“sgd”
时,学习率从指定的值开始在迭代中衰减“InitialLearningRate”
.
默认的“汽车”
意味着初始学习率是通过在小数据子集上的实验确定的。使用NumTuningIterations
参数指定用于自动调优初始学习率的迭代次数。使用TuningSubsetSize
名称-值对参数指定用于自动调优初始学习率的观察数。
求解器类型“minibatch-lbfgs”
,您可以设置“InitialLearningRate”
到一个很高的值。在这种情况下,该函数将LBFGS分别应用于每个小批,初始特征权重来自前一个小批。
为了确保所选择的初始学习率在每次迭代中都会降低目标值,请绘制迭代
兑客观的
保存在mdl。FitInfo
财产。
您可以使用改装
方法“InitialFeatureWeights”
等于mdl。FeatureWeights
从当前的解决方案开始并运行额外的迭代
例子:“InitialLearningRate”,0.9
数据类型:双
|单
MiniBatchSize
- - - - - -每批所使用的观察数“sgd”
解算器
分钟(10,n)(默认)|正整数值,从1到n
每批所使用的观察数“sgd”
求解器,指定为逗号分隔的对,由“MiniBatchSize”
从1到的正整数n.
例子:“MiniBatchSize”,25岁
数据类型:双
|单
PassLimit
- - - - - -求解器的最大通过数“sgd”
5
(默认)|正整数
通过所有通道的最大次数n求解器的观察“sgd”
,指定为逗号分隔的对,由“PassLimit”
一个正整数。每一次通过所有数据被称为一个epoch。
例子:“PassLimit”,10
数据类型:双
|单
NumPrint
- - - - - -显示收敛摘要的批量频率
10(默认)|正整数值
用于显示收敛摘要的批的频率“sgd”
求解器,指定为逗号分隔的对,由“NumPrint”
一个正整数。此论点适用于“详细”
Value大于0。NumPrint
对于显示在命令行上的收敛摘要的每一行,都将处理小批量。
例子:“NumPrint”,5
数据类型:双
|单
NumTuningIterations
- - - - - -调优迭代次数
20.(默认)|正整数
的调优迭代次数“sgd”
求解器,指定为逗号分隔的对,由“NumTuningIterations”
一个正整数。此选项仅适用于“InitialLearningRate”、“汽车”
.
例子:“NumTuningIterations”,15
数据类型:双
|单
TuningSubsetSize
- - - - - -用于调整初始学习率的观察数
分钟(100n)(默认)|正整数值,从1到n
用于调优初始学习率的观察数,指定为由逗号分隔的对组成“TuningSubsetSize”
从1到的正整数n.此选项仅适用于“InitialLearningRate”、“汽车”
.
例子:“TuningSubsetSize”,25岁
数据类型:双
|单
IterationLimit
- - - - - -最大迭代次数
正整数
最大迭代次数,指定为由逗号分隔的对组成的“IterationLimit”
一个正整数。SGD的默认值是10000,LBFGS和小批量LBFGS的默认值是1000。
每一次批处理都是一次迭代。每次通过所有数据都是一个epoch。如果将数据划分为k小批量,那么每个epoch都等价于k迭代。
例子:“IterationLimit”,250年
数据类型:双
|单
StepTolerance
- - - - - -步长上的收敛容差
1 e-6(默认)|正实标量
步长上的收敛容差,指定为由逗号分隔的对组成“StepTolerance”
和一个正的实标量。的“lbfgs”
求解器使用绝对步长公差,并且“sgd”
求解器使用相对步长公差。
例子:“StepTolerance”,0.000005
数据类型:双
|单
MiniBatchLBFGSIterations
- - - - - -每个小批量LBFGS步骤的最大迭代次数
10(默认)|正整数
每个小批LBFGS步骤的最大迭代次数,指定为由逗号分隔的对组成“MiniBatchLBFGSIterations”
一个正整数。
例子:“MiniBatchLBFGSIterations”,15
数据类型:双
|单
请注意
小批量LBFGS算法是SGD和LBFGS方法的结合。因此,适用于SGD和LBFGS求解器的所有名值对参数也适用于小批量LBFGS算法。
输出参数
mdl
-邻域成分分析模型进行分类
FeatureSelectionNCAClassification
对象
邻域成分分析模型进行分类,返回为FeatureSelectionNCAClassification
对象。
版本历史
在R2016b中引入
Abrir比如
Tiene una versión modificada de este ejemplo。¿Desea abrir este ejemplo con sus modificaciones?
MATLAB突击队
Ha hecho clic en unenlace que对应一个este commando de MATLAB:
弹射突击队introduciéndolo en la ventana de commandos de MATLAB。Los navegadores web no permission comandos de MATLAB。
您也可以从以下列表中选择一个网站:
如何获得最佳的网站性能
选择中国站点(中文或英文)以获得最佳站点性能。其他MathWorks国家站点没有针对您所在位置的访问进行优化。