sklearn实现孤⽴森林_⼿把⼿⼀⽂看懂随机森林
全⽂共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则意味着没有限制。
· 随机数⽣成器:使模型的输出可复制。当模型具有⼀个确定的随机数,并且给定相同的超参数和相同的训练数据时,模型将始终产⽣相同的结果。
· 是否计算袋外得分:也称作袋外抽样——它是⼀种随机森林交叉验证⽅法。在这个样本中,⼤约三分之⼀的数据不是⽤来训练模型,⽽是⽤来评估模型的性能。这些样品被称为袋外样品。这⼀⽅法与留⼀法交叉验证⾮常相似,但⼏乎没有额外的计算负担。
Python实现
查看/下载位于Git存储库中的随机森林模板:
资源:
留⾔ 点赞 发个朋友圈
我们⼀起分享AI学习与发展的⼲货
欢迎关注全平台AI⾃媒体 “读芯术”

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。