主要内容

sequentialfs

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

语法

inmodel = sequentialfs(有趣,X, y)
inmodel = sequentialfs(有趣,X, Y, Z,…)
[inmodel、历史]= sequentialfs(有趣,X,…)
[] = sequentialfs(…param1val1param2val2,……)

描述

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

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

标准=乐趣(XTRAIN、ytrain XTEST、欧美)

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

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

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

请注意

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

在计算平均值之后标准每个候选特征子集的值,sequentialfs选择最小准则均值的候选特征子集。这个过程会一直持续下去,直到添加更多的功能不会降低标准。

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

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

sequentialfs创建XTRAINYTRAINZTRAIN,……,XTEST欧美中兴通讯,……的行子集XYZ,……。有趣的必须返回标量值标准,但可以以任何方式计算这个值。逻辑向量的元素inmodel对应于X并指出最终选择的特征。

[inmodel、历史]= sequentialfs(有趣,X,…)返回关于在每个步骤中选择的特性的信息。历史是一个标量结构,具有以下字段:

  • 暴击-包含每一步计算的标准值的向量。

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

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

参数 价值
“简历”

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

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

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

  • 当值为“resubstitution”,原始数据被传递到有趣的作为训练和测试数据来计算准则。

  • 当值为“没有”sequentialfs调用有趣的作为标准=乐趣(X, Y, Z,…),而没有将测试集和训练集分开。

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

所谓的包装方法使用一个函数有趣的实现了一个学习算法。这些方法通常应用交叉验证来选择特征。所谓的过滤方法使用一个函数有趣的通过测量数据的特征(如相关性)来选择特征。

“mcreps”

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

“方向”

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

“keepin”

指定必须包含的特性的逻辑向量或列号向量。默认为空。

“禁入”

指定必须排除的特性的逻辑向量或列号向量。默认为空。

“nfeatures”

特征的数量sequentialfs应该停止。inmodel包括这么多特性。默认值为空,表示sequentialfs应在找到条件的局部最小值时停止。的值覆盖“麦克斯特”“TolFun”“选项”

“nullmodel”

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

“选项”

为迭代顺序搜索算法的选项结构,由statset

sequentialfs使用以下statset参数:

  • 显示—按算法显示的信息量。默认值是“关闭”

  • 麦克斯特—允许的最大迭代次数。默认值是

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

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

  • UseParallel——设置为真正的并行计算并行计算默认是

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

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

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

例子

进行序列特征选择,对噪声特征进行分类:

可重复性X = randn(150,10);X(:,[1 3 5 7])= meas;y =物种;c = cvpartition (y,“k”,10);选择= statset(“显示”、“iter”);XT有趣= @ (XT,欧美,欧美)损失(fitcecoc (XT,欧美),XT,欧美);[fs,history] = sequentialfs(fun,X,y,'cv',c,'options',opts)步骤1,添加列5,则值0.00266667步骤2,添加列7,则价值0.00222222步骤3,添加列1,标准价值0.00177778步骤4,第三列,则价值0.000888889最后一列包括:1 3 5 7 fs = 1×10逻辑数组1 0 1 0 1 0 1 0 0 0 =历史结构体字段::[4×10逻辑]致命一击:[0.0027 0.0022 0.0018 8.8889e-04]历史。在ans = 4×10 logical array 0 0 0 0 1 0 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