码迷,mamicode.com
首页 > 其他好文 > 详细

Weka算法Classifier-tree-RandomForest源码分析(一)算法

时间:2014-09-09 13:03:08      阅读:398      评论:0      收藏:0      [点我收藏+]

标签:算法   源码   机器学习   weka   randomforest   


RandomForest

一、算法介绍

RandomForest应该算是一个特别简单但是有效的算法,其核心思想是通过训练和组合不同的决策树,形成森林,最后的分类结果由这多棵树进行投票来决定。

在介绍RandomForest之前,首先介绍一下Tree Bagging


二、Bagging

Bagging又叫做Booststrap Aggregatiing,也是一种组合多个分类器来得到一个能力更强的分类器的方法,其训练过程分两步:

1、对训练集进行有放回的抽样N次,得到训练集的一个子集作为新训练集,并使用新的训练集训练基分类器。

2、重复上述过程M次,得到M个分类器。

分类过程如下:

对于任意一个新的用例,使用M个分类器进行分类,最后的分类结果由这M个分类器投票决定。

Bagging的显而易见的好处有如下几个:

1、可并行化,多个基分类器之间的训练没有任何相关。

2、防止过拟合,对于某些出现概率小的噪点,抽样过程中抽到的概率较小,训练出的基分类器不受噪点影响。



三、RandomForest

RandomForest在Bagging的基础上又做了改进,过程如下:

训练:

1、对训练集进行有放回的抽样N次,得到训练集的一个子集作为新训练集。

2、在新的训练集中随机抽出训练集的K个属性,训练一棵分类树,并且不对这个分类树做剪枝操作。

3、重复上述过程M次,得到M个分类器。

判定:

1、对于任意一个新的用例,使用M个分类器进行分类,最后的分类结果由这M个分类器投票决定。


可以看出,RandomForest在Bagging的基础上,主要是增加了随机抽出K个属性进行训练,从经验上来讲,假设属性总量为X,则要求K<<X,一般取K=sqrt(X)。

经过这样的改进,RandomForest又有了如下的一些优点:

1、可以处理高纬度的数据,显而易见,每次抽取K个属性进行训练,提高训练速度。

2、可以评估每个属性的重要程度,根据子分类树的精确度,就可以评估属性的重要程度。

3、对于属性的遗失,可以很好的处理,因为各子分类树构建在不同的属性之上,可以只挑选一部分可用的子分类树进行判定






参考资料:

http://baike.baidu.com/view/5021113.htm?fr=aladdin

http://blog.csdn.net/abcjennifer/article/details/8164315

http://en.wikipedia.org/wiki/Random_forest

http://www.cnblogs.com/wentingtu/archive/2011/12/13/2286212.html

Weka算法Classifier-tree-RandomForest源码分析(一)算法

标签:算法   源码   机器学习   weka   randomforest   

原文地址:http://blog.csdn.net/roger__wong/article/details/39137333

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!