二元分类的变量选择过程

机器算法验证 机器学习 分类 多重比较 多元分析 特征选择
2022-02-06 03:30:19

当学习集中的变量/特征多于观察值时,您更喜欢二元分类变量/特征选择是什么?这里的目的是讨论什么是最好地减少分类错误的特征选择过程。

我们可以修正符号以保持一致性:对于i{0,1}, 让{x1i,,xnii}是来自组的观察学习集i. 所以n0+n1=n是学习集的大小。我们设置p为特征的数量(即特征空间的维度)。x[i]表示i-th 坐标xRp.

如果您不能提供详细信息,请提供完整的参考资料。

编辑(不断更新):以下答案中提出的程序

由于这是社区 wiki,因此可以进行更多讨论和更新

我有一个说法:在某种意义上,你们都给出了一个允许变量排序但不允许变量选择的过程(你对如何选择特征数量非常回避,我猜你们都使用交叉验证?)你能改进这个方向的答案?(因为这是社区 wiki,所以您不需要成为答案作者来添加有关如何选择变量数量的信息?我在这个方向上打开了一个问题在这里交叉验证非常高维度(选择数量在非常高维分类中使用的变量)

4个回答

一种非常流行的方法是惩罚逻辑回归,其中最大化对数似然和由 L1 范数(“套索”)、L2 范数(“岭”)组成的惩罚项的总和,两者的组合(“弹性”),或与变量组相关的惩罚(“组套索”)。这种方法有几个优点:

  1. 它具有很强的理论特性,例如,参见 Candes & Plan 的这篇论文,并与压缩感知密切相关;
  2. 它有可访问的说明,例如,弗里德曼-哈斯蒂-蒂布希拉尼(Friedman-Hastie-Tibshirani)的《统计学习要素》 (可在线获取);
  3. 它有现成的软件来拟合模型。R 有glmnet包,它非常快并且适用于相当大的数据集。Python 有scikit-learn,其中包括 L1 和 L2 惩罚逻辑回归;
  4. 它在实践中运行良好,如图像识别、信号处理、生物识别和金融领域的许多应用论文所示。

我对Leo Breiman 和 Adele Cutleer 的Random Forests有一点偏爱,原因如下:

  • 它允许处理分类和连续预测变量,以及不平衡的类样本大小;
  • 作为一种集成/嵌入方法,交叉验证被嵌入并允许估计泛化误差;
  • 它对其调整参数(选择用于种植树的变量的百分比,构建的树的数量)相对不敏感;
  • 它提供了变量重要性的原始度量,并且能够揭示变量之间的复杂相互作用(尽管这可能导致难以阅读的结果)。

一些作者认为它的性能与惩罚 SVM 或梯度提升机一样好(参见例如 Cutler 等人,2009 年关于后一点的内容)。

对其应用或优势的完整介绍可能不在主题之列,因此我建议阅读 Hastie 等人的Elements of Statistical Learning(第 15 章)和 Sayes 等人。(2007)进一步阅读。

最后但同样重要的是,它在 R 中有一个很好的实现,带有randomForest包。其他 R 包也扩展或使用它,例如partycaret

参考:

Cutler, A.、Cutler, DR 和 Stevens, JR (2009)。基于树的方法,在癌症研究中的高维数据分析中,Li, X. 和 Xu, R.(编辑),第 83-101 页,Springer。

Saeys, Y.、Inza, I. 和 Larrañaga, P. (2007)。生物信息学特征选择技术综述。生物信息学23(19):2507-2517。

大都会扫描/MCMC

  • 随机选择几个特征作为开始,仅在它们上训练分类器并获得错误。
  • 对此工作集进行一些随机更改 - 删除一个功能,随机添加另一个功能或用当前未使用的功能替换某些功能。
  • 训练新的分类器并得到它的错误;dE将新集的误差减去前集的误差存储在差值中。
  • 有可能min(1;exp(-beta*dE))接受这个变化,否则拒绝它并尝试另一个随机变化。
  • 重复很久,最后返回全局实现最小误差的工作集。

beta您可以通过更明智的参数控制来扩展它。更简单的方法是在随着时间的推移增加(物理类比中的温度降低)时使用模拟退火,beta以减少波动并将算法推向最小值。更难的是使用副本交换

如果您只对泛化性能感兴趣,最好不要执行任何特征选择,而是使用正则化(例如岭回归)。机器学习社区在特征选择方面存在一些公开挑战,依赖正则化而不是特征选择的方法通常至少表现得一样好,如果不是更好的话。