[文献阅读]Large-Scale Meta-Heuristic Feature Selection Based on BPSO Assisted Rough Hypercuboid Approach

摘要

在构建更紧凑高效的模型中,选择重要特征是数据挖掘(data mining)领域的一项重要的数据预处理任务(data pre-processing task)。粗糙超立方体方法是一种新兴技术,可用于消除不相关和冗余特征,特别是近似数值分类(approximate numerical classification)中的不准确性问题(inexactness problem)上。

通过融合基于元启发式的进化搜索技术,本文提出了一种新的数值特征全局搜索方法,这种方法基于粗糙超立方体方法和二进制粒子群优化(BPSO)算法,即RH-BPSO。为了进一步减轻处理大规模数据时的高计算成本问题,我们提出了通过水平数据分区(horizontal data partitioning)分解和重组超立方体等价划分矩阵(hypercuboid equivalence partition matrix)来计算混合特征评分标准(hyprid feature evaluation criteria)并行化方法(parallelization approach)。我们开发了一个分布式元启发式优化的粗糙超立方体特征选择算法(DiRH-BPSO)算法,并将其嵌入到Apache Spark云计算模型中。广泛的实验结果表明RH-BPSO具有前景,能够在分类精确性、所选特征子集的基数以及执行效率方面显著超越其他代表性特征选择算法。此外,分布式内存多核集群(distributed-memory multicore clusters)上的实验表明 DiRH-BPSO 显著快于其顺序(sequential)方法,并且完全有能力快速完成大规模特征选择任务,这是单个节点由于内存限制而无法完成的任务。并行伸缩性和扩展性分析(parallel scalability and extensibility analysis)也表明 DiRH-BPSO 能够随着计算节点和数据量的增长而良好地扩展和延伸。

相关概念

Rough Hypercuboid Approach 粗糙超立方体方法

粗糙超立方体用于特征选择的概念在之前的博客中已基本提及,本文献在这方面写得更加简洁清晰。分别给出了如下定义:

  1. 超立方体等价划分矩阵H(A_k)
  2. 混淆向量V(A_k)
  3. 上下近似\overline{A}(\beta_i)\underline{A}(\beta_i),特征A_k关于决策特征集D的依赖度\gamma_{A_k}(D)
  4. 多特征的超立方体等价划分矩阵H(\{A_k,A_l\})
  5. 特征A_k关于特征集合\{A_k,A_l\}的重要度\sigma _{\{A_k,A_l\}}(D,A_k)
  6. 特征子集S\subseteq C的平均依赖度\textit{J}_{\textup{relev}}SD之间的依赖度\textit{J}_{\textup{depen}}S的平均重要度\textit{J}_{\textup{signf}}

Particle Swarm Optimization (PSO) 粒子群优化

PSO是一种基于群体智能(swarm intelligence)的生物启发元启发式优化算法。PSO具有概念简单、参数少、收敛快等优点,是处理大量特征描述数据的理想算法。

在PSO中,假设搜索空间是d维的,一系列粒子在群体中随机生成。每个粒子表示一个可能的解,第i个粒子的位置向量和速度向量分别为X_i=(x_{i1},x_{i2},\dots,x_{id})V_i=(v_{i1},v_{i2},\dots,v_{id})。每个粒子通过追随两个最佳位置(best positions)来调整自己的位置。一个是个体最优位置P_i=(p_{i1},p_{i2},\dots,p_{id}),另一个是群体的全局最优位置P_g=(p_{g1},p_{g2},\dots,p_{gd})。在迭代过程中,为搜索全局最优解,第i个粒子按如下方式更新:

v_{ij}^{t+1}=w\times v_{it}^t+c_1\times r_1\times(p_{ij}^t-x_{ij}^t)+c_2\times r_2\times(p_{gj}^t-x_{ij}^t)

x_{ij}^{t+1}=x_{ij}^t+v_{ij}^{t+1}

其中w惯性权重(inertia weight)c_1c_2个体和全局学习因子(personal and social learning factors),通常为2;r_1r_2[0,1]范围内的随机值。此外,v_{it}^t应该被限制在一定的范围[V_{min},V_{max}]内。

Binary Particle Swarm Optimization (BPSO) 二进制粒子群优化

PSO的二进制版本,用于处理离散的二进制变量。每个粒子的位置向量的每个维度用1或0表示,速度向量表示位置向量变为1的概率。如下的sigmoid函数可以用于维度中的连续值转化为该维度内[0,1]的概率值。粒子位置可以按如下更新:

x_{ij}^{t+1} = \begin{cases} 1, & \text{if } r < s(v_{ij}^{t+1}) \\ 0, & \text{otherwise} \end{cases}

BPSO-Assisted Rough Hypercuboid Approach BPSO辅助的粗糙超立方体方法

为了将BPSO应用于特征选择问题,粒子位置向量的每个维度的“1”或“0”表示一个特征是否选择,在某一维度上的速度越大,相应特征被选中的概率就越大。为了解决随机生成的粒子缺乏先验知识的问题,条件特征与决策特征之间的相关性(relevance between conditional features and the decision features)被作为粒子初始化的依据,以实现更好的收敛速度(convergence speed)

图1

图1所示的是一个粒子,用二进制位表示了特征选择结果。

Initial Particle Generation 初始粒子生成

在粒子初始化阶段,考虑了粗糙超立方体方法中每个条件特征与决策特征之间的相关性标准,为了增强群体的局部探索能力,提出了一种新的群体初始化策略来生成初始粒子,如下所示:

x_{ij}=\begin{cases} 1,& r\leq 1-\frac{\textup{rank}(\gamma_{A_j}(D))}{m} \\ 0, & \textup{otherwise }\end{cases}

该公式表明,一个特征的相关性越大,对应位置分量为“1”的概率就越大。

Intertia Weight Setting 惯性权重设置

惯性权重w控制着粒子前一次速度对当前速度的影响,采用如下线性递减策略:

w = w_{max} - \frac{w_{max} - w_{min}}{M} \times t

其中w_{max}w_{min}是预设的最大和最小惯性权重值,M是最大迭代次数。公式表明,粒子在迭代开始时倾向于有更快的速度和更好的全局搜索能力,随着迭代次数的累积,速度逐渐减小,局部搜索能力逐渐增强。

Fitness Function Calculation 适应度函数计算

在BPSO算法的每次迭代中,需要为群体中的所有粒子评估一个适应度函数,适应度可以定义为在特征子集的基数较小的情况下保持良好的分类能力。本文提出了一种新的归一化适应度函数,该函数考虑了平均相关性、依赖性和平均重要性的值范围。

\textup{Fitness} = \omega \frac{J_{relev}}{max_{A_i \in S}\{\gamma_{A_i}(D)\}} + \lambda(1 - \omega) \frac{J_{depen}}{\gamma_C(D)} +\\ (1 - \lambda)(1 - \omega) \frac{2 \times J_{signf}}{max_{1 \leq i,j \leq m}\{sig_{ij}\}}

Mutation Operation 变异操作

遗传算法中的变异操作允许粒子以一定的概率逃离局部最优解。变异操作按如下公式实现:

x_{ij} = \begin{cases} \neg x_{ij}, & r \leq r_{\text{mut}} \\ x_{ij}, & \text{otherwise} \end{cases}

其中r_{\text{mut}} = r_{\text{min}} + \frac{r_{\text{max}} - r_{\text{min}}}{M} \times t,表示随着迭代次数增加,粒子的变异率提高,粒子的搜索能力越强。

综上,RH-BPSO算法的伪代码如下:

图2 BPSO-RH伪代码
Parallel Meta-Heuristic Feature Selection 并行元启发式特征选择
Apache Spark Computing Model

Apache Spark是一个统一的分析引擎,用于基于Hadoop MapReduce计算模型的优化开发大规模分布式程序(large-scale distributed programs)。Spark可以将中间数据存储在内存中,以节省大量的磁盘I/O操作时间。通过避免不必要的数据移动,Spark在迭代机器学习任务中的性能比Hadoop提高了10倍。当前工作中算法的并行化是在Spark的独立模式(standalone mode)下实现的,其部署在图3中描述。

图3 standalone mode下的Spark集群

在Spark的独立模式中,每个工作节点上有一个或多个执行器进程(executor process)。每个执行器包含一个线程池(thread pool),每个线程是任务,可以被视为Spark的执行单元Spark中并行操作的基本对象是弹性分布式数据集(resilient distributed dataset, RDD),它代表了分布在Spark集群中的只读对象集合。

所有并行操作可以分为两类:转换(transformation),它返回从原始RDD转换来的新RDD;以及动作(action),它返回执行一系列操作后的结果。以下是一些与本文最相关的操作:

  1. Map:允许用户定义的函数操作RDD的每条记录;
  2. ReduceByKey:合并具有相同键的记录,并根据用户定义的函数处理它们,此外,这个操作可以先在本地合并记录;
  3. Collect:收集集群中RDD的数据,然后将它们返回给主节点并以数组形式存储;
  4. Persist:根据存储级别将RDD缓存到内存或磁盘,相反,unpersist可以释放缓存的RDDs。
Conceptual Parallelization Logic 概念并行逻辑

为利用分布式内存集群的计算能力来提高所提出的元启发式粗糙超立方体方法的搜索效率,数据的水平分割(horizontal partitioning)是在集群节点之间分配计算负载的最自然方式,本节开发的并行算法是通过在Spark上水平地将数据集分割成多个块来实现的。

文章中的算法2-6说明了一些超立方体等价划分矩阵的相关计算可以用Apache Spark来加速。

  • 31
    点赞
  • 52
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值