顺序特征选择

本主题引入了顺序特征选择和提供了选择功能依次使用自定义标准和示例sequentialfs功能。

介绍顺序特征选择

的常用方法特征选择连续的特征选择。这种方法有两个组成部分:

  • 目标函数,称为标准,其中所述方法寻求所有可行特征子集最小化过。常见的标准是均方误差(回归模型)和错误率(分类模型)。

  • 顺序搜索算法,而评估标准从候选集添加或删除功能。由于标准值在所有2的穷尽比较ñ的子集ñ-feature数据集通常是不可行的(取决于尺寸ñ客观的通话费用),顺序搜索只在一个方向移动,一直生长或萎缩总是候选集。

该方法有两个变种:

  • 顺序前进SFS),其中特征被顺序添加到空候选集,直至加入的进一步的特征不会降低的标准。

  • 顺序后向选择SBS),其中特征顺序地从一个完整的候选集合去除,直到去除的进一步的特征增加的标准。

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

  • 逐步回归是专门为最小二乘拟合设计顺序特征选择技术。功能stepwiselmstepwiseglm使用的优化是可能只与最小二乘准则。不像其他的顺序特征选择算法,逐步回归可以删除已添加或添加已经被删除的功能的功能,基于由所述指定的标准'标准'名称 - 值对的参数。

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

  • fscmrmr队伍配备使用最小冗余最大相关性(MRMR)算法进行分类的问题。

特点选择子集比较预测能力

本实施例中选择的使用自定义标准特征的子集,其测量为一个广义线性回归问题的预测能力。

考虑具有的10所预测的观察100的数据集。生成从逻辑模型的随机数据,在每个组值的预测的响应二项分布。因此,并非所有的预测影响响应一些系数设置为零。

RNG(456)%设置重复性的种子N = 100;米= 10;X =兰特(N,M);B = [1 0 0 2 0.5 0 0 0.1 0 1];XB = X * B';P = 1./(1+exp(-Xb));N = 50;Y = binornd(N,P);

使用符合逻辑模型的数据fitglm

Y = [Y N *酮(大小(Y))];model0 = fitglm(X,Y,'分配'“二项式”
model0 =广义线性回归模型:分对数(y)的〜1 + X1 + X2 + X3 + X4 + X5 + X6 + X7 + X8 + X9 + X10分布=二项式估计系数:估计SE TSTAT p值_________ _______ ________ __________(截距)0.22474 0.30043 0.74806 0.45443 0.68782 X1 0.17207 3.9973 6.408e-05×2 0.2003 0.18087 1.1074 0.26811×3 -0.055328 0.18871 -0.29319 0.76937×4 2.2576 0.1813 12.452 1.3566e-35 X5 0.54603 0.16836 3.2432 0.0011821 5233 0.069701 0.17738 0.39294 0.69437 -0.22562 X7 0.16957 -1.3306 0.18334 X8-0.19712 0.17317 -1.1383 0.25498 X9 -0.20373 0.16796 -1.213 0.22514×10 0.99741 0.17247 5.7832 7.3296e-09 100观察,89个错误自由度分散体:1驰^ 2统计量与常数模型:222,p值= 4.92e-42

显示拟合的偏差。

DEV0 = model0.Deviance
DEV0 = 101.5648

这种模式是完整的模型,所有的功能和初始常数项。顺序特征选择搜索的特点与比较预测能力完全模型的一个子集。

执行特征选择之前,你必须指定用于选择功能的标准。在这种情况下,标准是合适的(正方形的剩余之和的概括)的偏差。该critfun功能(在本实施例的端示出)调用fitglm并返回拟合的偏差。

如果使用活的脚本文件,在这个例子中,critfun功能已经包含在文件的结尾。否则,您需要在您的.m文件的末尾来创建此功能,或者将其添加为MATLAB路径上的一个文件。

执行特征选择。sequentialfs通过调用一个函数处理的标准功能。

MAXDEV = chi2inv(.95,1);选择= statset('显示''ITER'...'TolFun',MAXDEV,...'TolTypeFun''ABS');inmodel = sequentialfs(@ critfun,X,Y,...'简历''没有'...'nullmodel',真正,...“选项”,选择,...'方向''前锋');
正向启动顺序特征选择:初始列包括:不能被包括无列:无步骤1中,所使用的初始柱,标准值323.173步骤2,加入第4栏,基准值184.794步骤3中,添加的列10,标准值139.176步骤4,加入第1栏,基准值119.222步骤5中,添加的列5,标准值107.281最终列包括:1 4 5 10

迭代显示屏显示在标准值,因为每个新的特征减少被添加到模型中。最终的结果是只有四个原有10个地图降阶模型:列1410X,如在逻辑矢量指示inmodel通过返回sequentialfs

简化模型的偏差比全模型的偏差更高。然而,除了其他任何单一功能的不会超过绝对公差减小基准值,MAXDEV在选项结构中设置。添加功能,以不影响由具有与一个自由度的卡方分布的量减少了偏差。添加在偏差较大的变化显著功能的效果。通过设置MAXDEVchi2inv(.95,1),您指示sequentialfs继续增加规定,在越轨行为的变化比随机偶然预期的变化更多的功能。

创建具有初始常数项的简化模型。

模型= fitglm(X(:,inmodel)中,Y,'分配'“二项式”
模型=广义线性回归模型:分对数(y)的〜1 + X1 + X2 + X3 + X4分布=二项式估计系数:估计SE TSTAT p值__________ _______ _________ __________(截距)-0.0052025 0.16772 -0.031018 0.97525 X1 0.73814 0.16316 4.5241 6.0666e-06×2 2.2139 0.17402 12.722 4.4369e-37×3 0.54073 0.1568 3.4485 0.00056361×4 1.0694 0.15916 6.7191 1.8288e-11 100观察,95个错误自由度分散体:1驰^ 2统计量与常数模型:216,p值=1.44e-45

此代码创建功能critfun

功能dev的= critfun(X,Y)=模型fitglm(X,Y,'分配'“二项式”);dev的= model.Deviance;结束

也可以看看

||

相关话题