全文共1755字,预计学习时长3分钟
本文来自The Learning Machine——一个开放源代码的新项目,该项目旨在为不同背景的人群创建交互式路线图,其中包含对概念、方法、算法及其在Python或R中的代码里实现所有的解释。
随机森林
随机森林是一种灵活的、便于使用的机器学习算法,即使没有超参数调整,大多数情况下也会带来好的结果。它可以用来进行分类和回归任务。通过本文,你将会学习到随机森林算法是如何解决分类和回归问题的。
为了理解什么是随机森林算法,首先要熟悉决策树。
决策树往往会产生过拟合问题,尤其会发生在存在整组数据的决策树上。有时决策树仿佛变得只会记忆数据了。下面是一些过拟合的决策树的典型例子,既有分类数据,也有连续数据。
1. 分类数据:
如果一位年龄在15岁到25岁之间的美国男性,他喜欢吃冰激凌,有位德国朋友,厌恶鸟类,2012年8月25日曾吃过薄煎饼——那么他很有可能下载Pokemon Go。
2. 连续数据:
随机森林阻止了这类问题的发生:它是多重决策树的组合,而不只是一棵决策树。随机森林算法下决策树的数量越多,泛化的结果更好。
更准确地说,随机森林的工作原理如下:
1. 从数据集(表)中随机选择k个特征(列),共m个特征(其中k小于等于m)。然后根据这k个特征建立决策树。
2. 重复n次,这k个特性经过不同随机组合建立起来n棵决策树(或者是数据的不同随机样本,称为自助法样本)。
3. 对每个决策树都传递随机变量来预测结果。存储所有预测的结果(目标),你就可以从n棵决策树中得到n种结果。
4. 计算每个预测目标的得票数再选择模式(最常见的目标变量)。换句话说,将得到高票数的预测目标作为随机森林算法的最终预测。
*针对回归问题,随机森林中的决策树会预测Y的值(输出值)。通过随机森林中所有决策树预测值的平均值计算得出最终预测值。而针对分类问题,随机森林中的每棵决策树会预测最新数据属于哪个分类。最终,哪一分类被选择最多,就预测这个最新数据属于哪一分类。
例子:
詹姆斯要决定在巴黎的一周要去哪些景点。他拜访了一位曾在巴黎住过一年的朋友,问朋友曾去过哪些景点,是否觉得有趣。基于自己的经验,这位朋友会给詹姆斯一些建议。
这是典型的决策树算法方法。詹姆斯的朋友根据自己的经验,告诉詹姆斯可以去哪些景点游览。
之后,詹姆斯问了很多在巴黎待过的朋友,询问建议,他们推荐了自己去过的景点。然后詹姆斯选择了被推荐次数最多的景点,这就是典型的随机森林算法。
因此,随机森林是一种在共拥有m个特征的决策树中随机选择k个特征组成n棵决策树,再选择预测结果模式(如果是回归问题,选择平均值)。
优缺点
优点:
1. 可以用来解决分类和回归问题:随机森林可以同时处理分类和数值特征。
2. 抗过拟合能力:通过平均决策树,降低过拟合的风险性。
3. 只有在半数以上的基分类器出现差错时才会做出错误的预测:随机森林非常稳定,即使数据集中出现了一个新的数据点,整个算法也不会受到过多影响,它只会影响到一颗决策树,很难对所有决策树产生影响。
缺点:
1. 据观测,如果一些分类/回归问题的训练数据中存在噪音,随机森林中的数据集会出现过拟合的现象。
2. 比决策树算法更复杂,计算成本更高。
3. 由于其本身的复杂性,它们比其他类似的算法需要更多的时间来训练。
重要的超参数
随机森林中的超参数既可以用来提高模型的预测能力,也可以加快建模的速度。下面介绍了sklearn内置随机森林函数的超参数:
1. 提高预测能力
· 子模型的数量:在利用最大投票数或平均值来预测之前,你想要建立子树的数量。一般来说,子树的数量越多,越能提高性能,预测的准确性就越稳定,但是也会放缓计算过程。
· 节点分裂时参与判断的最大特征数:随机森林允许单个决策树使用特征的最大数量。Sklearn提供了几个选项,如文档中所述。
· 叶子节点最小样本数:内部节点再划分所需最小样本数。
2. 加快建模速度
· 并行数:允许使用处理器的数量。如果输出值为1,只能使用一个处理器。输出值为-1则意味着没有限制。
· 随机数生成器:使模型的输出可复制。当模型具有一个确定的随机数,并且给定相同的超参数和相同的训练数据时,模型将始终产生相同的结果。
· 是否计算袋外得分:也称作袋外抽样——它是一种随机森林交叉验证方法。在这个样本中,大约三分之一的数据不是用来训练模型,而是用来评估模型的性能。这些样品被称为袋外样品。这一方法与留一法交叉验证非常相似,但几乎没有额外的计算负担。
留言 点赞 发个朋友圈
我们一起分享AI学习与发展的干货
欢迎关注全平台AI自媒体 “读芯术”