sequentialfs

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

语法

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

描述

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

从一个空特征集开始,sequentialfs通过依次添加每个尚未选择的特征来创建候选特征子集。对于每个候选特征子集,sequentialfs通过重复调用执行10次交叉验证开玩笑用不同的训练子集Xy,XTRAINytrain,和的测试子集中Xy,XTEST欧美, 如下:

准则=乐趣(XTRAIN,ytrain,XTEST,ytest)

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

每次它被调用时,开玩笑必须返回标量值标准。通常情况下,开玩笑使用XTRAINytrain训练或适应一个模型,然后预测价值XTEST使用该模型,并最终返回距离的某种度量,或失利的预测值欧美。在交叉验证计算给定的候选特征集,sequentialfs返回的值的总和开玩笑然后除以观测值的总数。然后,它使用平均值来评估每个候选特征子集。

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

请注意

sequentialfs返回的值的和除以开玩笑通过所有测试集的测试观察的总数。因此,开玩笑不应受测试的观测数除以它的输出值。

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

inmodel = sequentialfs(有趣,X, Y, Z,…)允许任何数目的输入变量的X,Y,Z,……。sequentialfs仅从。中选择特性(列)X,不过对于在没有任何解释X,Y,Z,……。所有数据输入,无论是列向量还是矩阵,必须具有相同的行数。sequentialfs调用开玩笑具有训练和测试子集的X,Y,Z, ... 如下:

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

sequentialfs创建XTRAIN,YTRAIN,ZTRAIN,……,XTEST,YTEST,中兴通讯,……的行子集X,Y,Z,……。开玩笑必须返回标量值标准,但可以计算的任何方式的价值。逻辑矢量的元素inmodel对应于列X并指明哪些功能最终选择。

[inmodel,历史] = sequentialfs(乐趣,X,...)返回在其上选择在每一步的特征信息。历史是具有以下字段的标量结构:

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

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

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

参数
“简历”

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

  • 当该值是一个正整数k,sequentialfs使用k-无分层交叉验证。

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

  • 当该值'resubstitution',原始数据被传递到开玩笑作为训练和测试数据来计算准则。

  • 当该值“没有”,sequentialfs调用开玩笑作为标准=乐趣(X, Y, Z,…),没有分离试验和训练集。

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

所谓的包装方法使用函数开玩笑它实现了一个学习算法。这些方法通常采用交叉验证选择功能。所谓的过滤方法使用函数开玩笑该数据的措施的特性(如相关性)来选择的功能。

'mcreps'

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

'方向'

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

“keepin”

逻辑载体或必须包含的列数指定特征的向量。默认为空。

'避开'

逻辑矢量或必须排除的列数指定特征的向量。默认为空。

“n功能”

的特征的数量在该sequentialfs应该停止。inmodel包括这许多特性。默认值为空,表示sequentialfs当发现标准的当地最低应该停止。的为非空值的值替换'MAXITER'“TolFun”“选项”

'nullmodel'

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

“选项”

选项结构迭代顺序搜索算法,如通过创建statset

sequentialfs使用以下statset参数:

  • 显示- 信息显示量由算法。默认值是“关”

  • MAXITER-允许的最大迭代次数。默认值是天道酬勤

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

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

  • UseParallel- 调成真正计算平行。默认是

  • UseSubstreams- 调成真正并行计算以可重复的方式并行计算默认是。为了可重现地计算,设置一种类型的允许子:“mlfg6331_64”要么“mrg32k3a”

  • - 一个RandStream由一个这样的对象组成的对象或单元格数组。如果您没有指定,sequentialfs使用默认流。

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

例子

对于执行的噪音特征分类顺序特征选择:

加载fisheriris RNG( '缺省')%的再现性X = randn(150,10);X(:,[1 3 5 7])= MEAS;Y =物种;C = cvpartition(Y, 'K',10);OPTS = statset( '显示', 'ITER');有趣= @(XT,YT,XT,YT)损耗(fitcecoc(XT,YT),XT,YT);[FS,历史] = sequentialfs(乐趣,X,Y, 'CV',C, '选项',OPTS)正向起动顺序特征选择:初始列包括:无列可以不包括在内:无步骤1中,添加的列5,标准值0.00266667步骤2,加入第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个逻辑]爆击:[0.0027 0.0022 0.0018 8.8889e-04] history.In 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