使用自定义标准的顺序特征选择
inmodel = sequentialfs(有趣,X, y)
inmodel = sequentialfs(有趣,X, Y, Z,…)
[inmodel、历史]= sequentialfs(有趣,X,…)
[] = sequentialfs(…param1
,val1
,param2
,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、欧美)
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
,欧美
,中兴通讯
,……的行子集X
,Y
,Z
,……。有趣的
必须返回标量值标准
,但可以以任何方式计算这个值。逻辑向量的元素inmodel
对应于X
并指出最终选择的特征。
[inmodel、历史]= sequentialfs(有趣,X,…)
返回关于在每个步骤中选择的特性的信息。历史
是一个标量结构,具有以下字段:
暴击
-包含每一步计算的标准值的向量。
在
-一个逻辑矩阵,其中一行我
指示在步骤中选择的特征我
.
[] = sequentialfs(…
指定下表中的可选参数名称/值对。param1
,val1
,param2
,val2
,……)
参数 | 价值 |
---|---|
“简历” |
验证方法用于计算每个候选特征子集的准则。
默认值为 所谓的包装方法使用一个函数 |
“mcreps” |
一个正整数,表示交叉验证的蒙特卡罗重复次数。默认值为 |
“方向” |
顺序搜索的方向。默认值是 |
“keepin” |
指定必须包含的特性的逻辑向量或列号向量。默认为空。 |
“禁入” |
指定必须排除的特性的逻辑向量或列号向量。默认为空。 |
“nfeatures” |
特征的数量 |
“nullmodel” |
一个逻辑值,指示空模型(不包含来自 |
“选项” |
为迭代顺序搜索算法的选项结构,由
要并行计算,您需要parallel Computing Toolbox™。 |
进行序列特征选择,对噪声特征进行分类:
可重复性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