主要内容

序列

使用自定义标准的顺序特征选择

语法

Inmodel = sequentialfs(乐趣,x,y)
inmodel = sequentialfs(有趣,X, Y, Z,…)
[Inmodel,历史] = SequentialFs(有趣,x,...)
[] = sequentialfs(…参数1val1参数2val2,......)

描述

Inmodel = sequentialfs(乐趣,x,y)从数据矩阵中选择特征的子集X最好的预测数据y通过顺序选择特征,直到预测没有改善。行X对应观察;列对应于变量或功能。y是每个观察的响应值或类标签的列向量XXy必须有相同的行数。乐趣是函数的句柄,该函数定义用于选择特性和确定何时停止的标准。输出inmodel.是一个指示最终选择哪些功能的逻辑向量。

从一个空白的特性集开始,序列通过依次添加尚未选择的每个特征,创建候选特征子集。对于每个候选特征子集,序列通过重复调用执行10次交叉验证乐趣用不同的训练子集XyXTRAINytrain和测试子集XyXTEST欧美, 如下:

标准=乐趣(XTRAIN、ytrain、XTEST、ytest)

XTRAINytrain的行的相同子集XY,而XTEST欧美包含行的补子集。XTRAINXTEST包含从列中取出的数据X对应于当前候选功能集。

每次被称为,乐趣必须返回标量值标准.通常,乐趣使用XTRAINytrain训练或适应一个模型,然后预测价值XTEST使用该模型,最后返回一些距离的度量,或损失的预测值欧美.在给定候选功能集的交叉验证计算中,序列将返回的值相加乐趣然后把这个和除以测试观察的总数。然后,它使用该平均值来评估每个候选特征子集。

典型的损失测量包括回归模型的误差平方和(序列在这种情况下计算平均平方误差),以及分类模型的错误分类观测的数量(序列在这种情况下计算错误分类率)。

请注意

序列将返回值的和除以乐趣通过测试观察的总数跨所有测试集。因此,乐趣不应将其输出值除以测试观测的数量。

计算平均后标准每个候选特征子集的值,序列选择候选功能子集最小化平均标准值。此过程继续,直到添加更多功能不会降低标准。

inmodel = sequentialfs(有趣,X, Y, Z,…)允许任意数量的输入变量XYZ,……。序列只从中选择特性(列)X,但否则没有解释XYZ,……。所有数据输入,无论是列向量还是矩阵,都必须具有相同的行数。序列调用乐趣与训练和测试子集XYZ, ... 如下:

标准=乐趣(XTRAIN YTRAIN ZTRAIN,…,欧美XTEST中兴,…)

序列创造XTRAINytrain.Ztrain,……,XTESTytest.中兴通讯,……的行子集XYZ,……。乐趣必须返回标量值标准,但可能以任何方式计算该价值。逻辑向量的元素inmodel.对应于X并指出最终选择了哪些功能。

[Inmodel,历史] = SequentialFs(有趣,x,...)返回每个步骤中选择哪个功能的信息。历史是一个标量结构,具有以下字段:

  • 填料- 包含在每个步骤中计算的标准值的向量。

  • - 一个逻辑矩阵,其中行指示在步骤中选择的特征

[] = sequentialfs(…参数1val1参数2val2,......)指定下表中的可选参数名称/值对。

参数 价值
“简历”

验证方法用于计算每个候选特征子集的准则。

  • 当值为正整数时k序列使用k-fold交叉验证,无分层。

  • 对象的对象时cvpartition类,可以指定其他形式的交叉验证。

  • 当值是'重新提交',原始数据传递给乐趣作为训练和测试数据来计算准则。

  • 当值是“没有”序列调用乐趣作为标准=乐趣(X, Y, Z,…),不分离测试和培训集。

默认值为10,即没有分层的10倍交叉验证。

所谓的包装方法使用功能乐趣它实现了一个学习算法。这些方法通常应用交叉验证来选择特征。所谓的过滤方法使用功能乐趣衡量数据(例如相关性)的特征以选择要素。

'mcreps'

一个正整数,表示交叉验证的蒙特卡罗重复次数。默认值为1.该值必须为1如果是值“简历”'重新提交'“没有”

'方向'

顺序搜索的方向。默认值是“前进”.的值“落后”指定一个初始候选集,包括所有特征和一个算法,该算法将按顺序删除特征,直到标准增加。

“keepin”

逻辑向量或列号的矢量指定必须包含的功能。默认值为空。

“禁止”

逻辑矢量或列号的矢量指定必须排除的功能。默认值为空。

'nfeatures'

特征的数量序列应该停止。inmodel.包括这么多特性。默认值为空,表示序列应在找到局部最小标准时停止。非空值覆盖值'maxiter'“TolFun”'选项'

“零模式”

一个逻辑值,指示空模型(不包含来自X)应该包含在特征选择中历史输出。默认值是

'选项'

迭代顺序搜索算法的选项结构,由创建的实例化

序列使用以下内容实例化参数:

  • 显示-算法显示的信息量。默认值是'离开'

  • 马克西特—允许的最大迭代次数。默认值是INF.

  • 塔尔芬-目标函数值的终止公差。默认值是1 e-6如果'方向'“前进”0如果'方向'“落后”

  • TolTypeFun-使用绝对或相对客观功能公差。默认值是“rel”

  • 使用指α.- 设置真的并行计算。默认是

  • UseSubstreams- 设置真的并行计算以可复制的方式并行计算默认是.若要重复计算,请设置溪流允许子流的类型:“mlfg6331_64”“mrg32k3a”

  • 溪流- 一种RandStream对象或单元格数组,其中包含一个这样的对象。如果没有指定溪流序列使用默认流。

要并行计算,您需要parallel Computing Toolbox™。

例子

对嘈杂功能进行分类执行顺序特征选择:

加载Fisheriris rng('默认')%以获得再现性x = RANDN(150,10);x(:,[1 3 5 7])= MEA;y =物种;c = cvpartition(y,'k',10);opts = statset('显示','iter');fun = @(xt,yt,xt,yt)损失(fitcecoc(xt,yt),xt,yt);[FS,历史] =顺序(乐趣,x,y,'cv',c,'选项',opts)启动前向顺序特征选择:包含初始列:无列表,无法包含:无步骤1,添加列5,标准值0.00266667,添加柱7,标准值0.00222222步骤3,添加列1,标准值0.00177778步骤4,添加第3列,标准值为0.000888889包括:1 3 5 7 fs = 1×10逻辑阵列1 0 1 0 1 0 1 0 0 0历史=带字段的结构:在:[4×10逻辑] CRIT:[0.0027 0.0022 0.0018 8.8889E-04]历史。在ans = 4×10逻辑阵列0 0 0 0 10 0 0 0 0 0 0 0 0 1 0 1 0 0 0 1 0 0 0 1 0 1 0 0 0 1 0 1 0 1 0 1 0 0 0

扩展功能

介绍了R2008a