Parallel Implementation of Decision Tree Learning Algorithms

1. Intro

  • 和其他分类方法相比,建立Decision tree更快,而且有时候能够获得相近或者更高的准确率
  • 但是,决策树的并行实现有几个难点:树的形状是不规则,而且是运行时才确定的, static的分配策略会造成imbalance问题;树的一个node的子node并行执行时,它们需要父节点的部分数据,因此需要processor间data移动,如果数据划分的不够好,poor locality会降低性能

2. Related Work

2.1. Task parallelism

  • 将决策树的node分配到不同的processor上
  • 缺点是, bad load balance,因为不同processor处理的树的大小是不一致的

2.2. Data parallelism

  • 将训练数据划分到不同的processor上,划分策略有水平划分和垂直划分
  • 垂直划分,一个processor处理训练数据的一部分属性。垂直划分还是有load imbalance的问题,因为连续属性与离散属性相比,需要更多的计算
  • 水平划分,将数据平均划分到processor上。需要在不同processor间通信以获得最佳的split;对每个属性,建立独立的value list;每个node进行split时,在不同processor之间有很高的通信负担

2.3. Hybrid parallelism

  • 同时使用Task parallelism和Data parallelism

3. C4.5 parallel implementation

  • 水平划分策略,与SLIQ (SPRINT: A scalable parallel classifier for data mining)类似
  • 连续属性的lists,根据属性的值,进行全局的sorting
  • C4.5的limitation:对连续属性,每个node反复地sort训练examples
  • 并行tree构建过程主要是两个问题:split和找到最佳的split
  • 每个processor统计本地数据的每个属性的分布情况,然后发送给其他的processor;最佳split找到后,创建child node,相应地划分数据
  • 为每个属性建立独立的list,这样能够避免每次evaluate一个连续属性时都要重复排序
  • SPRINT避免保存class list,把属性list扩展其他两个fields,训练数据的class label和global index

你可能感兴趣的:(Parallel Implementation of Decision Tree Learning Algorithms)