主要内容

连续的特征选择

这个话题介绍了连续的特征选择和顺序提供了一个示例,选择特性和使用自定义标准sequentialfs函数。

介绍连续的特征选择

的常见方法特征选择连续的特征选择。这个方法有两个组件:

  • 一个目标函数,称为标准的方法试图最小化所有可行的特征子集。常见的标准是均方误差(回归模型)和误分类率(分类模型)。

  • 顺序搜索算法,从候选子集而添加或删除功能评估标准。因为一个详尽的比较标准的价值2n的一个子集n特征数据集通常是不可行的(取决于大小的n和客观要求的成本),顺序搜索只在一个方向移动,总是增长或缩小候选集。

该方法有两个变量:

  • 顺序向前选择(SFS),特点是按顺序添加到一个空的候选集,直到进一步的功能不降低标准。

  • 顺序逆向选择(SBS),特点是按顺序从一组完整的候选人直到进一步的去除特性提高标准。

统计和机器学习工具箱™提供了几个连续的特征选择功能:

  • 逐步回归是一种连续的特征选择技术专门为最小二乘拟合。的函数stepwiselmstepwiseglm用最小二乘准则优化才有可能。与其他序列特征选择算法,添加了逐步回归可以删除功能,已被移除或添加特性,基于指定的标准“标准”名称-值对的论点。

  • sequentialfs执行顺序特征选择使用一个自定义的标准。输入参数包括预测数据,响应数据,一个函数文件实施准则函数的句柄。您可以定义一个判别函数测量的特征数据或学习算法的性能。可选的输入允许您指定SFS或SBS,要求或排除功能,和特征子集的大小。的函数调用cvpartitioncrossval评价标准在不同的候选集。

  • 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,10X,表示逻辑向量inmodel返回的sequentialfs

减少模型的异常高于整个模型的异常。然而,添加任何其他单一特征不会降低标准价值超过绝对宽容,maxdev,设置的选项结构。添加一个功能,没有影响减少了偏差的数量,卡方分布有一个自由度。添加一个重要的功能异常会导致一个更大的变化。通过设置maxdevchi2inv (.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;结束

另请参阅

||

相关的话题