首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >特征选择滤波方法

特征选择滤波方法
EN

Data Science用户
提问于 2019-08-14 21:21:23
回答 2查看 178关注 0票数 1

我对何时使用哪种过滤方法进行特征选择感到困惑。我试图通过在线资源来学习它们,并找到了一些方法,如卡方法、方差阈值法、F检验法、互信息法等。当我阅读这些方法时,我对该使用哪一种方法感到困惑。我如何知道该方法是否真的选择了最相关的特性,并且没有删除任何实际上是导致输出的特性?

EN

回答 2

Data Science用户

发布于 2019-08-15 01:46:02

通常,您需要将特征选择筛选方法包装在交叉验证方案中。下面是这样一个算法的示例,假设您也在调优超参数。

  1. 将数据分成训练和测试。
  2. 将训练集分割成k个折叠。
  3. 对于每一次超参数优化迭代,请使用交叉验证,即do

对于每一个k折叠,对于迭代i =1 to k,做1)让验证集是折叠i,而“内部训练”集是不等于折叠i。2)使用过滤方法,使用内部训练集上的一些截止值来选择特性的某些子集。例如,我可能筛选出与目标变量y的绝对相关性小于p= 0.3的变量。3)拟合模型。4)预测验证集=折叠i.评分模型,即评估您想要优化的函数,如日志丢失、均方/绝对误差、Brier等。结束

在完成了对一组超参数的交叉验证之后,取所有k折叠的平均分数。如果得分优于在前一次迭代中发现的前一组超参数,则保存这些超参数。

注意:您可以选择有p,您的过滤器截止,也是一个超参数在这里。为了简单起见,我将它保持不变,但通常情况下,如果您也调优过滤截止值,您可能会做得更好。

  1. 使用相同的(或者最好的,如果您让它是一个超参数并在步骤3中对其进行优化)筛选截止p,以及在步骤3的交叉验证过程中找到的最佳超参数,使用在步骤1中创建的训练集,并符合您的“最终”模型。也就是说,使用与步骤3完全相同的过滤方法,用截止值p过滤训练集。然后,使用步骤3中的最优超参数对这个数据集拟合一个模型。
  2. 在步骤4中用你的拟合模型来预测测试集,给模型评分。

最后,再次重复整个过程,但这一次,不要执行任何筛选选择方法(省略筛选过程)。在交叉验证中使用完全相同的种子,并在步骤1中的初始拆分处使用相同的种子,以确保您在使用筛选时以相同的方式拆分数据。现在,比较测试集的分数,看看使用过滤方法是否有任何好处。

一般来说,我不喜欢基于过滤器的方法,因为它们都引入了一些任意的截止值=p,而且都是单变量的(它们不考虑模型中的其他变量,只是孤立地)。话虽如此,他们很快,他们可能会为你的问题工作。

编辑:此外,根据您拥有的数据数量和验证分数的可变程度,可能需要对上述整个算法(步骤1至步骤5)进行多次重复,以获得使用筛选和不使用筛选之间的有效比较。您可以重复上面的算法,例如,N次,一次用过滤,一次没有,总共2N次。然后,您将计算平均值(使用过滤方法查找N次重复的平均分数,并在相同的N次重复上找出平均分数而不进行过滤)。然后,你可以比较分数,形成信心间隔,等等,为一个更值得信赖(但也更耗时)的比较。

希望这能有所帮助。

票数 1
EN

Data Science用户

发布于 2019-10-07 17:11:59

如果有标签数据,请检查递归功能消除(RFE)。

这正好指出了你的问题:我怎么知道这个方法是否真的选择了最相关的特性,并且没有删除任何实际上是导致输出的特性?

https://scikit-learn.org/stable/modules/generated/sklearn.feature_selection.RFE.html

来自文档

给定赋予特征权重的外部估计器(例如线性模型的系数),递归特征消除(RFE)的目标是通过递归地考虑越来越小的特征集来选择特征。首先,对估计器进行关于初始特征集的培训,并通过coef_属性或feature_importances_属性获取每个特征的重要性。然后,将最不重要的特征从当前的一组特征中删除。该过程在剪枝集上递归重复,直到最终达到所需的要选择的功能数。

希望能帮上忙!

票数 0
EN
页面原文内容由Data Science提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://datascience.stackexchange.com/questions/57570

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档