使用自定义标准选择顺序特征选择
Inmodel = sequentialfs(乐趣,x,y)
Inmodel = sequentialfs(有趣,x,y,z,...)
[Inmodel,历史] = SequentialFs(有趣,x,...)
[] =顺序(...,param1
那Val1.
那param2.
那val2.
,......)
Inmodel = sequentialfs(乐趣,x,y)
从数据矩阵中选择特征的子集X
最能预测数据y
通过顺序选择特征,直到预测没有改善。行X
对应观察;列对应于变量或功能。y
是每个观察的响应值或类标签的列向量X
。X
和y
必须具有相同数量的行。乐趣
是一个函数的函数,用于定义用于选择功能的标准并确定何时停止的标准。输出inmodel.
是一个指示最终选择哪些功能的逻辑向量。
从一个空的功能集开始,序列
通过顺序添加尚未选择的每个功能来创建候选功能子集。对于每个候选功能子集,序列
反复呼叫执行10倍的交叉验证乐趣
用不同的训练子集X
和y
那XTrain.
和ytrain.
和测试子集X
和y
那XTest.
和ytest.
, 如下:
标准=乐趣(XTrain,Ytrain,XTest,Yest)
XTrain.
和ytrain.
包含相同行的行X
和y
, 尽管XTest.
和ytest.
包含互补的行子集。XTrain.
和XTest.
包含从列中取出的数据X
对应于当前候选功能集。
每次被称为,乐趣
必须返回标量值标准
。通常,乐趣
用途XTrain.
和ytrain.
培训或适合模型,然后预测值XTest.
使用该模型,最后返回一些距离的度量,或失利,这些预测值ytest.
。在给定候选功能集的交叉验证计算中,序列
总和返回的值乐趣
并将其划分为测试观察总数。然后,它使用该平均值来评估每个候选特征子集。
典型损耗措施包括回归模型的平方误差之和(序列
在这种情况下计算平均平方误差),以及分类模型的错误分类观测的数量(序列
在这种情况下计算错误分类率)。
笔记
序列
划分返回的值的总和乐趣
通过测试观测总数遍历所有测试集。因此,乐趣
不应将其输出值除以测试观测的数量。
计算平均后标准
每个候选功能子集的值,序列
选择候选功能子集最小化平均标准值。此过程继续,直到添加更多功能不会降低标准。
Inmodel = sequentialfs(有趣,x,y,z,...)
允许任何数量的输入变量X
那y
那Z.
,......序列
选择特征(列)仅来自X
,但否则没有解释X
那y
那Z.
,......所有数据输入,无论是列向量还是矩阵,都必须具有相同数量的行。序列
呼叫乐趣
培训和测试子集X
那y
那Z.
, ... 如下:
Criterion = Fun(XTrain,Ytrain,Ztrain,...,XTest,YTEST,ZTEST,......)
序列
创造XTrain.
那ytrain.
那Ztrain
,......,XTest.
那ytest.
那ZTEST.
,...通过选择行的子集X
那y
那Z.
,......乐趣
必须返回标量值标准
,但可能以任何方式计算该价值。逻辑向量的元素inmodel.
对应于列X
并指出最终选择了哪些功能。
[Inmodel,历史] = SequentialFs(有趣,x,...)
返回每个步骤中选择哪个功能的信息。历史
是标量结构,具有以下字段:
填料
- 包含在每个步骤中计算的标准值的向量。
在
- 一个逻辑矩阵,其中行一世
表示在步骤中选择的功能一世
。
[] =顺序(...,
指定从下表中的可选参数名称/值对。param1
那Val1.
那param2.
那val2.
,......)
范围 | 价值 |
---|---|
'简历' |
用于计算每个候选特征子集的标准的验证方法。
默认值是 所谓的包装方法使用功能 |
'mcreps' |
一个正整数,指示交叉验证的Monte-Carlo重复的数量。默认值是 |
'方向' |
顺序搜索的方向。默认为 |
'keepin' |
逻辑向量或列号的矢量指定必须包含的功能。默认值为空。 |
'避开' |
逻辑矢量或列号的矢量指定必须排除的功能。默认值为空。 |
'nfeatures' |
特征的数量 |
'nullmodel' |
逻辑值,指示是否或非不包含来自的功能 |
'选项' |
迭代顺序搜索算法的选项结构,由创建的
要平行计算,需要并行计算工具箱™。 |
对嘈杂功能进行分类执行顺序特征选择:
加载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