调整正则化参数,利用NCA检测特征进行分类
这个例子展示了如何调优正则化参数fscnca
使用交叉验证。调优正则化参数有助于正确检测数据中的相关特征。
加载样例数据。
负载(“twodimclassdata.mat”)
该数据集使用[1]中描述的方案进行模拟。这是一个二维的两类分类问题。第一类数据来自两个二元正态分布 或 等概率,其中 , 而且 .类似地,第二类数据来自两个二元正态分布 或 等概率,其中 , 而且 .用于创建此数据集的正态分布参数导致数据集群比[1]中使用的数据更紧密。
创建一个按类分组的数据散点图。
图gscatter (X (: 1), (:, 2), y)包含(x1的) ylabel (“x2”)
添加100个不相关的特性 .首先从均值为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模型与数据匹配λ
(正则化参数,
)值。使用LBFGS求解器并显示收敛信息。
ncaMdl = fscnca (X, y,“FitMethod”,“准确”,“详细”, 1...“规划求解”,“lbfgs”);
o求解器= LBFGS, HessianHistorySize = 15,LineSearchMethod = weakwolfe |====================================================================================================| | ITER | |娱乐价值规范研究生| |规范一步曲线|γ|α|接受 | |====================================================================================================| | 0 | 9.519258 e 03 e-02 | 1.494 | 0.000 e + 00 | | 4.015 e + 01 | 0.000 e + 00 |是| | 1 | -3.093574 e-01 e 03 | 7.186 | 4.018 e + 00 |好01 | 1.000 | 8.956 e + e + 00 |是| | 2 | -4.809455 e-01 |4.444 e 03 | 7.123 e + 00 |好01 | 1.000 | 9.943 e + e + 00 |是| | 3 | -4.938877 e-01 e 03 | 3.544 | 1.464 e + 00 |好01 | 1.000 | 9.366 e + e + 00 |是| | 4 | -4.964759 e-01 e 03 | 2.901 | 6.084 e-01 |好e + 02 | 1.554 | 1.000 e + 00 |是| | 5 | -4.972077 e-01 e 03 | 1.323 | 6.129 e-01 |好e + 02 | 1.195 | 5.000 e-01 |是| | 6 | -4.974743 e-01 e-04 | 1.569 | 2.155 e-01 |好e + 02 | 1.003 | 1.000 e + 00 |是| | 7 | -4.974868 e-01 e-05 | 3.844 | 4.161 e-02 |好01 | 1.000 | 9.835 e + e + 00 |是| | 8 e-01 | -4.974874 | 1.417 e-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 | 10 | -4.974874e-01 | 9.404e-08 | 8.947e-04 | OK | 1.670e+02 | 1.000e+00 | YES |最终梯度的无限norm = 9.404e-08最后一步的两个norm = 8.947e-04, TolX = 1.000e-06最终梯度的相对无限norm = 9.404e-08, TolFun = 1.000e-06 EXIT: Local minimum found。
绘制特征权重。不相关特征的权重应该非常接近于零。
图semilogx (ncaMdl。FeatureWeights,“罗”)包含(“功能指数”) ylabel (“功能重量”网格)在
所有的权值都非常接近于零。的值 在训练中使用的模型太大。当 ,所有特征的权重都趋于零。因此,在大多数情况下调优正则化参数以检测相关的特征是很重要的。
使用五倍交叉验证进行调优
对于特征选择,使用fscnca
.调优
意味着找到
将产生最小分类损失的值。下面是调优的步骤
使用交叉验证:
1.首先将数据划分为五层。对于每一个褶皱,cvpartition
指定4/5的数据作为训练集,1/5的数据作为测试集。
本量利= cvpartition (y,“kfold”5);numtestsets = cvp.NumTestSets;lambdavalues = linspace(0、2、20)/长度(y);lossvalues = 0(长度(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”,“λ”lambdavalues(我));使用nca计算测试集的分类损失%的模型lossvalues (i (k) =损失(ncaMdl Xtest,欧美,...“LossFunction”,“二次”);结束结束
绘制折叠的平均损失值与 值。
图绘制(lambdavalues,意味着(lossvalues, 2),“ro - - - - - -”)包含(“λ值”) ylabel (“损失值”网格)在
找到 对应最小平均损失的值。
[~, idx] = min(意味着(lossvalues, 2));%查找索引bestlambda = lambdavalues (idx)找到最佳的lambda值
bestlambda = 0.0037
用最好的方法将nca模型与所有数据拟合 价值。使用LBFGS求解器并显示收敛信息。
ncaMdl = fscnca (X, y,“FitMethod”,“准确”,“详细”, 1...“规划求解”,“lbfgs”,“λ”, bestlambda);
o求解器= LBFGS, HessianHistorySize = 15,LineSearchMethod = weakwolfe |====================================================================================================| | ITER | |娱乐价值规范研究生| |规范一步曲线|γ|α|接受 | |====================================================================================================| | 0 | -1.246913 e-01 e-02 | 1.231 | 0.000 e + 00 | | 4.873 e + 01 | 0.000 e + 00 |是| | 1 | -3.411330 e-01 e 03 | 5.717 | 3.618 e + 00 |好e + 02 | 1.068 | 1.000 e + 00 |是| | 2 | -5.226111 e-01 |e-02 3.763 | 8.252 e + 00 |好01 | 1.000 | 7.825 e + e + 00 |是| | 3 | -5.817731 e-01 e 03 | 8.496 | 2.340 e + 00 |好| 5.591 e + 01 | 5.000 e-01 |是| | 4 | -6.132632 e-01 e 03 | 6.863 | 2.526 e + 00 |好01 | 1.000 | 8.228 e + e + 00 |是| | 5 | -6.135264 e-01 e 03 | 9.373 | 7.341 e-01 |好01 | 1.000 | 3.244 e + e + 00 |是| | 6 | -6.147894 e-01 e 03 | 1.182 | 2.933 e-01 |好01 | 1.000 | 2.447 e + e + 00 |是| | 7 | -6.148714 e-01 e-04 | 6.392 | 6.688 e-02 |好01 | 1.000 | 3.195 e + e + 00 |是| | 8 e-01 | -6.149524 | 6.521 e-04 |9.934 e-02 |好e + 02 | 1.236 | 1.000 e + 00 |是| | 9 | -6.149972 e-01 e-04 | 1.154 | 1.191 e-01 |好e + 02 | 1.171 | 1.000 e + 00 |是| | 10 | -6.149990 e-01 e-05 | 2.922 | 1.983 e-02 |好01 | 1.000 | 7.365 e + e + 00 |是| | 11 | -6.149993 e-01 e-05 | 1.556 | 8.354 e 03 |好e + 02 | 1.288 | 1.000 e + 00 |是| | 12 | -6.149994 e-01 e-05 | 1.147 | 7.256 e 03 |好e + 02 | 2.332 | 1.000 e + 00 |是| | 13 | -6.149995 e-01 e-05 | 1.040 | 6.781 e 03 |好e + 02 | 2.287 | 1.000 e + 00 |是| | 14 | -6.149996 e-01 e-06 | 9.015 | 6.265 e 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.
绘制特征权重。
图semilogx (ncaMdl。FeatureWeights,“罗”)包含(“功能指数”) ylabel (“功能重量”网格)在
fscnca
正确地指出前两个特征是相关的,其余的则不相关。请注意,前两个特征不是单独提供信息,但当结合在一起时,会产生一个准确的分类模型。
参考文献
1.杨伟,王坤,左伟。高维数据的邻域分量特征选择。电脑杂志.2012年1月,第七卷第一期。
另请参阅
FeatureSelectionNCAClassification
|fscnca
|改装
|预测
|损失