特征选择算法分为三类:包装类、过滤类和嵌入类方法。
包装类方法使用预测模型给特征子集打分。每个新子集都被用来训练一个模型,然后用验证数据集来测试。通过计算验证数据集上的错误次数(即模型的错误率)给特征子集评分。由于包装类方法为每个特征子集训练一个新模型,所以计算量很大。不过,这类方法往往能为特定类型的模型找到性能最好的特征集。
过滤类方法采用代理指标,而不根据特征子集的错误率计分。所选的指标算得快,但仍然能估算出特征集好不好用。常用指标包括[互信息]、逐点互信息、皮尔逊积矩相关系数、每种分类/特征的组合的帧间/帧内类距离或[显著性测试]评分。 过滤类方法计算量一般比包装类小,但这类方法找到的特征子集不能为特定类型的预测模型调校。由于缺少调校,过滤类方法所选取的特征集会比包装类选取的特征集更为通用,往往会导致比包装类的预测性能更为低下。不过,由于特征集不包含对预测模型的假设,更有利于暴露特征之间的关系。许多过滤类方法提供特征排名,而非显式提供特征子集。要从特征列表的哪个点切掉特征,得靠[交叉验证]来决定。过滤类方法也常常用于包装方法的预处理步骤,以便在问题太复杂时依然可以用包装方法。
嵌入类方法包括了所有构建模型过程中用到的特征选择技术。这类方法的典范是构建线性模型的LASSO方法。该方法给回归系数加入了L1惩罚,导致其中的许多参数趋于零。任何回归系数不为零的特征都会被LASSO算法“选中”。LASSO的改良算法有Bolasso。Bolasso改进了样本的初始过程。FeaLect根据回归系数组合分析给所有特征打分。 另外一个流行的做法是递归特征消除(Recursive Feature Elimination)算法,通常用于支持向量机,通过反复构建同一个模型移除低权重的特征。这些方法的计算复杂度往往在过滤类和包装类之间。
这里列举了当前的一些特征选择的算法
- LASSO / Ridge Regression/ Elastic Net,
- AIC / BIC,Adaptive LASSO,
- Hilbert-Schimdt Independence Criterion (HSIC),
- Distance Correlation.
- Heller-Heller-Gorfine Tests of Independence,
- Hoeffding's D test,
- Bergsma-Dassios T* sign covariance,
- Ball correlation,
- BET: Binary Expansion Testing,
- qad:Quantification of Asymmetric Dependence,
- MixedIndTests
- NNS: Nonlinear Nonparametric Statistics.
- Copula熵?
特征选择:11 种特征选择策略总结 (qq.com)
“特征选择”意味着可以保留一些特征并放弃其他一些特征。本文的目的是概述一些特征选择策略:
删除未使用的列
删除具有缺失值的列
不相关的特征
低方差特征
多重共线性
特征系数
p 值
方差膨胀因子 (VIF)
基于特征重要性的特征选择
使用 sci-kit learn 进行自动特征选择
主成分分析 (PCA)