顺序特征选择

本主题介绍了顺序特征选择,并提供了一个使用自定义标准顺序选择功能的示例序列功能。

顺序特征选择简介

常用的方法功能选择连续的特征选择.这个方法有两个组件:

  • 一个目标函数,称为标准,该方法旨在最小化所有可行的特征子集。公共标准是平均方形错误(用于回归模型)和错误分类率(用于分类模型)。

  • 一种顺序搜索算法,它在评估标准时从候选子集中添加或删除特征。由于详尽的比较准则值在所有2n的一个子集n-特征数据集通常是不可行的(取决于大小n以及目标调用的代价),顺序搜索只向一个方向移动,总是增加或缩小候选集。

该方法有两个变体:

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

  • 顺序逆向选择SBS.),该方法从一个完整的候选集合中依次删除特征,直到进一步删除特征增加标准。

统计和机器学习工具箱™提供了几种顺序特征选择功能:

  • 逐步回归是一种序列特征选择技术,专门为最小二乘拟合而设计。的函数步骤行程stepwiseglm使用仅具有最小二乘标准的优化。与其他顺序特征选择算法不同,基于所指定的标准,逐步回归可以删除已添加或添加已删除功能的功能“标准”名称-值对的论点。

  • 序列使用自定义标准执行顺序特征选择。输入参数包括预测器数据、响应数据和实现标准函数的文件的函数句柄。您可以定义一个标准函数来度量数据的特征或学习算法的性能。可选输入允许您指定SFS或SBS、所需或排除的特性以及特性子集的大小。的函数调用CVPartition.crossval在不同的候选集上评估准则。

  • FSCMRMR.使用最小冗余最大关联(MRMR)算法对特征进行分类。

选择具有比较预测力的特征子集

此示例使用自定义标准选择特征子集,该常规标准测量推广线性回归问题的预测功率。

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

RNG(456)%设置种子以进行再现性n = 100;m = 10;X =兰德(n, m);B = [1 0 0 2 5 0 0 0.1 0 1];Xb = X * b”;p = 1. / (1 + exp (xb));N = 50;y = binornd(氮、磷);

为使用的数据拟合一个逻辑模型fitglm

Y = [Y N*ones(size(Y))];model0 = fitglm (X, Y,“分布”'二重子'
model0 =广义线性回归模型:logit(y) ~ 1 + x1 + x2 + x3 + x4 + x5 + x6 + x7 + x8 + x9 + x10估算SE tStat pValue _________ _______ ________ __________(截距)0.22474 0.30043 0.74806 0.45443 x1 0.68782 0.17207 3.9973 6.408e-05 x2 0.2003 0.18087 1.1074 0.26811 x3 -0.055328 0.18871 -0.29319 0.76937 x4 2.2576 0.1813 12.452 1.3566e-35 x5 0.54603 0.16836 3.2432 0.0011821 x6 0.069701 0.17738 0.39294 0.69437 x7 -0.22562 0.16957 -1.3306100个观测值,89个误差自由度

展示拟合的偏差。

dev0 = model0。异常
dev0 = 101.5648

这个模型是完整的模型,具有所有的特征和一个初始常数项。序列特征选择在完整模型中搜索具有比较预测能力的特征子集。

在执行功能选择之前,必须指定用于选择功能的标准。在这种情况下,标准是拟合的偏差(剩余平方和的剩余总和的概括)。这克里斯函数(在本例的最后显示)调用fitglm并返回拟合的偏差。

如果在本例中使用活动脚本文件,则克里斯功能已包含在文件的末尾。否则,您需要在.m文件末尾创建此函数,或将其添加为Matlab路径上的文件。

执行功能选择。序列通过函数句柄调用标准函数。

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个特征中的4个:列145, 和10X,如逻辑向量中所示inmodel.返回序列

减少模型的偏差高于完整模型的偏差。然而,添加任何其他单个特征不会超过绝对容差的标准值降低标准值,MaxDev.,设置在选项结构中。添加没有效果的功能将偏差降低了具有一定程度自由的Chi-Square分布的量。添加一个重要的功能会导致偏差的更大变化。通过设置MaxDev.Chi2inv(.95,1),你指导序列要继续添加功能,还提供了偏差的变化超过随机机会预期的更改。

用初始常数项创建简化模型。

模型= fitglm(x(:,inmodel),y,“分布”'二重子'
模型=广义线性回归模型:logit(y) ~ 1 + x1 + x2 + x3 + x4Estimate SE tStat pValue __________ _______ _________ __________ (Intercept) -0.0052025 0.16772 -0.031018 0.97525 x1 0.73814 0.16316 4.52441 6.0666e-06 x2 2.2139 0.17402 12.722 4.4369e-37 x3 0.54073 0.1568 3.4485 0.00056361 x4 1.0694 0.15916 6.7191 1.8288e-11 100个观测值,95个误差自由度1 Chi^2-statistic vs. constant model: 216, p-value = 1.44e-45

此代码创建功能克里斯

功能dev = critfun(x,y)model = fitglm(x,y,“分布”'二重子');dev = model.deviance;结尾

另请参阅

||

相关话题