主要内容

改装

类:特征选择分类

改进邻域分量分析(NCA)模型进行分类

语法

mdlrefit=refit(mdl、名称、值)

描述

mdlrefit=改装(mdl,名称,值)改装模型mdl,其中修改后的参数由一个或多个指定名称,值对参数。

输入参数

全部展开

邻域组件分析模型或分类,指定为特征选择分类对象。

名称值参数

指定可选的逗号分隔的字符对名称,值参数。名称是参数名和价值为对应值。名称必须出现在引号内。可以以任意顺序指定多个名称和值对参数Name1, Value1,…,的家.

配件选项

全部展开

用于拟合模型的方法,指定为逗号分隔对,由“FitMethod”和下面的一个。

  • “准确”-使用所有数据进行拟合。

  • “没有”——不合适。使用此选项,可以使用调用中提供的初始特征权重来评估NCA模型的泛化误差fscnca.

  • “平均”—该函数将数据划分为多个分区(子集),使用确切的方法,并返回特征权重的平均值。属性指定分区的数目数量名称-值对参数。

例子:“FitMethod”、“没有”

正则化参数,指定为逗号分隔对,由“拉姆达”和一个非负的标量值。

对于N观察,最好的兰姆达使NCA模型的泛化误差最小化的值应为1的倍数/N

例子:“λ”,0.01

数据类型:|仅有一个的

用于估计特征权重的解算器类型,指定为逗号分隔对,包括“规划求解”和下面的一个。

  • “lbfgs”有限内存BFGS (broyden - fletcher - goldfarb - shannon)算法(LBFGS算法)

  • “新加坡元”-随机梯度下降

  • “minibatch-lbfgs”-基于LBFGS算法的随机梯度下降法在小批量生产中的应用

例子:“规划求解”、“minibatch-lbfgs”

初始特征权重,指定为逗号分隔对,包括“InitialFeatureWeights”和一个P实正标量值的-乘1向量。

数据类型:|仅有一个的

聚合摘要显示的详细级别指示符,指定为逗号分隔对,由“详细”和下面的一个。

  • 0 -没有收敛总结

  • 1-收敛性总结,包括迭代次数、梯度范数和目标函数值。

  • >1 -更多的收敛信息依赖于拟合算法

    当使用解算器“minibatch-lbfgs”当详细级别>1时,收敛信息包括来自中间小批量LBFGS拟合的迭代日志。

例子:“冗长”,2

数据类型:|仅有一个的

LBFGS或小批量LBFGS选项

全部展开

求解器梯度范数的相对收敛容差lbfgs,指定为逗号分隔的对,由“GradientTolerance”一个正的实标量值。

例子:“GradientTolerance”,0.00001

数据类型:|仅有一个的

SGD或小批量LBFGS选项

全部展开

求解器的初始学习率新加坡元,指定为逗号分隔的对,由“初始学习率”和一个正标量值。

当使用求解器类型“新加坡元”时,学习率从指定的值开始随着迭代次数递减“初始学习率”.

例子:“初始学习率”,0.8

数据类型:|仅有一个的

求解器的最大通道数“新加坡元”(随机梯度下降),指定为逗号分隔对组成“通行限制”和一个正整数。每次传递尺寸(mdl.X,1)观察。

例子:“PassLimit”,10

数据类型:|仅有一个的

SGD或LBFGS或小批量LBFGS选项

全部展开

最大迭代次数,指定为逗号分隔对,由“迭代限制”一个正整数。

例子:“迭代限制”,250

数据类型:|仅有一个的

输出参数

全部展开

用于分类的邻域组件分析模型,作为特征选择分类对象。您可以将结果保存为新模型,也可以将现有模型更新为mdl =改装(mdl、名称、值).

例子

全部展开

使用generateCheckerBoardData.m作用

rng (2016“龙卷风”);%的再现性pps = 1375;(X, y) = generateCheckerBoardData (pps);X = X + 2;

图数据。

曲线图(X(y==1,1),X(y==1,2),“rx”)举行情节(X (y = = 1, 1), X (y = = 1, 2),“软”) [n,p] = size(X)
n=22000 p=2

向数据中添加不相关的预测值。

Q = 98;Xrnd = unifrnd (0 4 n, Q);Xobs = [X, Xrnd];

这段代码创建了98个额外的预测器,它们都均匀分布在0和4之间。

将数据划分为训练集和测试集。要创建分层分区,使每个分区具有相似比例的类,请使用Y而不是长度(y)作为分区标准。

本量利= cvpartition (y,“坚持”,2000);

CVD分区随机选取2000个观察数据加入测试集,其余数据加入训练集。属性中存储的任务创建培训和验证集CVD分区对象cvp.

Xtrain=Xobs(cvp.training(1),:);ytrain=y(cvp.training(1),:);Xval=Xobs(cvp.test(1),:);yval=y(cvp.test(1),:);

在不选择特征的情况下计算误分类错误。

nca=fscnca(Xtrain,ytrain,“FitMethod”,“没有”,“标准化”符合事实的...“规划求解”,“lbfgs”);loss_nofs =损失(nca, Xval yval)
loss_nofs = 0.5165

“FitMethod”、“没有”Option使用默认权重(全部为1),这意味着所有特性都是同等重要的。

这一次,使用邻域组件分析执行特征选择以进行分类,使用美元$ \λ= 1 / n.

w0 =兰德(100 1);N = length(ytrain) lambda = 1/ N;nca =改装(nca,“InitialFeatureWeights”w0,“FitMethod”,“准确”,...“拉姆达”,lambda,“解算器”,“新加坡元”);
n=20000

绘制目标函数值与迭代次数的关系图。

图()图(nca.FitInfo.Iteration nca.FitInfo.Objective,“罗”)举行绘图(nca.FitInfo.Iteration,movmean(nca.FitInfo.Objective,10),“k.-”)包含(的迭代次数) ylabel (“客观价值”)

使用特征选择计算误分类错误。

loss_withfs =损失(nca, Xval yval)
loss_withfs = 0.0115

打印选定的要素。

图semilogx (nca)。FeatureWeights,“罗”)包含(“功能索引”) ylabel (“功能重量”网格)

使用特征权重和相对阈值选择特征。

tol=0.15;selidx=find(nca.FeatureWeights>tol*max(1,max(nca.FeatureWeights)))
selidx=1.2

特征选择改进了结果fscnca检测相关的两个功能是否正确。

R2016b中引入