11.74 并行大规模特征选择
特征选择是从原始特征中选择一些子集,也称最佳子集选择或属性约简。特征选择本质上继承了奥卡姆剃刀(Occam's Razor)的思想,即从一组特征中选出一些最有效的特征,使之构造出来的模型更好。作为典型的数据降维方法,针对于“维灾难”,可以达到降维的目的。对于分类来说,特征选择可以从众多的特征中选择对分类最重要的那些特征,去除原数据中的噪音,同时避免过度拟合,改进预测性能,使学习器运行更快、效能更高,而且通过剔除不相关的特征可使模型更为简单,容易解释。
图 1 展示了特征选择的基本框架[5] 。首先,通过搜索策略从特征全集中产生出候选特征子集。然后用评价函数对该特征子集进行评价,评价的结果与停止准则进行比较,若评价结果比停止准则好就停止;否则就继续产生下一组特征子集,继续进行特征选择。选择的特征子集一般还要验证其有效性。
但在大数据处理中,由于其具有数据量大、特征维度高等特点,使得传统的特征选择算法效率降低甚至无法处理。为解决这一问题,我们给出了一个统一的并行大规模特征选择框架,如图 2 所示。主要步骤为:① 通过一种搜索策略(如启发式搜索)产生一组候选特征集 {a 1,a2 ,…,a k }, 采用模型并行方法同时计算这些特征的重要度。② 在评价单一特征a i 时,根据当前的最优子集 R 和 a i 选取对应的数据,采用数据并行方法进行并行计算。③ 汇总这些候选特征集的结果,选取最优特征,加入到最优子集 R中。重复以上过程,直到满足停止基准。该框架是一个通用的特征选择框架,适用于多数现有的特征选择算法。不同的特征选择算法可以从数据并行层面、模型并行层面、方法层面得到多重性能加速。在模型并行层面,采用多线程方式启动多个任务来同时评价多个(或所有)候选特征。在数据并行层面,采用云计算平台中最流行的 Spark 平台进行并行加速。在方法层面,利用粒计算理论中的粒度粗化细化原理,可以在不同“信息粒表示”之间快速增量式切换,这里“信息粒表示”的构建是并行评价候选特征的必要计算步骤。最后,有机结合这三个方面,以最大限度提高特征选择的效率。基于该框架,我们在文献 [6] 中具体介绍四种常见的特征选择算法,给出了相应并行大规模算法,并进行实验验证,在不同类型的数据集上取得了很好的性能加速比。