这个话题介绍了连续的特征选择和顺序提供了一个示例,选择特性和使用自定义标准sequentialfs
函数。
的常见方法特征选择是连续的特征选择。这个方法有两个组件:
该方法有两个变量:
统计和机器学习工具箱™提供了几个连续的特征选择功能:
逐步回归是一种连续的特征选择技术专门为最小二乘拟合。的函数stepwiselm
和stepwiseglm
用最小二乘准则优化才有可能。与其他序列特征选择算法,添加了逐步回归可以删除功能,已被移除或添加特性,基于指定的标准“标准”
名称-值对的论点。
sequentialfs
执行顺序特征选择使用一个自定义的标准。输入参数包括预测数据,响应数据,一个函数文件实施准则函数的句柄。您可以定义一个判别函数测量的特征数据或学习算法的性能。可选的输入允许您指定SFS或SBS,要求或排除功能,和特征子集的大小。的函数调用cvpartition
和crossval
评价标准在不同的候选集。
fscmrmr
排名功能使用最小冗余最大相关性(MRMR)算法为分类问题。
本例中选择一个子集的特性,使用自定义的标准措施的预测能力一个广义线性回归问题。
考虑一个数据集有100 10预测指标的观察。从物流模型生成的随机数据,二项分布的反应在每一组值的预测。一些系数设置为0,所以不是所有的预测影响响应。
rng (456)%设置再现性的种子n = 100;m = 10;X =兰德(n, m);b = 0.1 (1 0 0 2 5 0 0 0 1);Xb = X * b”;p = 1. / (1 + exp (xb));N = 50;y = binornd(氮、磷);
配合物流模型使用的数据fitglm
。
Y = [Y N *(大小(Y)));model0 = fitglm (X, Y,“分布”,“二”)
model0 =广义线性回归模型:分对数(y) ~ 1 + x1 + x2 + x3 + x4 + x5 + x6 + x7 +×8 + x9 + x10 =二项分布估计系数:估计SE tStat pValue _____ ________ _____ x1(拦截)0.22474 0.30043 0.74806 0.45443 0.68782 0.17207 3.9973 6.408 e-05 x2 0.2003 -0.055328 0.18871 -0.29319 0.76937 0.18087 1.1074 0.26811 x3 x4 e-35 x5 0.54603 0.16836 3.2432 1.3566 2.2576 0.1813 12.452 0.0011821 x6 x7 -0.22562 0.16957 -1.3306 0.69437 0.069701 0.17738 0.39294 -0.19712 0.17317 -1.1383 0.25498 0.18334的混合体x9 -0.20373 0.99741 0.17247 5.7832 7.3296 0.16796 -1.213 0.22514 x10 e-09 100年观察,89错误自由度色散:1 x ^ 2-statistic与常数模型:222年,假定值= 4.92 e-42
显示的异常。
dev0 = model0.Deviance
dev0 = 101.5648
这个模型是完整的模型,所有的特性和初始常数项。序列特征选择搜索功能的一个子集和比较完整的模型的预测能力。
在进行特征选择之前,您必须指定一个标准选择功能。在这种情况下,标准是适合的异常(残差平方和的概括)。的critfun
函数(在这个例子中)调用fitglm
并返回的异常。
如果你使用现场脚本文件对于本例,critfun
功能已经包含在文件的末尾。否则,您需要创建这个函数的m文件或将其添加为MATLAB路径上的一个文件。
进行特征选择。sequentialfs
通过一个函数调用标准函数句柄。
maxdev = chi2inv (.95, 1);选择= statset (“显示”,“通路”,…“TolFun”maxdev,…“TolTypeFun”,“abs”);inmodel = sequentialfs (@critfun, X, Y,…“简历”,“没有”,…“nullmodel”,真的,…“选项”选择,…“方向”,“前进”);
开始向前连续特征选择:初始列包括:没有列不能包括:第一步,用最初的列,则值323.173步骤2,添加列4,标准价值184.794步骤3,添加列10,则价值139.176步骤4,添加列1,标准价值119.222步骤5,添加列5、准则值107.281最后一列包含:1 4 5 10
迭代显示显示减少准则值随着每个新特性添加到模型中。最终结果是一个减少模型只有四个最初的十个特点:列1
,4
,5
,10
的X
,表示逻辑向量inmodel
返回的sequentialfs
。
减少模型的异常高于整个模型的异常。然而,添加任何其他单一特征不会降低标准价值超过绝对宽容,maxdev
,设置的选项结构。添加一个功能,没有影响减少了偏差的数量,卡方分布有一个自由度。添加一个重要的功能异常会导致一个更大的变化。通过设置maxdev
来chi2inv (.95, 1)
,你指导sequentialfs
继续增加功能提供异常的变化是超过预期的变化随机的机会。
创建了模型,最初常数项。
模型= fitglm (X (:, inmodel), Y,“分布”,“二”)
模型=广义线性回归模型:分对数(y) ~ 1 + x1 + x2 + x3 + x4 =二项分布估计系数:估计SE tStat pValue __________ _____ _____(拦截)-0.0052025 0.16772 -0.031018 0.97525 x1 e-06 x2 2.2139 0.17402 12.722 6.0666 0.73814 0.16316 4.5241 4.4369 e-37 x3 x4 1.0694 0.15916 6.7191 0.00056361 0.54073 0.1568 3.4485 1.8288 e-11 100观察,95错误自由度色散:1 x ^ 2-statistic与常数模型:216年,假定值= 1.44 e-45
这段代码创建函数critfun
。
函数dev = critfun (X, Y)模型= fitglm (X, Y,“分布”,“二”);dev = model.Deviance;结束
sequentialfs
|stepwiselm
|stepwiseglm