主要内容

序列

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

句法

Inmodel = sequentialfs(乐趣,x,y)
Inmodel = sequentialfs(有趣,x,y,z,...)
[Inmodel,历史] = SequentialFs(有趣,x,...)
[] =顺序(...,param1Val1.param2.val2.,......)

描述

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

从一个空的功能集开始,序列通过顺序添加尚未选择的每个功能来创建候选功能子集。对于每个候选功能子集,序列反复呼叫执行10倍的交叉验证乐趣用不同的训练子集XyXTrain.ytrain.和测试子集XyXTest.ytest., 如下:

标准=乐趣(XTrain,Ytrain,XTest,Yest)

XTrain.ytrain.包含相同行的行Xy, 尽管XTest.ytest.包含互补的行子集。XTrain.XTest.包含从列中取出的数据X对应于当前候选功能集。

每次被称为,乐趣必须返回标量值标准。通常,乐趣用途XTrain.ytrain.培训或适合模型,然后预测值XTest.使用该模型,最后返回一些距离的度量,或失利,这些预测值ytest.。在给定候选功能集的交叉验证计算中,序列总和返回的值乐趣并将其划分为测试观察总数。然后,它使用该平均值来评估每个候选特征子集。

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

笔记

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

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

Inmodel = sequentialfs(有趣,x,y,z,...)允许任何数量的输入变量XyZ.,......序列选择特征(列)仅来自X,但否则没有解释XyZ.,......所有数据输入,无论是列向量还是矩阵,都必须具有相同数量的行。序列呼叫乐趣培训和测试子集XyZ., ... 如下:

Criterion = Fun(XTrain,Ytrain,Ztrain,...,XTest,YTEST,ZTEST,......)

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

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

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

  • - 一个逻辑矩阵,其中行一世表示在步骤中选择的功能一世

[] =顺序(...,param1Val1.param2.val2.,......)指定从下表中的可选参数名称/值对。

范围 价值
'简历'

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

  • 当值是一个正整数时K.序列用途K.- 没有分层的交叉验证。

  • 当值是一个对象时CVPartition.类,可以指定其他形式的交叉验证。

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

  • 当值是'没有任何'序列呼叫乐趣作为标准=乐趣(x,y,z,...),不分离测试和培训集。

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

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

'mcreps'

一个正整数,指示交叉验证的Monte-Carlo重复的数量。默认值是1。价值必须是1如果是值'简历''重新提交'或者'没有任何'

'方向'

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

'keepin'

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

'避开'

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

'nfeatures'

特征的数量序列应该停止。inmodel.包括究竟这个功能。默认值为空,指示该值序列应在找到局部最小标准时停止。非空值覆盖值'maxiter''tolfun''选项'

'nullmodel'

逻辑值,指示是否或非不包含来自的功能X)应该包含在特征选择中历史输出。默认为错误的

'选项'

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

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

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

  • maxiter.- 允许的最大迭代次数。默认为INF.

  • 塔尔芬- 目标函数值的终止耐受性。默认为1E-6如果'方向''向前';0.如果'方向''落后'

  • toltypefun- 使用绝对或相对目标函数公差。默认为'rel'

  • 使用指α.- 调成真的并行计算。默认为错误的

  • Userumstreams.- 调成真的以可重复的方式并行计算。默认为错误的。计算可重复的,设置溪流允许子流的类型:'mlfg6331_64'或者'MRG32K3A'

  • 溪流- 一种randstream.由一个这样的物体组成的对象或单元阵列。如果您未指定溪流序列使用默认流。

要平行计算,需要并行计算工具箱™。

例子

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

加载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介绍