参考url:
https://jakevdp.github.io/PythonDataScienceHandbook/05.08-random-forests.html
无参数算法随机森林,是一种集成方法,通过集成多个比较简单的评估器形成累计效果,即若干评估器的多数投票(majority vote)的最终效果往往优于单个评估器投票的效果。
1、随机森林的诱因:决策树
随机森林是建立在决策树基础上的集成学习器。
决策树采用非常直观的方式对事物进行分类或打标签:只需问一系列问题就可以进行分类了。
二叉树分支方法可以非常有效地进行分类:在一颗结构合理的决策树中,每个问题基本上都可将种类可能性减半,即使是对大量种类进行决策时,也可以很快地缩小选择范围。
决策树的难点在于如何设计每一步的问题,在实现决策树的机器学习算法中,问题通常因分类边界是与特征轴平行的形式分割数据而造成的,即决策树的每个节点都根据一个特征的阈值将数据分成两组。
1、创建一颗决策树
在这组数据上构建的简单决策树不断将数据的一个特征或另一个特征按照某种判定条件进行分割。
每分割一次,都将新区域内点的多数投票结果标签分配到该区域上。
在一地刺分割之后,上半个分支里的所有数据点都没有变化,因此这个分支不需要继续分割。除非一个节点只包含一种颜色,那么每次分割都需要按照两种特征中的一种对每个区域进行分割。
2、决策树与过拟合
过拟合正是决策树的一般属性——决策树非常容易陷得很深,因此往往会拟合局部数据,而没有对整个数据分布的大局观,即模型训练的是数据的不同子集。
2、评估器集成算法:随机森林
通过组合多个过拟合评估器来降低过拟合程度的想法其实一种集成学习方法,称为装袋算法。
装袋算法使用并行评估器对数据进行有放回抽取集成,每个评估器都对数据过拟合,通过求均值可以获得更好的分类结果。
随机决策树的集成算法就是随机森林。
如果用随机方法(stochasticity)确定数据的分割方式,决策树拟合的随机性会更有效,这样做可以让所有数据在每次训练时都被拟合,但拟合的结果却仍然是随机的。
在Scikit-Learn里对随机决策树集成算法的优化是通过RandomForestClassifier评估器实现的,它会自动进行随机化决策,即只要选择一组评估器,它们就可以非常快速地完成(如果需要可以并行计算)每棵树的拟合任务。
3、随机森林回归
随机森林也可以用作回归(处理连续变量,而不是离散变量)。
随机森林回归的评估器是RandomForestRegressor。
真是模型是平滑曲线,而随机森林模型是锯齿线。
从图中可以看出,无参数的随机森林模型非常适合处理多周期数据,不需要我们配置多周期模型。
4、案例:用随机森林识别手写数字
5、随机森林总结
随机森林是一种强大的机器学习方法,它的优势在于:
(1)因为决策树的原理很简单,所以它的训练和预测速度都非常快。另外,多任务可以直接并行计算,因为每棵树都是完全独立的。
(2)多棵树可以进行概率分类:多个评估器之间的多数投票可以给出概率的估计值(使用Scikit-Learn的predict_proba()方法)
(3)无参数模型很灵活,在其他评估器都欠拟合的任务中表现突出。
随机森林的主要缺点在于其结果不太容易解释,即想要总结分类模型的意义,随机森林可能不是最佳选择。