Random Forests (随机森林)
随机森林的思想很简单,百度百科上介绍的随机森林算法比较好理解。
在机器学习中,随机森林是一个包含多个决策树的分类器, 并且其输出的类别是由个别树输出的类别的众数而定。 Leo Breiman和Adele Cutler发展出推论出随机森林的算法。 而 "Random Forests" 是他们的商标。 这个术语是1995年由贝尔实验室的Tin Kam Ho所提出的随机决策森林(random decision forests)而来的。这个方法则是结合 Breimans 的 "Bootstrap aggregating" 想法和 Ho 的"random subspace method"" 以建造决策树的集合。
学习算法
优点
缺点
or
学过决策树和信息论的,对这个概念都有了解。其中j表示第j棵树,i表示第i个分类结果。K表示总的分类数。
对有一个给定的结合S(在线预测中给定),每棵树上叶子节点Pj的的概率可以表示为:
如果要在Pj叶子节点分类,那么,得到二个叶子节点的概率可以用下式表示:
and
解释一下 Pjls,l为left,s为测试集合。所以Pjls表示为在集合S中Pj叶子节点的分列的左节点。同理,Pjrs表示为在集合S中Pj叶子节点的分列的右节点。
那么,每棵树上叶子节点Pj分裂必须符合以下二个条件:
1. 落在叶子节点Pj的个数必须大于一个常数(可以人工设定)
2. 叶子节点的Gini必须大于一个常数(可以人工设定),Gini计算公式如下:
以上步骤就完成整个树的更新。
下面给出了在线随机森林算法的流程:
步骤3. 用个possion分布确定从采样的次数,其原理见online boosting: http://www.cnblogs.com/liqizhou/archive/2012/05/10/2494145.html
步骤6. u代表分类的类别。
步骤7. j代表第t棵树上叶子节点。
步骤8. 统计第j个叶子节点的数目和计算Gini
步骤9. 判断条件是否分裂的二个条件。
步骤10. 在符合条件的叶子节点中,选择一个Gini最大的叶子节点作为分类节点。
以上就是online Random forests 的主要思想。
这个程序特别牛,我跑了一下,挺牛逼的,效果没比offline mode差不多。如果你需要做online learning的话十分推荐。
以上是我个人的理解,如有错误,请留言告诉我,本人感激不尽。
作者:BIGBIGBOAT/Liqizhou