很多人学习或者了解随机森林时,查到的资料都是先讲熵,再讲决策树,然后再讲随机森林,前面坚持不下来或者一个地方没理解透彻,导致后面理解不透彻,而且公式讲解不够清晰,例子不够详细,很难让小白彻底搞清楚到底是怎么回事。这里呢就先讲整体知识架构,然后再学习公式,最后带着大家一起算一个实际的场景应用,切身体会其计算过程。
一、随机森林宏观介绍
随机森林,顾名思义,用随机的的方式构建森林,森林是由树组成的,而随机森林的树就是决策树。为什么认为多个决策树结果比一个决策树结果好呢?大家可以理解为三个臭皮匠顶上一个诸葛亮。这里还要说其他只讲公式博客中忽略的地方,有四点增加大家对随机森林的理解:
1、从样本中Bagging(有放回)选出一份数据集画一棵树,多棵树就要选多次数据集,随机森林中的随机第一部分指的就是这里;
2 、确定节点选择哪个属性划分时,如果属性数量较多,需要先从所有属性中随机选出一些属性,然后从这些属性中选出最优,随机森林中的随机第二部分指的就是这里,使决策树的多样性不仅来自于样本的选择,也来自于属性的选择;
3 、最终结果由所有决策树投票决定,没涉及到权重(如图 1-1);
4 、建树的数量由多种因素决定,比如数据集大小、计算资源等,一般来说在几十到一千之间;
二、决策树宏观介绍
决策树很好理解,就是根据判断条件形成一个树状结构,对结果进行判断,比如图 2-1就是顾客是否会买裤子的决策树模型。构建决策树的重点在于如何选择根节点和内部节点,根节点对应图2-1中的材料,内部节点对应图2-1中的裤型、尺寸、价钱。
决策树的发展主要经过了三个阶段,这三个阶段本质区别就是如何选择下一个内部节点。这三个阶段分别是:
1 、用信息增益选择下一个内部节点,代表算法是 ID3;
2 、用信息增益率选择下一个内部节点,代表算法是 C4.5;
3 、用基尼指数选择下一个内部节点,代表算法是 CART;
目前,随机森林中的决策树都是根据基尼指数来构建的。
三、随机森林四种实现方法
随机森林是常用的机器学习算法,既可以用于分类问题,也可用于回归问题。本文对 scikit-learn、Spark MLlib、DolphinDB、XGBoost 四个平台的随机森林算法实现进行对比测试。评价指标包括内存占用、运行速度和分类准确性。
测试结果如下:
想加微信算法交流群的朋友可以先扫码加我微信,我拉你进群。