预测

类:FeatureSelectionNCAClassification

预测使用邻里成分分析的响应(NCA)分类

句法

[标签,postprobs,类名] =预测(MDL,X)

描述

[标签postprobs类名] =预测(MDLX计算预测的标签,标签中,对应于各行X,使用模型MDL

输入参数

展开全部

邻里成分分析模型进行分类,指定为FeatureSelectionNCAClassification目的。

预测器变量值,指定为ñ-通过-p矩阵,ñ是观测值的数量和p是预测变量的数目。

数据类型:|

输出参数

展开全部

对应的行预测类标签X时,返回作为分类,逻辑的,或数字矢量,长度的字符向量的单元阵列ñ或字符阵列ñ行。ñ是观测值的数量。该类型的标签是相同的ÿ在训练中使用。

后验概率,返回一个ñ-通过-C矩阵,ñ是观测值的数量和C是的类的数量。后验概率,postprobs(I,:)代表的观察中的隶属X(I,:)在类1至C

与后验概率对应的类名,以字符向量的单元数组形式返回。的一个列对应的类名postprobs

例子

展开全部

加载样本数据。

加载('twodimclassdata.mat');

这个数据集被使用在[1]中描述的方案模拟。这是一个二维两类分类问题。数据从所述第一类(类-1)是由两种二元正态分布绘制$ N(\ mu_1,\ Sigma公司)$$ N(\ mu_2,\ Sigma公司)$以相等的概率,其中$ \ mu_1 = [-0.75,-1.5] $$ \ mu_2 = [0.75,1.5] $$ \西格玛= I_2 $。类似地,从第二类(类别1)的数据是从两个二元正态分布绘制$ N(\ mu_3,\ Sigma公司)$$ N(\ mu_4,\ Sigma公司)$以相等的概率,其中$ \ mu_3 = [1.5,-1.5] $$ \ mu_4 = [-1.5,1.5] $$ \西格玛= I_2 $。正态分布参数用来建立在比在[1]中使用的数据的数据更紧密簇这个数据集的结果。

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

图gscatter(X(:,1),X(:,2)中,y)xlabel('X1')ylabel('X2'

加100个无关的功能X美元。首先生成从具有0均值和20的方差正态分布的数据。

N =尺寸(X,1);RNG(“默认”)XwithBadFeatures = [X,randn(N,100)* SQRT(20)];

归一化数据,使得所有的点是0和1之间。

XwithBadFeatures = bsxfun(@rdivide,...bsxfun(@减去,XwithBadFeatures,分钟(XwithBadFeatures,[],1)),...范围(XwithBadFeatures,1));X = XwithBadFeatures;

使用默认的适合的邻域成分分析(NCA)模型与数据LAMBDA(调整参数,$ \ $拉姆达)值。使用LBFGS解算器和显示收敛信息。

ncaMdl = fscnca(X,Y,'使用fitmethod''精确'“放牧”1,...“求解”'lbfgs');
ø求解= LBFGS,HessianHistorySize = 15,LineSearchMethod = weakwolfe | ==================================================================================================== ||ITER |FUN VALUE |NORM GRAD |NORM STEP |CURV |GAMMA |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.

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

图semilogx(ncaMdl.FeatureWeights,'RO')包含(“特色指标”)ylabel(“特征权重”)网格

预测使用NCA模型中的类,并计算混淆矩阵。

ypred =预测(ncaMdl,X);confusionchart(Y,ypred)

混淆矩阵表明,40个属于-1类的数据被预测为属于-1类。类-1的数据中有60个被预测为类1。同样,第1类的数据中有94个预测来自第1类,其中6个预测来自第1类。对-1类的预测精度不是很好。

所有重量都非常接近零,这表明价值$ \ $拉姆达在训练模型中使用过大。什么时候$ \拉姆达\到\ infty $,所有功能的权重接近零。因此,这是调整的重要在大多数情况下调整参数,以检测相关特征。

使用五倍交叉验证调整$ \ $拉姆达为特征选择使用fscnca。调音$ \ $拉姆达手段找到$ \ $拉姆达值将产生最小分类损失。调$ \ $拉姆达使用交叉验证:

1.分区数据成五倍。对于每个倍,cvpartition将五分之四的数据分配为训练集,五分之一的数据分配为测试集。cvpartition创建一个分层分区,其中每个分区具有大致的类相同的比例。

CVP = cvpartition(Y,'kfold',5);numtestsets = cvp.NumTestSets;lambdavalues = linspace(0,2,20)/长度(Y);lossvalues =零(长度(lambdavalues),numtestsets);

2.列车附近成分分析(NCA)模型为每个$ \ $拉姆达使用每个折叠训练集值。

3.利用nca模型计算fold中相应测试集的分类损失。记录损失价值。

4.对所有的折叠和所有的折叠重复这个过程$ \ $拉姆达值。

对于i = 1:长度(lambdavalues)对于K = 1:numtestsets%提取从分区对象的训练集Xtrain = X(cvp.training(K),:);ytrain = Y(cvp.training(K),:);%提取从分区对象测试集XTEST = X(cvp.test(K),:);ytest = Y(cvp.test(K),:);利用训练集%的火车模型NCA分类ncaMdl = fscnca(Xtrain,ytrain,'使用fitmethod''精确'...“求解”'lbfgs'“拉姆达”,lambdavalues(I));%计算用于使用NCA测试集的分类损失模型%lossvalues(I,K)=损耗(ncaMdl,XTEST,ytest,...'LossFunction'“二次”);结束结束

绘制的褶皱相对于平均损耗值$ \ $拉姆达值。如果$ \ $拉姆达值,该值对应于最小损耗落在测试的边界上$ \ $拉姆达值,范围$ \ $拉姆达值应重新考虑。

图图(lambdavalues,平均(lossvalues,2)“滚装”)包含(“λ值”)ylabel(“损失价值”)网格

找出$ \ $拉姆达值,该值对应于最小平均损失。

[〜,IDX] =分钟(平均值(lossvalues,2));%查找索引bestlambda = lambdavalues(IDX)%寻找最佳的λ值
bestlambda = 0.0037

使用最适合NCA模型,所有的数据$ \ $拉姆达值。使用LBFGS解算器和显示收敛信息。

ncaMdl = fscnca(X,Y,'使用fitmethod''精确'“放牧”1,...“求解”'lbfgs'“拉姆达”,bestlambda);
ø求解= LBFGS,HessianHistorySize = 15,LineSearchMethod = weakwolfe | ==================================================================================================== ||ITER |FUN VALUE |NORM GRAD |NORM STEP |CURV |GAMMA |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.

绘制特征权重。

图semilogx(ncaMdl.FeatureWeights,'RO')包含(“特色指标”)ylabel(“特征权重”)网格

fscnca正确地计算出前两个特征是相关的,并且其余的都没有。前两个特点是不单独提供信息,但服用时一起导致一个准确的分类模型。

使用新的模型预测类和计算的准确性。

ypred =预测(ncaMdl,X);confusionchart(Y,ypred)

混淆矩阵示出了用于类预测精度-1有所改善。从类的数据的88 -1被预测为从-1,其中12被预测为从类1从1类的数据的92被预测为从1类和它们的8被预测为从类-1。

参考文献

[1]杨,W.,K.王,W.佐。“居委会组件特征选择高维数据。”计算机学报。卷。7,1号,2012年01月。

介绍了在R2016b