主要内容

sequentialfs

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

语法

inmodel = sequentialfs(有趣,X, y)
inmodel=顺序FS(有趣,X,Y,Z,…)
[inmodel、历史]= sequentialfs(有趣,X,…)
[]=顺序FS(。。。,param1,瓦尔1,param2,瓦尔2,……)

描述

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

从一个空的要素集开始,sequentialfs通过顺序添加每个尚未选择的特征来创建候选特征子集。对于每个候选特征子集,sequentialfs通过重复调用执行10次交叉验证有趣的的不同训练子集XY,XTRAIN,和测试子集XY,克斯特伊泰斯特,如下所示:

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

XTRAIN包含的行的相同子集XY虽然克斯特伊泰斯特包含行的互补子集。XTRAIN克斯特包含从列中获取的数据X对应于当前候选特征集的。

每次它被调用时,有趣的必须返回标量值标准.通常情况下,有趣的使用XTRAIN训练或拟合模型,然后预测克斯特使用那个模型,最终返回一些距离的度量,或者丧失,其中伊泰斯特.在给定候选特征集的交叉验证计算中,sequentialfs对返回的值求和有趣的并将该总和除以测试观察的总数,然后使用该平均值来评估每个候选特征子集。

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

笔记

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

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

inmodel=顺序FS(有趣,X,Y,Z,…)允许任意数量的输入变量X,Y,Z, ... .sequentialfs仅从中选择要素(列)X,否则不予解释X,Y,Z,…所有数据输入,无论是列向量还是矩阵,都必须具有相同的行数。sequentialfs电话有趣的具有的训练和测试子集X,Y,Z,……如下:

标准=乐趣(XTRAIN,YTRAIN,ZTRAIN,…,XTEST,YTEST,ZTEST,…)

sequentialfs创建XTRAIN,YTRAIN,ZTRAIN, ... ,克斯特,欧美,ZTEST,…通过选择X,Y,Z, ... .有趣的必须返回标量值标准,但可以以任何方式计算这个值。逻辑向量的元素inmodel对应于X并指出最终选择的特征。

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

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

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

[]=顺序FS(。。。,param1,瓦尔1,param2,瓦尔2,……)从下表中指定可选参数名称/值对。

参数 价值
“cv”

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

  • 当值为正整数时K,sequentialfs使用K-无分层的折叠交叉验证。

  • 当值是CVD分区类,则可以指定其他形式的交叉验证。

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

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

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

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

“mcreps”

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

“方向”

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

“keepin”

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

“禁入”

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

“nfeatures”

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

“nullmodel”

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

“选项”

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

sequentialfs使用以下statset参数:

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

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

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

  • 托尔泰芬-使用绝对或相对目标函数公差。默认值为“rel”

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

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

  • ——一个兰德斯特朗对象或由一个这样的对象组成的单元格数组。如果未指定,sequentialfs使用默认流。

要并行计算,您需要并行计算工具箱™.

例子

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

可重复性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

扩展能力

2008年推出