随机非参数学习算法,第 2 部分: 随机决策树的实(2)

而传统的 TDIDT 决策树(Top-Down Induction of Decision Trees,包括 ID3 和 C4.5 算法)其训练复杂度为, 其中, 而是第个特征的取值个数。显然,该类算法的算法复杂度与特征个数是超线性关系。在一般情况下,所以随机决策树算法的计算复杂度是远小于这类算法的。

精度和效率

前面简单介绍了随机决策树算法的实现和训练复杂度,这一节将简要介绍下其精度和训练效率,并与其他经典算法进行比较。

一个简单例子

该例子引自范伟博士的网站:有一二维的人造正负样本分布,如图 1 所示。其中红色为正样本,绿色为负样本。显然这个问题不是线性可分的,

图 1. 二维人造正负样本分布

图 1. 二维人造正负样本分布

下面图 2—图 5 分别给出随机决策树算法、决策树,线性 SVM 和 RBF 核的 SVM 算法的训练结果。

图 2. 随机决策树(训练时间 5 秒)

图 1. 随机决策树(训练时间 5 秒)

图 3. 决策树 (训练时间 1 秒)

图 3. 决策树 (训练时间 1 秒)

图 4. 线性 SVM(训练时间半天)

图 4. 线性 SVM(训练时间半天)

图 5. RBF SVM(训练时间 1 天)

图 5. RBF SVM(训练时间 1 天)

显然,随机决策树对原分布的估计是较好的,与 RBF SVM 的效果在同一水平上。而决策树算法则带来了明显的锯齿型边界,而线性 SVM 则无法将右上方的正样本正确划分。从训练时间看,SVM 开销非常大(可能未使用 SMO 方法),树的算法都很快。但是随机决策树算法的训练开销比决策树要高 5 倍,与我们前面的分析相反。这有两个原因,一是对于低维度问题,随机决策树算法的效率与决策树相比并没有明显优势。因为决策树算法的时间复杂度与特征数量的关系是超线性的,在特征较少时,其复杂度并不会太高,而随着特征的增长,计算复杂度会快速增长。二是这个实验是使用的随机决策树的原始实现,其效率并不是太高。

Dice 测试结果

我们从 Libsvm 选取了 9 个二分类数据集,这些数据集的统计信息列在表 1 中。

表 1. 从 Libsvm 选取的 9 个二分类数据集的统计信息  
Name   Feature Type   Feature Number   Train Data Number   Test Data Number   Train Data Size   Test Data Size  
a1a   Binary   123   1,605   30,956   0.11M   2.11M  
a9a   Binary   123   32,561   16,281   2.22M   3.33M  
mushrooms   Binary   112   7,124   1,000   0.753M   0.105M  
w1a   Binary   300   2,477   47,272   0.166M   3.15M  
w8a   Binary   300   49,749   14,951   3.31M   1.00M  
splice   Categorical   60   1,000   2,175   0.7M   1.48M  
cod-rna   Numeric   8   59,535   271,617   4.45M   20.3M  
covtype   Numeric   54   481,082   100,000   56.2M   11.6M  
gisette   Numeric   5,000   6,000   1,000   50.4M   8.52M  

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/63c7f13910665b4e89a4bd634216a610.html