特征选择与特征学习
在机器学习的具体实践任务中,选择一组具有代表性的特征用于构建模型是非常重要的问题。特征选择通常选择与类别相关性强、且特征彼此间相关性弱的特征子集,具体特征选择算法通过定义合适的子集评价函数来体现。
在现实世界中,数据通常是复杂冗余,富有变化的,有必要从原始数据发现有用的特性。人工选取出来的特征依赖人力和专业知识,不利于推广。于是我们需要通过机器来学习和抽取特征,促进特征工程的工作更加快速、有效。
特征选择
特征选择的目标是寻找最优特征子集。特征选择能剔除不相关(irrelevant)或冗余(redundant )的特征,从而达到减少特征个数,提高模型精确度,减少运行时间的目的。另一方面,选取出真正相关的特征简化模型,协助理解数据产生的过程。
特征选择的一般过程如下图所示:
图中,(1)子集产生:按照一定的搜索策略产生候选特征子集;(2)子集评估:通过某个评价函数评估特征子集的优劣;(3)停止条件:决定特征选择算法什么时候停止;(4)子集验证:用于验证最终所选的特征子集的有效性。
特征选择的搜索策略
特征选择的搜索策略分为:完全搜索策略、启发式策略以及随机搜索策略。
特征选择本质上是一个组合优化问题,求解组合优化问题最直接的方法就是搜索,理论上可以通过穷举法来搜索所有可能的特征组合,选择使得评价标准最优的特征子集作为最后的输出,但是n个特征的搜索空间为2n,穷举法的运算量随着特征维数的增加呈指数递增,实际应用中经常碰到几百甚至成千上万个特征,因此穷举法虽然简单却难以实际应用。其他的搜索方法有启发式的搜索和随机搜索,这些搜索策略可以在运算效率和特征子集质量之间寻找到一个较好的平衡点,而这也是众多特征选择算法努力的目标。
* 完全搜索(Complete)
- 广度优先搜索( Breadth First Search )
广度优先遍历特征子空间。枚举所有组合,穷举搜索,实用性不高。- 分支限界搜索( Branch and Bound )
穷举基础上加入分支限界。例如:剪掉某些不可能搜索出比当前最优解更优的分支。
其他,如定向搜索 (Beam Search ),最优优先搜索 ( Best First Search )等
启发式搜索(Heuristic)
- 序列前向选择(S