使用自定义标准的顺序特征选择
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
是响应值或类别标签的在每个观测的列向量X
。X
和y
必须有相同的行数。开玩笑
是一个函数的函数句柄,该函数定义用于选择特性和决定何时停止的标准。输出inmodel
是指示哪些功能最终选择的逻辑矢量。
从一个空特征集开始,sequentialfs
通过依次添加每个尚未选择的特征来创建候选特征子集。对于每个候选特征子集,sequentialfs
通过重复调用执行10次交叉验证开玩笑
用不同的训练子集X
和y
,XTRAIN
和ytrain
,和的测试子集中X
和y
,XTEST
和欧美
, 如下:
准则=乐趣(XTRAIN,ytrain,XTEST,ytest)
XTRAIN
和ytrain
的行的相同子集X
和Y
,而XTEST
和欧美
包含行的互补子集。XTRAIN
和XTEST
含有的列所采取的数据X
对应于当前候选的功能集。
每次它被调用时,开玩笑
必须返回标量值标准
。通常情况下,开玩笑
使用XTRAIN
和ytrain
训练或适应一个模型,然后预测价值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
,...)
参数 | 值 |
---|---|
“简历” |
用于计算每个候选特征子集的准则的验证方法。
默认值为 所谓的包装方法使用函数 |
'mcreps' |
一个正整数,指示交叉验证的蒙特卡罗重复次数。默认值为 |
'方向' |
顺序搜索的方向。默认值是 |
“keepin” |
逻辑载体或必须包含的列数指定特征的向量。默认为空。 |
'避开' |
逻辑矢量或必须排除的列数指定特征的向量。默认为空。 |
“n功能” |
的特征的数量在该 |
'nullmodel' |
一个逻辑值,指示空模型(不包含来自 |
“选项” |
选项结构迭代顺序搜索算法,如通过创建
要并行计算,您需要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