主要内容

调整正则化参数检测特征使用NCA分类

此示例显示了如何调整正则化参数FSCNCA使用交叉验证。调整正则化参数有助于正确检测数据中的相关功能。

加载示例数据。

加载(“twodimclassdata.mat”

使用[1]中描述的方案对该数据集进行模拟。这是一个二维的两类分类问题。第一类的数据来自两个二元正态分布 N μ 1 Σ N μ 2 Σ 具有相同的概率,在哪里 μ 1 = [ - 0. 7. 5. - 1 5. ] μ 2 = [ 0. 7. 5. 1 5. ] Σ = 一世 2 。类似地,来自第二类的数据是从两个二相态的正态分布中汲取的 N μ 3. Σ N μ 4. Σ 具有相同的概率,在哪里 μ 3. = [ 1 5. - 1 5. ] μ 4. = [ - 1 5. 1 5. ] Σ = 一世 2 。用于创建此数据集的正常分布参数会导致数据中的更严格的群集,而不是[1]中使用的数据。

创建按类分组的数据的散点图。

图gscatter (X (: 1), (:, 2), y)包含(x1的) ylabel (“x2”

图中包含一个轴对象。轴对象包含2个类型的类型。这些对象表示-1,1。

添加100个无关的功能 X 。首先从正常分布生成数据,其平均值为0和20的方差。

n =大小(X, 1);rng (“默认”)xwithbadfeatures = [x,randn(n,100)* sqrt(20)];

归一化数据,以使所有点在0到1之间。

xwithbadfeatures =(xwithbadfeatures-min(xwithbadfeatures,[],1))./范围(xwithbadfeatures,1);x = xwithbadfeatures;

使用默认值将NCA模型适合数据lambda.(正则化参数, λ )值。使用LBFGS求解器显示收敛信息。

ncamdl = fscnca(x,y,'fitmethod'“准确”“详细”, 1......“规划求解”“lbfgs”);
O Solver = LBFGS,HessianhistorySize = 15,LineSearchMethod =弱狼| =================================================================================================== ||磨练|有趣的价值|常规毕业|规范步骤|抑制|伽玛|alpha |接受| |====================================================================================================| | 0 | 9.519258e-03 | 1.494e-02 | 0.000e+00 | | 4.015e+01 | 0.000e+00 | YES | | 1 | -3.093574e-01 | 7.186e-03 | 4.018e+00 | OK | 8.956e+01 | 1.000e+00 | YES | | 2 | -4.809455e-01 | 4.444e-03 | 7.123e+00 | OK | 9.943e+01 | 1.000e+00 | YES | | 3 | -4.938877e-01 | 3.544e-03 | 1.464e+00 | OK | 9.366e+01 | 1.000e+00 | YES | | 4 | -4.964759e-01 | 2.901e-03 | 6.084e-01 | OK | 1.554e+02 | 1.000e+00 | YES | | 5 | -4.972077e-01 | 1.323e-03 | 6.129e-01 | OK | 1.195e+02 | 5.000e-01 | YES | | 6 | -4.974743e-01 | 1.569e-04 | 2.155e-01 | OK | 1.003e+02 | 1.000e+00 | YES | | 7 | -4.974868e-01 | 3.844e-05 | 4.161e-02 | OK | 9.835e+01 | 1.000e+00 | YES | | 8 | -4.974874e-01 | 1.417e-05 | 1.073e-02 | OK | 1.043e+02 | 1.000e+00 | YES | | 9 | -4.974874e-01 | 4.893e-06 | 1.781e-03 | OK | 1.530e+02 | 1.000e+00 | YES | | 10 | -4.974874e-01 | 9.404e-08 | 8.947e-04 | OK | 1.670e+02 | 1.000e+00 | YES | Infinity norm of the final gradient = 9.404e-08 Two norm of the final step = 8.947e-04, TolX = 1.000e-06 Relative infinity norm of the final gradient = 9.404e-08, TolFun = 1.000e-06 EXIT: Local minimum found.

绘制特征权重。不相关特征的权值应该非常接近于零。

图半径(ncamdl.featureweights,'ro')包含('特征索引') ylabel (“功能重量”网格)

图中包含一个轴对象。axis对象包含一个类型为line的对象。

所有权重都非常接近于零。表示的值 λ 用于训练的模型太大。当 λ 时,所有特征权值均趋近于零。因此,在大多数情况下,调优正则化参数以检测相关特征是很重要的。

使用五倍交叉验证进行优化 λ 使用功能选择FSCNCA。调整 λ 意味着找到 λ 将产生最小分类损失的价值。以下是调整的步骤 λ 使用交叉验证:

1.首先将数据分成5个部分。对于每一个褶皱,CVPartition.将数据作为培训集分配4/5,以及作为测试集的数据1/5。

本量利= cvpartition (y,'kfold'5);numtestsets = cvp.numtestsets;lambdavalues = linspace(0,2,20)/长度(y);损失values =零(长度(lambdavalues),numtestsets);

2.培训各个邻域分量分析(NCA)模型 λ 值使用训练集在每个折叠。

3.使用nca模型计算折叠中相应测试集的分类损失。记录损失值。

4.对所有的折叠重复这个步骤 λ 价值观。

为了i = 1:长度(lambdavalues)为了k = 1: numtestsets%从分区对象中提取训练集Xtrain = X (cvp.training (k):);ytrain = y (cvp.training (k):);%从分区对象中提取测试集Xtest = X (cvp.test (k):);欧美= y (cvp.test (k):);%培训使用培训集进行分类的NCA模型ncaMdl = fscnca (Xtrain ytrain,'fitmethod'“准确”......“规划求解”“lbfgs”'lambda',lambdavalues(i));%计算使用NCA的测试集的分类损耗%的模型lossvalues (i (k) =损失(ncaMdl Xtest,欧美,......'损失'“二次”);结尾结尾

绘制折叠的平均损失值与 λ 价值观。

图绘制(lambdavalues,意味着(lossvalues, 2),“ro - - - - - -”)包含(“λ值”) ylabel (“损失价值”网格)

图中包含一个轴对象。axis对象包含一个类型为line的对象。

找出 λ 对应于最小平均损耗的值。

[~, idx] = min(意味着(lossvalues, 2));%找到索引Bestlambda = Lambdavalues(IDX)找到最好的lambda值
Bestlambda = 0.0037.

将nca模型与所有数据进行最佳拟合 λ 价值。使用LBFGS求解器显示收敛信息。

ncamdl = fscnca(x,y,'fitmethod'“准确”“详细”, 1......“规划求解”“lbfgs”'lambda', bestlambda);
O Solver = LBFGS,HessianhistorySize = 15,LineSearchMethod =弱狼| =================================================================================================== ||磨练|有趣的价值|常规毕业|规范步骤|抑制|伽玛|alpha |接受| |====================================================================================================| | 0 | -1.246913e-01 | 1.231e-02 | 0.000e+00 | | 4.873e+01 | 0.000e+00 | YES | | 1 | -3.411330e-01 | 5.717e-03 | 3.618e+00 | OK | 1.068e+02 | 1.000e+00 | YES | | 2 | -5.226111e-01 | 3.763e-02 | 8.252e+00 | OK | 7.825e+01 | 1.000e+00 | YES | | 3 | -5.817731e-01 | 8.496e-03 | 2.340e+00 | OK | 5.591e+01 | 5.000e-01 | YES | | 4 | -6.132632e-01 | 6.863e-03 | 2.526e+00 | OK | 8.228e+01 | 1.000e+00 | YES | | 5 | -6.135264e-01 | 9.373e-03 | 7.341e-01 | OK | 3.244e+01 | 1.000e+00 | YES | | 6 | -6.147894e-01 | 1.182e-03 | 2.933e-01 | OK | 2.447e+01 | 1.000e+00 | YES | | 7 | -6.148714e-01 | 6.392e-04 | 6.688e-02 | OK | 3.195e+01 | 1.000e+00 | YES | | 8 | -6.149524e-01 | 6.521e-04 | 9.934e-02 | OK | 1.236e+02 | 1.000e+00 | YES | | 9 | -6.149972e-01 | 1.154e-04 | 1.191e-01 | OK | 1.171e+02 | 1.000e+00 | YES | | 10 | -6.149990e-01 | 2.922e-05 | 1.983e-02 | OK | 7.365e+01 | 1.000e+00 | YES | | 11 | -6.149993e-01 | 1.556e-05 | 8.354e-03 | OK | 1.288e+02 | 1.000e+00 | YES | | 12 | -6.149994e-01 | 1.147e-05 | 7.256e-03 | OK | 2.332e+02 | 1.000e+00 | YES | | 13 | -6.149995e-01 | 1.040e-05 | 6.781e-03 | OK | 2.287e+02 | 1.000e+00 | YES | | 14 | -6.149996e-01 | 9.015e-06 | 6.265e-03 | OK | 9.974e+01 | 1.000e+00 | YES | | 15 | -6.149996e-01 | 7.763e-06 | 5.206e-03 | OK | 2.919e+02 | 1.000e+00 | YES | | 16 | -6.149997e-01 | 8.374e-06 | 1.679e-02 | OK | 6.878e+02 | 1.000e+00 | YES | | 17 | -6.149997e-01 | 9.387e-06 | 9.542e-03 | OK | 1.284e+02 | 5.000e-01 | YES | | 18 | -6.149997e-01 | 3.250e-06 | 5.114e-03 | OK | 1.225e+02 | 1.000e+00 | YES | | 19 | -6.149997e-01 | 1.574e-06 | 1.275e-03 | OK | 1.808e+02 | 1.000e+00 | YES | |====================================================================================================| | ITER | FUN VALUE | NORM GRAD | NORM STEP | CURV | GAMMA | ALPHA | ACCEPT | |====================================================================================================| | 20 | -6.149997e-01 | 5.764e-07 | 6.765e-04 | OK | 2.905e+02 | 1.000e+00 | YES | Infinity norm of the final gradient = 5.764e-07 Two norm of the final step = 6.765e-04, TolX = 1.000e-06 Relative infinity norm of the final gradient = 5.764e-07, TolFun = 1.000e-06 EXIT: Local minimum found.

绘制特征权重。

图半径(ncamdl.featureweights,'ro')包含('特征索引') ylabel (“功能重量”网格)

图中包含一个轴对象。axis对象包含一个类型为line的对象。

FSCNCA正确地指出前两个特征是相关的,其余的是无关的。请注意,前两个特征单独并不能提供信息,但当把它们放在一起时,就会得到一个准确的分类模型。

参考文献

1.杨伟,王凯,左伟。高维数据的邻域成分特征选择电脑杂志。卷。7,1月1日,2012年1月。

也可以看看

||||

相关的话题